3 USE_UDEV=${USE_UDEV:-yes}
7 # - make udev start before insmods
8 # - make proper use of USE_UDEV - don't copy rules if USE_UDEV is off no!
13 inst_d "/lib/udev/rules.d"
15 for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev-rules; do
16 if [ -f $d/$_rule ]; then
17 inst $d/$_rule /lib/udev/rules.d/$_rule
24 # setup geninitrd module
27 udevd=$(find_tool $initrd_dir/udevd /sbin/initrd-udevd)
28 udevadm=$(find_tool $initrd_dir/udevadm /sbin/initrd-udevadm)
30 if [ "$kernel_version" -lt "002006" ] || [ ! -x "$udevd" -o ! -x "$udevadm" -o ! -f /etc/udev/udev.conf ]; then
34 if is_yes "$USE_UDEV"; then
39 # generate initrd fragment
42 verbose "Setting up udev..."
44 inst_d /sbin /etc/udev /lib/udev
45 inst_exec $udevd /sbin/udevd
46 inst_exec $udevadm /sbin/udevadm
47 inst_exec /lib/udev/ata_id /lib/udev/ata_id
48 inst_exec /lib/udev/scsi_id /lib/udev/scsi_id
49 inst /etc/udev/udev.conf /etc/udev/udev.conf
51 inst_rules 50-udev-default.rules 60-persistent-storage.rules 61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \
52 60-pcmcia.rules 50-firmware.rules 10-dm.rules 11-dm-lvm.rules 13-dm-disk.rules 95-dm-notify.rules
53 # initrd dedicated rules
54 inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
57 for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
58 if [ -e "$initrd_dir/udev/$e" ]; then
59 inst_exec $initrd_dir/udev/$e /lib/udev/$e
65 inst /etc/nsswitch.conf /etc/nsswitch.conf
66 for _lib in $(get_libdir LIBDIR); do
67 if (ls /$_lib/libnss_files*.so* > /dev/null 2>&1); then
68 inst_exec /$_lib/libnss_files*.so* /$_lib/
71 awk -F: ' { if ($3 < 1000) { print $1":"$2":"$3":" } } ' /etc/group > $DESTDIR/etc/group
73 # blkid installed by mod-blkid
74 if ! is_yes "$USE_BLKID"; then
75 warn "BLKID support missing"
79 for dir in $initrd_dir /sbin; do
80 if [ -x "$dir/dmsetup" ] &&
81 [ "$($dir/dmsetup udevcookies 2>&1 | grep -c 'Command not supported')" -eq 0 ]; then
86 if [ -z "$dmsetup" ]; then
87 warn "Can't find dmsetup with udev support"
89 inst_exec $dmsetup /sbin/dmsetup
99 /sbin/udevadm trigger --type=subsystems --action=add
100 /sbin/udevadm trigger --type=devices --action=add
105 initrd_gen_stop_udevd() {
106 if ! is_yes "$USE_UDEV"; then
110 /sbin/udevadm control --exit
111 /sbin/udevadm info --cleanup-db
115 # generate initrd fragment
118 debug "Setting up mdev..."
120 busybox_applet mdev uevent
121 ln -s busybox $DESTDIR/bin/mdev
122 ln -s busybox $DESTDIR/bin/uevent
124 cat > $DESTDIR/etc/mdev.conf <<-'EOF'
125 # Provide user, group, and mode information for devices. If a regex matches
126 # the device name provided by sysfs, use the appropriate user:group and mode
127 # instead of the default 0:0 660.
131 # devicename_regex user:group mode
161 # \n needed in mdev.seq
168 initrd_gen_stop_mdev() {
170 killall uevent > /dev/null 2>&1