diff --git a/Makefile b/Makefile index bd57c96e..d46dc8aa 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,7 @@ clean: rm -f modules.d/99base/switch_root rm -f test-*.img rm -f test/initramfs.* + rm -f test/root.ext2 archive: dracut-$(VERSION)-$(GITVERSION).tar.bz2 diff --git a/modules.d/00test/create-root.sh b/modules.d/00test/create-root.sh index c756f4f5..29c6f95c 100755 --- a/modules.d/00test/create-root.sh +++ b/modules.d/00test/create-root.sh @@ -1,14 +1,15 @@ #!/bin/sh -sfdisk /dev/sda <keyfile -cryptsetup -q luksFormat /dev/sda1 /keyfile +cryptsetup -q luksFormat /dev/md0 /keyfile echo "The passphrase is test" -cryptsetup luksOpen /dev/sda1 dracut_crypt_test /dev/console 2>&1 +{ flock -s 9; + /sbin/cryptsetup luksOpen -T1 $1 $2 /dev/console 2>&1 } 9>/.console.lock diff --git a/modules.d/90crypt/install b/modules.d/90crypt/install index a1e7b019..fcaaa608 100755 --- a/modules.d/90crypt/install +++ b/modules.d/90crypt/install @@ -2,4 +2,4 @@ inst cryptsetup instmods dm_crypt cbc aes sha256 xts inst_rules "$moddir/63-luks.rules" -inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask +inst "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask diff --git a/modules.d/90mdraid/70-mdadm.rules b/modules.d/90mdraid/70-mdadm.rules index bd116338..ae54c96d 100644 --- a/modules.d/90mdraid/70-mdadm.rules +++ b/modules.d/90mdraid/70-mdadm.rules @@ -2,5 +2,11 @@ # automatically cause mdadm to be run. # See udev(8) for syntax -SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid*", \ - RUN+="/sbin/mdadm -I --auto=yes $root/%k" +SUBSYSTEM!="block", GOTO="raid_end" +ACTION!="add|change", GOTO="raid_end" +KERNEL=="md/*", GOTO="raid_end" + +KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode" +ENV{ID_FS_TYPE}=="linux_raid_member", RUN+="/sbin/mdadm -IR $root/%k" + +LABEL="raid_end" diff --git a/modules.d/90mdraid/install b/modules.d/90mdraid/install index 41982f9b..1885f7ca 100755 --- a/modules.d/90mdraid/install +++ b/modules.d/90mdraid/install @@ -1,8 +1,11 @@ #!/bin/bash dracut_install mdadm +inst /etc/passwd +inst /etc/group +instmods =drivers/md [ -x /sbin/mdmon ] && dracut_install mdmon inst_rules "$moddir/70-mdadm.rules" -[ -f /etc/mdadm/mdadm.conf ] && inst /etc/mdadm/mdadm.conf "$initdir" /etc/mdadm.conf -[ -f /etc/mdadm.conf ] && inst /etc/mdadm.conf "$initdir" +[ -f /etc/mdadm/mdadm.conf ] && inst /etc/mdadm/mdadm.conf /etc/mdadm.conf +[ -f /etc/mdadm.conf ] && inst /etc/mdadm.conf inst_hook pre-pivot 30 "$moddir/mdmon-pre-pivot.sh" diff --git a/test/make-test-root b/test/make-test-root index fdc14dff..93d9e0f1 100755 --- a/test/make-test-root +++ b/test/make-test-root @@ -25,7 +25,7 @@ unset initdir # results in cryptsetup not being able to unlock the LVM PV. # Probably a bug in cryptsetup, but... ./dracut -l -i "$targetfs" /source \ - -m "dash kernel-modules test crypt lvm udev-rules base rootfs-block" \ + -m "dash kernel-modules test crypt lvm mdraid udev-rules base rootfs-block" \ -d "ata_piix ext2 sd_mod" \ -f test/initramfs.makeroot