Create test image on an md array and improve cryptroot handling

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.
This commit is contained in:
Victor Lowther 2009-05-20 19:55:13 -07:00 committed by Harald Hoyer
parent 7f6643f9d9
commit 4957ab92f2
9 changed files with 27 additions and 19 deletions

View File

@ -23,6 +23,7 @@ clean:
rm -f modules.d/99base/switch_root rm -f modules.d/99base/switch_root
rm -f test-*.img rm -f test-*.img
rm -f test/initramfs.* rm -f test/initramfs.*
rm -f test/root.ext2
archive: dracut-$(VERSION)-$(GITVERSION).tar.bz2 archive: dracut-$(VERSION)-$(GITVERSION).tar.bz2

View File

@ -1,14 +1,15 @@
#!/bin/sh #!/bin/sh
sfdisk /dev/sda <<EOF sfdisk -C 640 -H 2 -S 32 -L /dev/sda <<EOF
,213
; ,213
; ,213
; ;
EOF EOF
mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda1 /dev/sda2 /dev/sda3
echo -n test >keyfile echo -n test >keyfile
cryptsetup -q luksFormat /dev/sda1 /keyfile cryptsetup -q luksFormat /dev/md0 /keyfile
echo "The passphrase is test" 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 pvcreate -ff -y /dev/mapper/dracut_crypt_test
lvm vgcreate dracut /dev/mapper/dracut_crypt_test lvm vgcreate dracut /dev/mapper/dracut_crypt_test
lvm lvcreate -l 100%FREE -n root dracut lvm lvcreate -l 100%FREE -n root dracut

View File

@ -3,7 +3,5 @@
inst_hook pre-udev 10 "$moddir"/plymouth-start.sh inst_hook pre-udev 10 "$moddir"/plymouth-start.sh
inst_hook pre-pivot 90 "$moddir"/plymouth-newroot.sh inst_hook pre-pivot 90 "$moddir"/plymouth-newroot.sh
inst_hook emergency 50 "$moddir"/plymouth-emergency.sh inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
inst_rules "$moddir/63-luks.rules" inst "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask
inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask
inst cryptsetup

View File

@ -8,6 +8,6 @@ SUBSYSTEM!="block", GOTO="luks_end"
ACTION!="add|change", GOTO="luks_end" ACTION!="add|change", GOTO="luks_end"
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode" 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" LABEL="luks_end"

View File

@ -1,8 +1,7 @@
#!/bin/sh #!/bin/sh
[ -b /dev/mapper/$2 ] && exit 0 [ -b /dev/mapper/$2 ] && exit 0
{ { flock -s 9;
flock -s 9 /sbin/cryptsetup luksOpen -T1 $1 $2 </dev/console >/dev/console 2>&1
/sbin/cryptsetup luksOpen -T1 $1 $2 </dev/console >/dev/console 2>&1
} 9>/.console.lock } 9>/.console.lock

View File

@ -2,4 +2,4 @@
inst cryptsetup inst cryptsetup
instmods dm_crypt cbc aes sha256 xts instmods dm_crypt cbc aes sha256 xts
inst_rules "$moddir/63-luks.rules" inst_rules "$moddir/63-luks.rules"
inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask inst "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask

View File

@ -2,5 +2,11 @@
# automatically cause mdadm to be run. # automatically cause mdadm to be run.
# See udev(8) for syntax # See udev(8) for syntax
SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid*", \ SUBSYSTEM!="block", GOTO="raid_end"
RUN+="/sbin/mdadm -I --auto=yes $root/%k" 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"

View File

@ -1,8 +1,11 @@
#!/bin/bash #!/bin/bash
dracut_install mdadm dracut_install mdadm
inst /etc/passwd
inst /etc/group
instmods =drivers/md
[ -x /sbin/mdmon ] && dracut_install mdmon [ -x /sbin/mdmon ] && dracut_install mdmon
inst_rules "$moddir/70-mdadm.rules" inst_rules "$moddir/70-mdadm.rules"
[ -f /etc/mdadm/mdadm.conf ] && inst /etc/mdadm/mdadm.conf "$initdir" /etc/mdadm.conf [ -f /etc/mdadm/mdadm.conf ] && inst /etc/mdadm/mdadm.conf /etc/mdadm.conf
[ -f /etc/mdadm.conf ] && inst /etc/mdadm.conf "$initdir" [ -f /etc/mdadm.conf ] && inst /etc/mdadm.conf
inst_hook pre-pivot 30 "$moddir/mdmon-pre-pivot.sh" inst_hook pre-pivot 30 "$moddir/mdmon-pre-pivot.sh"

View File

@ -25,7 +25,7 @@ unset initdir
# results in cryptsetup not being able to unlock the LVM PV. # results in cryptsetup not being able to unlock the LVM PV.
# Probably a bug in cryptsetup, but... # Probably a bug in cryptsetup, but...
./dracut -l -i "$targetfs" /source \ ./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" \ -d "ata_piix ext2 sd_mod" \
-f test/initramfs.makeroot -f test/initramfs.makeroot