]> git.pld-linux.org Git - projects/geninitrd.git/blame_incremental - mod-udev.sh
Install special udev rules
[projects/geninitrd.git] / mod-udev.sh
... / ...
CommitLineData
1#!/bin/sh
2UDEV_RCSID='$Revision$ $Date:: $'
3
4# geninitrd mod: udev
5USE_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
12inst_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
28setup_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
43initrd_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
75initrd_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}
This page took 0.072817 seconds and 4 git commands to generate.