]> git.pld-linux.org Git - projects/geninitrd.git/blobdiff - mod-udev.sh
no need to mess with magic values, let the "magic" be value
[projects/geninitrd.git] / mod-udev.sh
index 4201f6e337f56f46bea249dc4a09b617e9cb10d5..a5638500acf1d9d60f5493dfa45b176694ab0e90 100644 (file)
@@ -14,7 +14,7 @@ inst_rules() {
 
        inst_d "/lib/udev/rules.d"
        for _rule in "$@"; do
-               for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev/rules.d; do
+               for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev-rules; do
                        if [ -f $d/$_rule ]; then
                                inst $d/$_rule /lib/udev/rules.d/$_rule
                        fi
@@ -50,12 +50,32 @@ initrd_gen_udev() {
        # standard udev rules
        inst_rules 50-udev-default.rules 60-persistent-storage.rules 61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \
                60-pcmcia.rules 50-firmware.rules 10-dm.rules 11-dm-lvm.rules 13-dm-disk.rules
+       # initrd dedicated rules
+       inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
 
+       local e
        for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
                inst_exec $initrd_dir/udev/$e /lib/udev/$e
        done
-       inst_exec $initrd_dir/blkid /sbin/blkid
-       inst_exec $initrd_dir/dmsetup /sbin/dmsetup
+
+       # blkid installed by mod-blkid
+       if ! is_yes "$USE_BLKID"; then
+               warn "BLKID support missing"
+       fi
+
+       local dir dmsetup
+       for dir in $initrd_dir /sbin; do
+               if [ -x "$dir/dmsetup" ] &&
+                       [ "$($dir/dmsetup udevcookies 2>&1 | grep -c 'Command not supported')" -eq 0 ]; then
+                       dmsetup=$dir/dmsetup
+                       break
+               fi
+       done
+       if [ -z "$dmsetup" ]; then
+               warn "Can't find dmsetup with udev support"
+       else
+               inst_exec $dmsetup /sbin/dmsetup
+       fi
 
        mount_dev
        mount_sys
@@ -74,8 +94,8 @@ initrd_gen_stop_udevd() {
        if ! is_yes "$USE_UDEV"; then
                return
        fi
-       busybox_applet killall
        add_linuxrc     <<-'EOF'
-               killall udevd
+               /sbin/udevadm control --exit
+               /sbin/udevadm info --cleanup-db
        EOF
 }
This page took 0.053854 seconds and 4 git commands to generate.