crypt/crypt-run-generator.sh: do not add already existing luks

master
Harald Hoyer 2012-07-30 18:35:30 +02:00
parent 3d352f5228
commit 3f7e5358e5
9 changed files with 51 additions and 20 deletions

View File

@ -1,8 +1,15 @@
#!/bin/bash
#!/bin/sh

. /lib/dracut-lib.sh

dev=$1
luks=$2

while read l rest; do
strstr "${l##luks-}" "${luks##luks-}" && exit 0
done < /etc/crypttab


echo "$luks $dev" >> /etc/crypttab
/lib/systemd/system-generators/systemd-cryptsetup-generator
systemctl daemon-reload

View File

@ -34,5 +34,6 @@ lvm lvchange -a n /dev/dracut/root
udevadm settle
cryptsetup luksClose /dev/mapper/dracut_crypt_test
udevadm settle
echo "dracut-root-block-created" >/dev/sda1
eval $(udevadm info --query=env --name=/dev/md0|while read line; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo $line; done;)
{ echo "dracut-root-block-created"; echo "ID_FS_UUID=$ID_FS_UUID"; } >/dev/sda1
poweroff -f

View File

@ -4,14 +4,14 @@ TEST_DESCRIPTION="root filesystem on an encrypted LVM PV on a RAID-5"
KVERSION=${KVERSION-$(uname -r)}

# Uncomment this to debug failures
#DEBUGFAIL="rd.shell"
DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
test_run() {
DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
$testdir/run-qemu \
-hda $DISKIMAGE \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
-append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-append "root=/dev/dracut/root rw rd.retry=10 console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
}
@ -70,6 +70,7 @@ test_setup() {
-append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd $TESTDIR/initramfs.makeroot || return 1
grep -m 1 -q dracut-root-block-created $DISKIMAGE || return 1
eval $(grep -a -m 1 ID_FS_UUID $DISKIMAGE)

(
export initdir=$TESTDIR/overlay
@ -77,8 +78,12 @@ test_setup() {
dracut_install poweroff shutdown
inst_hook emergency 000 ./hard-off.sh
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
echo "luks-$ID_FS_UUID /dev/md0 /etc/key" > $initdir/etc/crypttab
echo -n "test" > $initdir/etc/key
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)

sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
-o "plymouth network" \
-a "debug" \

View File

@ -41,4 +41,5 @@ udevadm settle
mdadm -W /dev/md0 || :
mdadm --detail --export /dev/md0 |grep MD_UUID > /tmp/mduuid
. /tmp/mduuid
{ echo "dracut-root-block-created"; echo MD_UUID=$MD_UUID; } > /dev/sda1
eval $(udevadm info --query=env --name=/dev/md0|while read line; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo $line; done;)
{ echo "dracut-root-block-created"; echo MD_UUID=$MD_UUID; echo "ID_FS_UUID=$ID_FS_UUID";} > /dev/sda1

View File

@ -103,8 +103,11 @@ test_setup() {
-kernel "/boot/vmlinuz-$kernel" \
-append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd $TESTDIR/initramfs.makeroot || return 1

grep -m 1 -q dracut-root-block-created $TESTDIR/root.ext2 || return 1
eval $(grep --binary-files=text -m 1 MD_UUID $TESTDIR/root.ext2)
eval $(grep -a -m 1 ID_FS_UUID $TESTDIR/root.ext2)

(
export initdir=$TESTDIR/overlay
. $basedir/dracut-functions.sh
@ -114,7 +117,10 @@ test_setup() {
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
echo "ARRAY /dev/md0 level=raid5 num-devices=3 UUID=$MD_UUID" > $initdir/etc/mdadm.conf
echo "luks-$ID_FS_UUID /dev/md0 /etc/key" > $initdir/etc/crypttab
echo -n test > $initdir/etc/key
)

sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
-o "plymouth network" \
-a "debug" \

View File

@ -17,7 +17,7 @@ test_run() {
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
-append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $LUKSARGS $DEBUGFAIL" \
-append "root=/dev/dracut/root rw quiet rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $LUKSARGS $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
echo "CLIENT TEST END: [OK]"
@ -30,7 +30,7 @@ test_run() {
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
-append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-append "root=/dev/dracut/root rw quiet rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
echo "CLIENT TEST END: [OK]"
@ -43,7 +43,7 @@ test_run() {
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
-append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-append "root=/dev/dracut/root rw quiet rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img && return 1
echo "CLIENT TEST END: [OK]"
@ -114,6 +114,14 @@ test_setup() {
inst_hook emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
i=2
for uuid in $cryptoUUIDS; do
eval $uuid
printf 'luks-%s /dev/sda%s /etc/key\n' $ID_FS_UUID $i
((i+=1))
done > $initdir/etc/crypttab
echo -n test > $initdir/etc/key
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
-o "plymouth network" \

View File

@ -23,6 +23,3 @@ umount /sysroot && \
lvm lvchange -a n /dev/dracut/root && \
echo "dracut-root-block-created" >/dev/sdb
poweroff -f

#lvm lvchange -a n /dev/dracut/root && \
#cryptsetup luksClose /dev/mapper/dracut_crypt_test && \

View File

@ -18,11 +18,13 @@ mke2fs -j /dev/dracut/root && \
mkdir -p /sysroot && \
mount /dev/dracut/root /sysroot && \
cp -a -t /sysroot /source/* && \
umount /sysroot && \
sleep 1 && \
lvm lvchange -a n /dev/dracut/root && \
sleep 1 && \
cryptsetup luksClose /dev/mapper/dracut_crypt_test && \
sleep 1 && \
echo "dracut-root-block-created" >/dev/sda
umount /sysroot
sleep 1
lvm lvchange -a n /dev/dracut/root
udevadm settle
cryptsetup luksClose /dev/mapper/dracut_crypt_test
udevadm settle
sleep 1
eval $(udevadm info --query=env --name=/dev/sdb|while read line; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo $line; done;)
{ echo "dracut-root-block-created"; echo "ID_FS_UUID=$ID_FS_UUID"; } >/dev/sda
poweroff -f

View File

@ -52,7 +52,6 @@ client_test() {
echo "Unable to make client sda image" 1>&2
return 1
fi

$testdir/run-qemu \
-hda $TESTDIR/flag.img \
-m 256M -nographic \
@ -234,6 +233,7 @@ make_encrypted_root() {
-append "root=/dev/dracut/root rw quiet console=ttyS0,115200n81 selinux=0" \
-initrd $TESTDIR/initramfs.makeroot || return 1
grep -m 1 -q dracut-root-block-created $TESTDIR/flag.img || return 1
grep -a -m 1 ID_FS_UUID $TESTDIR/flag.img > $TESTDIR/luks.uuid
}

make_client_root() {
@ -328,7 +328,11 @@ test_setup() {
dracut_install poweroff shutdown
inst_hook emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
. $TESTDIR/luks.uuid
mkdir -p $initdir/etc
echo "luks-$ID_FS_UUID /dev/nbd0 /etc/key" > $initdir/etc/crypttab
echo -n test > $initdir/etc/key
)

sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \