N0: udev >= 168 is needed. N1: I guess the order is correct (first cleanup then exit). N2: device-mapper/LVM udev rules must be parsed for initramfs creation to add OPTIONS+="db_persist"
From udev NEWS: The running udev daemon can now cleanly shut down with: udevadm control --exit
Udev in initramfs should clean the state of the udev database with: udevadm info --cleanup-db which will remove all state left behind from events/rules in initramfs. If initramfs uses --cleanup-db and device-mapper/LVM, the rules in initramfs need to add OPTIONS+="db_persist" for all dm devices. This will prevent removal of the udev database for these devices. Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> --- init | 13 ++++--------- 1 files changed, 4 insertions(+), 9 deletions(-) diff --git a/init b/init index 7b81a1a..a2c6c8a 100644 --- a/init +++ b/init @@ -118,15 +118,10 @@ elif [ ! -x "/new_root${init}" ]; then launch_interactive_shell --exec fi -#Special handling if udev is running -udevpid=$(/bin/pidof udevd) -if [ -n "${udevpid}" ]; then - # Settle pending uevents, then kill udev - /sbin/udevadm settle - /bin/kill ${udevpid} > /dev/null 2>&1 - while /bin/pidof udevd >/dev/null; do - sleep 0.1 - done +# Stop udevd if is running +if [ "${udevd_running}" -eq 1 ]; then + /sbin/udevadm info --cleanup-db + /sbin/udevadm control --exit fi for d in proc sys dev run; do -- 1.7.5