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 test-*.img
rm -f test/initramfs.*
rm -f test/root.ext2
archive: dracut-$(VERSION)-$(GITVERSION).tar.bz2

View File

@ -1,14 +1,15 @@
#!/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

View File

@ -3,7 +3,5 @@
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

View File

@ -8,6 +8,6 @@ SUBSYSTEM!="block", GOTO="luks_end"
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"

View File

@ -1,8 +1,7 @@
#!/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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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