On 04/30/2011 05:47 PM, Gerardo Exequiel Pozzi wrote:
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. I just tested this setup: /dev/mapper/raiz (ext4) [/] (sda2 -> pv -> vg -> lv) /dev/sda1 (ext4) [/boot]
Without touching any udev rule and booting from it works OK. I don't know the case that db_persist is needed.
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
-- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1