]> git.pld-linux.org Git - projects/geninitrd.git/blob - mod-udev.sh
Install udev rules and helpers
[projects/geninitrd.git] / mod-udev.sh
1 #!/bin/sh
2 UDEV_RCSID='$Revision$ $Date::                            $'
3
4 # geninitrd mod: udev
5 USE_UDEV=${USE_UDEV:-yes}
6
7 #
8 # TODO:
9 # - make udev start before insmods
10 # - make proper use of USE_UDEV - don't copy rules if USE_UDEV is off no!
11
12 inst_rules() {
13         local _rule _found d
14
15         inst_d "/lib/udev/rules.d"
16         for _rule in "$@"; do
17                 for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev/rules.d; do
18                         if [ -f $d/$_rule ]; then
19                                 inst $d/$_rule /lib/udev/rules.d/$_rule
20                         fi
21                 done
22         done
23
24 }
25
26 # setup geninitrd module
27 # @access       public
28 setup_mod_udev() {
29         udevd=$(find_tool $initrd_dir/udevd /sbin/initrd-udevd)
30         udevadm=$(find_tool $initrd_dir/udevadm /sbin/initrd-udevadm)
31
32         if [ "$kernel_version" -lt "002006" ] || [ ! -x "$udevd" -o ! -x "$udevadm" -o ! -f /etc/udev/udev.conf ]; then
33                 USE_UDEV=no
34         fi
35
36         if is_yes "$USE_UDEV"; then
37                 . /etc/udev/udev.conf
38         fi
39 }
40
41 # generate initrd fragment
42 # @access       public
43 initrd_gen_udev() {
44         debug "Setting up udev..."
45
46         inst_d /sbin /etc/udev
47         inst_exec $udevd /sbin/udevd
48         inst_exec $udevadm /sbin/udevadm
49         inst /etc/udev/udev.conf /etc/udev/udev.conf
50         # standard udev rules
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
53
54         for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
55                 inst_exec $initrd_dir/udev/$e /lib/udev/$e
56         done
57         inst_exec $initrd_dir/blkid /sbin/blkid
58         inst_exec $initrd_dir/dmsetup /sbin/dmsetup
59
60         mount_dev
61         mount_sys
62         add_linuxrc <<-'EOF'
63                 : 'Starting udev'
64                 /sbin/udevd --daemon
65                 /sbin/udevadm trigger
66                 /sbin/udevadm settle
67         EOF
68 }
69
70 initrd_gen_stop_udevd() {
71         if ! is_yes "$USE_UDEV"; then
72                 return
73         fi
74         busybox_applet killall
75         add_linuxrc     <<-'EOF'
76                 killall udevd
77         EOF
78 }
This page took 0.062774 seconds and 3 git commands to generate.