If we purport to test booting to an md raid, we may as well test it.
We do not need the plymouth module and the normal crypt module to include
duplicate functionality.
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
#!/bin/sh
-sfdisk /dev/sda <<EOF
-
-;
-;
+sfdisk -C 640 -H 2 -S 32 -L /dev/sda <<EOF
+,213
+,213
+,213
;
EOF
+mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda1 /dev/sda2 /dev/sda3
echo -n test >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 </keyfile
+cryptsetup luksOpen /dev/md0 dracut_crypt_test </keyfile
lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
lvm vgcreate dracut /dev/mapper/dracut_crypt_test
lvm lvcreate -l 100%FREE -n root dracut
inst_hook pre-udev 10 "$moddir"/plymouth-start.sh
inst_hook pre-pivot 90 "$moddir"/plymouth-newroot.sh
inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
-inst_rules "$moddir/63-luks.rules"
-inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask
-inst cryptsetup
+inst "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask
ACTION!="add|change", GOTO="luks_end"
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"
-ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"
+ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/sbin/cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"
LABEL="luks_end"
#!/bin/sh
[ -b /dev/mapper/$2 ] && exit 0
-{
- flock -s 9
- /sbin/cryptsetup luksOpen -T1 $1 $2 </dev/console >/dev/console 2>&1
+{ flock -s 9;
+ /sbin/cryptsetup luksOpen -T1 $1 $2 </dev/console >/dev/console 2>&1
} 9>/.console.lock
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
# 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"
#!/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"
# 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