X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=mod-udev.sh;h=87f4b6891c685df91cd051cfa4d1931f24a5704b;hb=ad5033d7e704edaf52f2be18d4aa98c378179ede;hp=59dd3244d2672a8ec39fbd66da8bc6cf8d0e123a;hpb=02ba8ab737c2aa4ee5df1802932e76fa247e10b5;p=projects%2Fgeninitrd.git diff --git a/mod-udev.sh b/mod-udev.sh index 59dd324..87f4b68 100644 --- a/mod-udev.sh +++ b/mod-udev.sh @@ -1,6 +1,4 @@ #!/bin/sh -UDEV_RCSID='$Revision$ $Date:: $' - # geninitrd mod: udev USE_UDEV=${USE_UDEV:-yes} @@ -43,13 +41,13 @@ setup_mod_udev() { initrd_gen_udev() { verbose "Setting up udev..." - inst_d /sbin /etc/udev + inst_d /sbin /etc/udev /lib/udev inst_exec $udevd /sbin/udevd inst_exec $udevadm /sbin/udevadm inst /etc/udev/udev.conf /etc/udev/udev.conf # 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 + 60-pcmcia.rules 50-firmware.rules 10-dm.rules 11-dm-lvm.rules 13-dm-disk.rules 95-dm-notify.rules # initrd dedicated rules inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules @@ -57,8 +55,20 @@ initrd_gen_udev() { for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do if [ -e "$initrd_dir/udev/$e" ]; then inst_exec $initrd_dir/udev/$e /lib/udev/$e + elif [ -e "/lib/udev/$e" ]; then + inst_exec /lib/udev/$e /lib/udev/$e + fi + done + + # basic group file + local _lib + inst /etc/nsswitch.conf /etc/nsswitch.conf + for _lib in $(get_libdir LIBDIR); do + if (ls /$_lib/libnss_files*.so* > /dev/null 2>&1); then + inst_exec /$_lib/libnss_files*.so* /$_lib/ fi done + awk -F: ' { if ($3 < 1000) { print $1":"$2":"$3":" } } ' /etc/group > $DESTDIR/etc/group # blkid installed by mod-blkid if ! is_yes "$USE_BLKID"; then @@ -101,3 +111,62 @@ initrd_gen_stop_udevd() { /sbin/udevadm info --cleanup-db EOF } + +# generate initrd fragment +# @access public +initrd_gen_mdev() { + debug "Setting up mdev..." + + busybox_applet mdev uevent + ln -s busybox $DESTDIR/bin/mdev + ln -s busybox $DESTDIR/bin/uevent + + cat > $DESTDIR/etc/mdev.conf <<-'EOF' +# Provide user, group, and mode information for devices. If a regex matches +# the device name provided by sysfs, use the appropriate user:group and mode +# instead of the default 0:0 660. +# +# Syntax: +# %s %d:%d %s +# devicename_regex user:group mode + +null 0:0 666 +zero 0:0 666 +random 0:0 666 +urandom 0:0 666 + +kmsg 0:0 644 +kmem 0:9 000 +mem 0:9 640 +port 0:9 640 + +snapshot 0:0 600 + +console 0:5 600 +ptmx 0:5 666 +tty[0-9]* 0:5 600 + +ttyS[0-9]* 0:16 660 + +fd[0-9]* 0:19 660 + +sd[a-z]* 0:6 660 +hd[a-z]* 0:6 660 + EOF + + mount_dev + mount_sys + mount_run + add_linuxrc <<-'EOF' + # \n needed in mdev.seq + echo > /dev/mdev.seq + uevent mdev & + mdev -s + EOF +} + +initrd_gen_stop_mdev() { + add_linuxrc <<-'EOF' + killall uevent > /dev/null 2>&1 + EOF +}