]> git.pld-linux.org Git - projects/geninitrd.git/commitdiff
Install special udev rules
authorArtur Frysiak <artur@frysiak.net>
Sat, 3 Dec 2011 19:52:49 +0000 (19:52 +0000)
committerArtur Frysiak <artur@frysiak.net>
Sat, 3 Dec 2011 19:52:49 +0000 (19:52 +0000)
Rules copied from dracut

svn-id: @12431

Makefile
mod-udev.sh
udev-rules/01-ignore.rules [new file with mode: 0644]
udev-rules/11-dm.rules [new file with mode: 0644]
udev-rules/59-persistent-storage.rules [new file with mode: 0644]
udev-rules/61-persistent-storage.rules [new file with mode: 0644]

index fe8abcd072b7699a49f1bcd14a1dc1520305459d..dfaae6da725574ca1b56b42a9b54f3f7074a984f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,23 +3,28 @@ VERSION               := 12385
 MODS           := ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs sata scsi usbkbd
 FILES_MODS  := $(MODS:%=mod-%.sh)
 FILES_ADDON := extract-ikconfig
+FILES_UDEV  := 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
 FILES          := Makefile geninitrd.sysconfig geninitrd functions $(FILES_MODS) $(FILES_ADDON) geninitrd.8 geninitrd.8.xml ChangeLog
 prefix         := /usr
 mandir         := $(prefix)/share/man
 sbindir                := /sbin
 libdir         := /lib/geninitrd
+udevdir                := $(libdir)/udev-rules
 sysconfigdir := /etc/sysconfig
 
 all: geninitrd.8
 
 install: geninitrd.8
-       install -d $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(libdir) $(DESTDIR)$(sysconfigdir)
+       install -d $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(libdir) $(DESTDIR)$(sysconfigdir) $(DESTDIR)$(udevdir)
        install -p geninitrd $(DESTDIR)$(sbindir)/geninitrd
        install -p -m644 geninitrd.8 $(DESTDIR)$(mandir)/man8/geninitrd.8
        install -p -m644 functions $(DESTDIR)$(libdir)/functions
        install -p -m644 $(FILES_MODS) $(DESTDIR)$(libdir)
        install -p -m755 $(FILES_ADDON) $(DESTDIR)$(libdir)
        install -p -m644 geninitrd.sysconfig $(DESTDIR)$(sysconfigdir)/geninitrd
+       for file in ${FILES_UDEV}; do \
+               install -p -m644 udev-rules/$${file} $(DESTDIR)$(udevdir); \
+       done
 
 rerentry2man := /usr/bin/refentry2man
 geninitrd.8: geninitrd.8.xml $(refentry2man)
index 279576985403f2ee316a18ab5042c48af81d3bde..63fa61c242a2177a8fdb9839f9d6c538979274ff 100644 (file)
@@ -14,7 +14,7 @@ inst_rules() {
 
        inst_d "/lib/udev/rules.d"
        for _rule in "$@"; do
-               for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev/rules.d; do
+               for d in /lib/udev/rules.d /etc/udev/rules.d /lib/geninitrd/udev-rules; do
                        if [ -f $d/$_rule ]; then
                                inst $d/$_rule /lib/udev/rules.d/$_rule
                        fi
@@ -50,6 +50,8 @@ initrd_gen_udev() {
        # 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
+       # initrd dedicated rules
+       inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
 
        for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
                inst_exec $initrd_dir/udev/$e /lib/udev/$e
diff --git a/udev-rules/01-ignore.rules b/udev-rules/01-ignore.rules
new file mode 100644 (file)
index 0000000..b32f22e
--- /dev/null
@@ -0,0 +1 @@
+KERNEL=="ram[0-9]*", OPTIONS+="ignore_device", OPTIONS+="last_rule"
diff --git a/udev-rules/11-dm.rules b/udev-rules/11-dm.rules
new file mode 100644 (file)
index 0000000..89941c4
--- /dev/null
@@ -0,0 +1,5 @@
+SUBSYSTEM!="block", GOTO="dm_end"
+KERNEL!="dm-[0-9]*", GOTO="dm_end"
+ACTION!="add|change", GOTO="dm_end"
+OPTIONS+="db_persist"
+LABEL="dm_end"
diff --git a/udev-rules/59-persistent-storage.rules b/udev-rules/59-persistent-storage.rules
new file mode 100644 (file)
index 0000000..2b83e72
--- /dev/null
@@ -0,0 +1,38 @@
+SUBSYSTEM!="block", GOTO="ps_end"
+ACTION!="add|change", GOTO="ps_end"
+
+KERNEL=="cciss[0-9]*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+KERNEL=="nbd[0-9]*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+
+
+KERNEL!="md[0-9]*|md_d[0-9]*|md/*", KERNEL!="md*", GOTO="md_end"
+
+# partitions have no md/{array_state,metadata_version}
+ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
+
+# container devices have a metadata version of e.g. 'external:ddf' and
+# never leave state 'inactive'
+ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
+TEST!="md/array_state", GOTO="md_end"
+ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
+
+LABEL="md_ignore_state"
+
+IMPORT{program}="/sbin/mdadm --detail --export $tempnode"
+IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+OPTIONS+="link_priority=100"
+OPTIONS+="watch"
+LABEL="md_end"
+
+
+KERNEL!="dm-[0-9]*", GOTO="ps_end"
+ACTION=="add", GOTO="ps_end"
+IMPORT{program}="/sbin/dmsetup info -c --nameprefixes --unquoted --rows --noheadings -o name,uuid,suspended,readonly,major,minor,open,tables_loaded,names_using_dev -j%M -m%m"
+ENV{DM_NAME}!="?*", GOTO="ps_end"
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="ps_end"
+ENV{DM_UUID}=="CRYPT-TEMP-?*", GOTO="ps_end"
+ENV{DM_UUID}!="?*", ENV{DM_NAME}=="temporary-cryptsetup-?*", GOTO="ps_end"
+IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+
+
+LABEL="ps_end"
diff --git a/udev-rules/61-persistent-storage.rules b/udev-rules/61-persistent-storage.rules
new file mode 100644 (file)
index 0000000..9cfdb0b
--- /dev/null
@@ -0,0 +1,20 @@
+SUBSYSTEM!="block", GOTO="pss_end"
+ACTION!="add|change", GOTO="pss_end"
+
+ACTION=="change", KERNEL=="dm-[0-9]*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="1", GOTO="do_pss"
+KERNEL=="cciss[0-9]*", GOTO="do_pss"
+KERNEL=="nbd[0-9]*", GOTO="do_pss"
+KERNEL=="md[0-9]*|md_d[0-9]*|md/*", GOTO="do_pss"
+
+GOTO="pss_end"
+
+LABEL="do_pss"
+# by-path (parent device path)
+ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="", DEVPATH!="*/virtual/*", IMPORT{program}="path_id %p"
+ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
+ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
+
+# by-label/by-uuid links (filesystem metadata)
+ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+LABEL="pss_end"
This page took 0.295111 seconds and 4 git commands to generate.