[systemd-devel] Hints for upgrading systemd on a running system
Lennart Poettering
lennart at poettering.net
Tue Feb 20 22:12:37 UTC 2018
On Di, 20.02.18 20:00, Paul Menzel (pmenzel+systemd-devel at molgen.mpg.de) wrote:
> Dear systemd folks,
>
>
> 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.
> 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.
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...
> 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.
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list