[Pkg-systemd-maintainers] Bug#726027: Required-Start: $remote_fs for rcS type services (early boot) can lead to dependency loops
Michael Biebl
biebl at debian.org
Fri Oct 11 11:48:07 BST 2013
Package: systemd
Version: 204-5
Severity: normal
<mbiebl> so, I have an interesting issue here:
<mbiebl> NetworkManager.service has
<mbiebl> Wants=network.target
<mbiebl> Before=network.target
<mbiebl> and is started via multi-user.target
<mbiebl> remote-fs.target has a depenency on network.target
<mbiebl> and we do have rcS services which have Required-Start: $remote_fs
<mbiebl> and as NetworkManager.service has a dependency on basic.target via DefaultDependencies=yes
<mbiebl> this leads to a loop
<mbiebl> any ideas how we can address this?
<mbiebl> (so far I have removed Wants/Before=network.target from NetworkManager.service, but that is not a solution)
<Mithrandir> any reason NM can't be pulled earlier?
<Mithrandir> it sounds like that might want to move to rcS?
<Mithrandir> (well sysinit)
<mbiebl> given that e.g. dbus (and other stuff like syslog) is started in rc2
<mbiebl> this wouldn't work (at least under sysvinit)
<Mithrandir> which bits in rcS need remote_fs?
<mbiebl> dbus.service is also hooked up via multi-user.target.wants
<Mithrandir> and do they actually need remote_fs or is that just the crazy "they need NFS" thing?
<mbiebl> we do setup the socket earlier
<mbiebl> but dbus system bus won't be functional until basic/sysinit target is done
<mbiebl> $ grep remote_fs *
<mbiebl> K19kbd:# Required-Start: $remote_fs
<mbiebl> S19console-setup:# Required-Start: $remote_fs
<mbiebl> S20alsa-utils:# Required-Start: $local_fs $remote_fs
<mbiebl> S20alsa-utils:# Required-Stop: $remote_fs
<mbiebl> S20bootmisc.sh:# Required-Start: $remote_fs
<mbiebl> S20plymouth-log:# Required-Start:␉$local_fs $remote_fs
<mbiebl> S20plymouth-log:# Required-Stop:␉$local_fs $remote_fs
<mbiebl> S20x11-common:# Required-Start: $remote_fs
<mbiebl> S20x11-common:# Required-Stop: $remote_fs
<Mithrandir> I think we should get policy clarified that /, /usr and maybe /var are not remote fs-es.
<mbiebl> that is a huge mess indeed
<mbiebl> lumping $remote_fs and /usr together
<mbiebl> (never liked that)
<Mithrandir> It's arguable that /var can be a remote fs
<mbiebl> I was wondering if we should patch systemd to drop any refs to remote-fs.target
<mbiebl> for rcS type services
<mbiebl> ideally all those early boot services would ship native systemd support
<mbiebl> but with about 150 of them we need some solution
<mbiebl> during the transition period, I think
<mbiebl> imho, most of them don't belong in rcS
<mbiebl> but that's another matter
<Mithrandir> nod
<Mithrandir> I think https://wiki.debian.org/LSBInitScripts is wrong about $remote_fs
<Mithrandir> so I suggest we get the text changed to something like:
<Mithrandir> all filesystems are mounted. Scripts depending on $remote_fs should not need to depend on $local_fs. During shutdown, scripts that need to run before sendsigs kills all processes should depend on $remote_fs.
<mbiebl> Unfortunately I think that ship has sailed
<mbiebl> I think 99% of the LSB headers have $remote_fs
<mbiebl> because their binaries are in /usr
<mbiebl> do you really expect to update all of them to use $local_fs instead?
<Mithrandir> I'd be fine with just whatever ships stuff in rcS
<Mithrandir> for the rest, it won't be a problem, will it?
<mbiebl> it shouldn't, no
<mbiebl> so adding a hack to systemd to s/remote-fs.target/local-fs.target/ for early boot services
<Mithrandir> given we require /usr to be available immediately post-initramfs, and sysvinit does approximately the same.
<mbiebl> do you think this is a crazy idea?
<Mithrandir> mbiebl: I'd be ok with it.
<Mithrandir> I'm just a bit careful about munging deps like that and causing deliberate differences wrt sysvinit
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.10-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages systemd depends on:
ii initscripts 2.88dsf-43
ii libacl1 2.2.52-1
ii libaudit1 1:2.3.2-2
ii libblkid1 2.20.1-5.5
ii libc6 2.17-93
ii libcap2 1:2.22-1.2
ii libcryptsetup4 2:1.6.1-1
ii libdbus-1-3 1.6.16-1
ii libgcrypt11 1.5.3-2
ii libkmod2 15-0.1
ii liblzma5 5.1.1alpha+20120614-2
ii libpam0g 1.1.3-9
ii libselinux1 2.1.13-3
ii libsystemd-daemon0 204-5
ii libsystemd-journal0 204-5
ii libudev1 204-5
ii libwrap0 7.6.q-24
ii udev 204-5
ii util-linux 2.20.1-5.5
Versions of packages systemd recommends:
ii libpam-systemd 204-5
Versions of packages systemd suggests:
ii systemd-ui 2-2
-- no debconf information
More information about the Pkg-systemd-maintainers
mailing list