Bug#908796: udev (with sysvinit) fails to find devices at boot

Michael Biebl biebl at debian.org
Thu Oct 4 20:58:38 BST 2018


Am 03.10.18 um 13:20 schrieb Trek:
> 
> thanks to Bill Brelsford, the last test confirmed we are in the worst
> situation: udev is running, the control file is created, but udev is
> not ready to listen new events
> 
> so we must to rethink about the 791944 bug: it was caused because udev
> no longer removes the control file on stop
> 
> we have at least three options to workaround it:
> 
> 1) revert the 791944 patch, create a new init.d/udev-clear script to
> remove the control file and run it just after sendsigs (this will
> restore the old well tested behavior) 

The removal of the control file should be bound to the live time of the
udev service, so splitting it off into a separate init script is not a
good idea.

> 2) revert the 791944 patch, remove the control file on stop in
> init.d/udev, stop it after sendsigs and remove udev from the Should-Stop
> header in any script, probably cryptdisks, mdadm and lvm2 (this could
> break any script that depends on udev and not distributed by debian)

If you revert 791944, i.e. don't add the pid file to
/run/sendsigs.omit.d, the systemd-udevd process will be killed by the
sendsigs init script. Which means there is a time window where
/run/udev/control exists but no functional udev service. In other words,
not a proper solution either.

> 3) do not revert, but start with udevd --background and create the
> pidfile using pidof udevd (this could break if there are more than one
> process of udevd)

As you already mentioned, an approach using pidof is not going to work.
For one thing, containers are a thing nowadays (and some containers run
udev), and second, udevd will spawn off worker processes. Using pidof
you don't know which process you will actually get.

> what do you think about?

None of the above proposals does really solve the problem, unfortunately.

Afaics this problem is unfortunately not really fixable with the limited
facilities sysvinit/sysv-rc provides.
I'm of course happy if someone proves me wrong.

Regarding the changes that were made for #791944, I'm ok with reverting
them, if you want me to. Which means we will simply break the boot for
another set of (sysvinit) users.

A proper solution might (emphasis on might, as I haven't checked this)
be to teach start-stop-daemon about daemons using the sd-notify
interface. This is a more elaborate fix, for sure, but everything else
feels like an incomplete hack.

Michael



-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20181004/0302d3b0/attachment-0002.sig>


More information about the Pkg-systemd-maintainers mailing list