]>
Commit | Line | Data |
---|---|---|
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; 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 | # initrd dedicated rules | |
54 | inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules | |
55 | ||
56 | for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do | |
57 | inst_exec $initrd_dir/udev/$e /lib/udev/$e | |
58 | done | |
59 | inst_exec $initrd_dir/blkid /sbin/blkid | |
60 | inst_exec $initrd_dir/dmsetup /sbin/dmsetup | |
61 | ||
62 | mount_dev | |
63 | mount_sys | |
64 | mount_run | |
65 | add_linuxrc <<-'EOF' | |
66 | : 'Starting udev' | |
67 | mkdir /run/udev | |
68 | /sbin/udevd --daemon | |
69 | /sbin/udevadm trigger --type=subsystems --action=add | |
70 | /sbin/udevadm trigger --type=devices --action=add | |
71 | /sbin/udevadm settle | |
72 | EOF | |
73 | } | |
74 | ||
75 | initrd_gen_stop_udevd() { | |
76 | if ! is_yes "$USE_UDEV"; then | |
77 | return | |
78 | fi | |
79 | add_linuxrc <<-'EOF' | |
80 | /sbin/udevadm control --exit | |
81 | /sbin/udevadm info --cleanup-db | |
82 | EOF | |
83 | } |