[systemd-devel] Hints for upgrading systemd on a running system

Paul Menzel pmenzel+systemd-devel at molgen.mpg.de
Wed Feb 21 07:10:50 UTC 2018


Dear Lennart and others,


Thank you for your prompt replies.


Am 20.02.2018 um 23:12 schrieb Lennart Poettering:
> On Di, 20.02.18 20:00, Paul Menzel (pmenzel+systemd-devel at molgen.mpg.de) wrote:

>> We finally are going to upgrade from a very old systemd version 27 from 2011
>> to the current systemd v237. (Historical reasons.)
>>
>> Anyway, I already was told about `systemctl daemon-reexec`, and we got it
>> working.
> 
> While we try to ensure that live upgrades of PID 1 like that work
> quite well, this is generally tested only for small steps. Jumping 6
> years ahead in one go is not something people typically test.

Indeed, but it seems to work. During the upgrade you have to make sure, 
that both versions are installed in parallel when doing `systemctl 
daemon-reexec`, so the old systemd still finds it dependencies/libraries 
and can terminate properly. Then the old version can be removed.

>> After that, looking at the output of `systemctl`, there are many units from
>> the old version, which were removed in the meantime.
>>
>> ```
>> $ systemctl --state=not-found
>>    UNIT                                 LOAD      ACTIVE   SUB DESCRIPTION
>> ● dev-hugepages.automount              not-found active   waiting
>> dev-hugepages.automount
>> ● dev-mqueue.automount                 not-found active   waiting
>> dev-mqueue.automount
>> ● sys-kernel-debug.automount           not-found active   waiting
>> sys-kernel-debug.automount
>> ● sys-kernel-security.automount        not-found active   waiting
>> sys-kernel-security.automount
>> ● auditd.service                       not-found inactive dead
>> auditd.service
>> ● console-kit-log-system-start.service not-found active   exited
>> console-kit-log-system-start.service
>> ● display-manager.service              not-found inactive dead
>> display-manager.service
>> ● hwclock-load.service                 not-found active   exited
>> hwclock-load.service
>> ● plymouth-quit-wait.service           not-found inactive dead
>> plymouth-quit-wait.service
>> ● plymouth-start.service               not-found inactive dead
>> plymouth-start.service
>> ● remount-rootfs.service               not-found active   exited
>> remount-rootfs.service
>> ● syslog.service                       not-found inactive dead
>> syslog.service
>> ● systemd-kmsg-syslogd.service         not-found active   running
>> systemd-kmsg-syslogd.service
>> ● systemd-remount-api-vfs.service      not-found active   exited
>> systemd-remount-api-vfs.service
>> ● systemd-sysusers.service             not-found inactive dead
>> systemd-sysusers.service
>> ● udev-retry.service                   not-found active   exited
>> udev-retry.service
>> ● udev-settle.service                  not-found active   exited
>> udev-settle.service
>> ● systemd-logger.socket                not-found active   listening
>> systemd-logger.socket
>> ● systemd-shutdownd.socket             not-found active   listening
>> systemd-shutdownd.socket
>> ● cryptsetup.target                    not-found active   active
>> cryptsetup.target
>> ● syslog.target                        not-found active   active
>> syslog.target
> 
> My recommendation: simply reboot. That should clean up everything
> properly.
> 
> Note that PID 1 itself is probably pretty Ok with such a massive
> update in one step, but the unit files have been rearranged quite a
> bit since then. Downstream distributions generally expect you to
> reboot even between single-step distro updates, but this becomes much
> more of a necessity if you jump even further.

But if reboot wouldn’t be an option, is there a way to get rid of 
not-found services?

> Note that systemd upstream currently requires kernel 3.13 at least
> which was released in 2014. Hence, if you update from a 2011 system
> you have to reboot anyway, already to update the kernel...

We already run later Linux Kernels, so that is not a problem. But thank 
you for mentioning it.

>> Do I need to stop those manually beforehand, or is there another way to
>> clean up?
>>
>> Is the recommended update procedure documented somewhere?
> 
> Usually distributions document that invididually as systemd is just
> one component of many that make up the distribution.

Understood.


Kind regards,

Paul


More information about the systemd-devel mailing list