]> git.pld-linux.org Git - projects/geninitrd.git/blame - mod-udev.sh
add some todo items
[projects/geninitrd.git] / mod-udev.sh
CommitLineData
72056d12 1#!/bin/sh
c34c6a69 2UDEV_RCSID='$Revision$ $Date:: $'
05c474b5 3
72056d12 4# geninitrd mod: udev
6e49b0b1 5USE_UDEV=${USE_UDEV:-yes}
72056d12
ER
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
0127fd8c
AF
12inst_rules() {
13 local _rule _found d
14
15 inst_d "/lib/udev/rules.d"
16 for _rule in "$@"; do
1b72cda6 17 for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev-rules; do
0127fd8c
AF
18 if [ -f $d/$_rule ]; then
19 inst $d/$_rule /lib/udev/rules.d/$_rule
20 fi
21 done
22 done
23
24}
25
c124d0cf
ER
26# setup geninitrd module
27# @access public
28setup_mod_udev() {
29 udevd=$(find_tool $initrd_dir/udevd /sbin/initrd-udevd)
fad1ded6 30 udevadm=$(find_tool $initrd_dir/udevadm /sbin/initrd-udevadm)
72056d12 31
6e49b0b1 32 if [ "$kernel_version" -lt "002006" ] || [ ! -x "$udevd" -o ! -x "$udevadm" -o ! -f /etc/udev/udev.conf ]; then
c124d0cf
ER
33 USE_UDEV=no
34 fi
6e49b0b1
ER
35
36 if is_yes "$USE_UDEV"; then
37 . /etc/udev/udev.conf
38 fi
c124d0cf 39}
72056d12
ER
40
41# generate initrd fragment
42# @access public
43initrd_gen_udev() {
02ba8ab7 44 verbose "Setting up udev..."
72056d12
ER
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
0127fd8c
AF
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
1b72cda6
AF
53 # initrd dedicated rules
54 inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
0127fd8c 55
4c84a24b 56 local e
0127fd8c 57 for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
338975c8
AM
58 if [ -e "$initrd_dir/udev/$e" ]; then
59 inst_exec $initrd_dir/udev/$e /lib/udev/$e
60 fi
0127fd8c 61 done
5de12904
ER
62
63 # blkid installed by mod-blkid
64 if ! is_yes "$USE_BLKID"; then
65 warn "BLKID support missing"
66 fi
4c84a24b
AF
67
68 local dir dmsetup
69 for dir in $initrd_dir /sbin; do
78b5874a
ER
70 if [ -x "$dir/dmsetup" ] &&
71 [ "$($dir/dmsetup udevcookies 2>&1 | grep -c 'Command not supported')" -eq 0 ]; then
4c84a24b
AF
72 dmsetup=$dir/dmsetup
73 break
74 fi
75 done
76 if [ -z "$dmsetup" ]; then
77 warn "Can't find dmsetup with udev support"
78 else
79 inst_exec $dmsetup /sbin/dmsetup
80 fi
72056d12
ER
81
82 mount_dev
83 mount_sys
5e41e841 84 mount_run
72056d12
ER
85 add_linuxrc <<-'EOF'
86 : 'Starting udev'
5e41e841 87 mkdir /run/udev
72056d12 88 /sbin/udevd --daemon
e8d76169
AF
89 /sbin/udevadm trigger --type=subsystems --action=add
90 /sbin/udevadm trigger --type=devices --action=add
72056d12
ER
91 /sbin/udevadm settle
92 EOF
93}
94
95initrd_gen_stop_udevd() {
1b481849
ER
96 if ! is_yes "$USE_UDEV"; then
97 return
98 fi
72056d12 99 add_linuxrc <<-'EOF'
9aef38eb
AF
100 /sbin/udevadm control --exit
101 /sbin/udevadm info --cleanup-db
72056d12
ER
102 EOF
103}
382ce856
AM
104
105# generate initrd fragment
106# @access public
107initrd_gen_mdev() {
108 debug "Setting up mdev..."
109
b7cb767b 110 busybox_applet mdev
382ce856
AM
111 ln -s busybox $DESTDIR/bin/mdev
112
113 mount_dev
114 mount_sys
115 mount_run
116 add_linuxrc <<-'EOF'
117 echo /bin/mdev > /proc/sys/kernel/hotplug
118 mdev -s
119 EOF
120}
121
122initrd_gen_stop_mdev() {
123 add_linuxrc <<-'EOF'
124 killall mdev > /dev/null 2>&1
125 EOF
126}
This page took 0.070892 seconds and 4 git commands to generate.