+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
-set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
-
udevadm settle
-mkfs.ext3 -L ' rdinit=/bin/sh' /dev/sda2
+
+set -ex
+
+mkfs.ext3 -L ' rdinit=/bin/sh' /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda2 /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
-sync
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
# DEBUGFAIL="rd.shell rd.break"
test_run() {
- dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/result \
+ "${disk_args[@]}" \
-watchdog i6300esb -watchdog-action poweroff \
-append "panic=1 systemd.crash_reboot \"root=LABEL= rdinit=/bin/sh\" rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result || return 1
+
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
}
test_setup() {
- rm -f -- "$TESTDIR"/root.ext3
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=1M count=80
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+ dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
+
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext3 || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ rm -- "$TESTDIR"/marker.img
(
# shellcheck disable=SC2031
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-a "debug watchdog" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
udevadm settle
-mkfs.ext3 -L dracut /dev/sda2
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda2 /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
# Uncomment this to debug failures
#DEBUGFAIL="rd.shell=1 rd.break=pre-mount"
test_run() {
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext3 || return 1
+ -initrd "$TESTDIR"/initramfs.testing || return 1
+
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
}
test_setup() {
- rm -f -- "$TESTDIR"/root.ext3
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=1M count=80
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple sfdisk mkfs.ext3 poweroff cp umount dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+ dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
+
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext3 || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ rm -- "$TESTDIR"/marker.img
(
# shellcheck disable=SC2031
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook pre-pivot 000 ./systemd-analyze.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-a "debug systemd" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
-set -x
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
-udevadm settle
set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
-
-sfdisk /dev/sdb << EOF
-,1M
-,
-EOF
udevadm settle
modprobe btrfs
-mkfs.btrfs -L dracut /dev/sda2
-mkfs.btrfs -L dracutusr /dev/sdb2
-btrfs device scan /dev/sda2
-btrfs device scan /dev/sdb2
+mkfs.btrfs -L dracut /dev/disk/by-id/ata-disk_root
+mkfs.btrfs -L dracutusr /dev/disk/by-id/ata-disk_usr
+btrfs device scan /dev/disk/by-id/ata-disk_root
+btrfs device scan /dev/disk/by-id/ata-disk_usr
mkdir -p /root
-mount -t btrfs /dev/sda2 /root
+mount -t btrfs /dev/disk/by-id/ata-disk_root /root
[ -d /root/usr ] || mkdir -p /root/usr
-mount -t btrfs /dev/sdb2 /root/usr
+mount -t btrfs /dev/disk/by-id/ata-disk_usr /root/usr
btrfs subvolume create /root/usr/usr
umount /root/usr
-mount -t btrfs -o subvol=usr /dev/sdb2 /root/usr
+mount -t btrfs -o subvol=usr /dev/disk/by-id/ata-disk_usr /root/usr
cp -a -t /root /source/*
mkdir -p /root/run
btrfs filesystem sync /root/usr
btrfs filesystem sync /root
umount /root/usr
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
-udevadm settle
-sync
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
-/dev/sda2 / btrfs defaults 0 0
-/dev/sdb2 /usr btrfs subvol=usr,ro 0 0
+/dev/disk/by-id/ata-disk_root / btrfs defaults 0 0
+/dev/disk/by-id/ata-disk_usr /usr btrfs subvol=usr,ro 0 0
#!/bin/sh
-
: > /dev/watchdog
. /lib/dracut-lib.sh
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-if ismounted /usr; then
- echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdc
-fi
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
echo "CLIENT TEST START: $test_name"
- dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \
+ "${disk_args[@]}" \
-watchdog i6300esb -watchdog-action poweroff \
-append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts loglevel=7 rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
+ -initrd "$TESTDIR"/initramfs.testing || return 1
- if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result; then
+ if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED]"
return 1
fi
}
test_setup() {
- rm -f -- "$TESTDIR"/root.btrfs
- rm -f -- "$TESTDIR"/usr.btrfs
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1M count=160
- dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1M count=160
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
- inst_multiple grep
+ inst_multiple grep df
inst_simple ./fstab /etc/fstab
inst_simple /etc/os-release
inst ./test-init.sh /sbin/init
inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--nohardlink \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
-
- # Invoke KVM and/or QEMU to actually create the target filesystem.
-
- # echo $TESTDIR/overlay
- # echo $TESTDIR/initramfs.makeroot
- #exit 1
rm -rf -- "$TESTDIR"/overlay
+ # Create the blank file to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1MiB count=160
+ dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1MiB count=160
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr
+
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.btrfs; then
+
+ if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img; then
echo "Could not create root filesystem"
return 1
fi
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-a "debug watchdog" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
-set -x
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
-modprobe btrfs
udevadm control --reload
-udevadm settle
set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
-
-sfdisk /dev/sdb << EOF
-,1M
-,
-EOF
udevadm settle
-
-mkfs.btrfs -L dracut /dev/sda2
-mkfs.btrfs -L dracutusr /dev/sdb2
-btrfs device scan /dev/sda2
-btrfs device scan /dev/sdb2
+modprobe btrfs
+mkfs.btrfs -L dracut /dev/disk/by-id/ata-disk_root
+mkfs.btrfs -L dracutusr /dev/disk/by-id/ata-disk_usr
+btrfs device scan /dev/disk/by-id/ata-disk_root
+btrfs device scan /dev/disk/by-id/ata-disk_usr
mkdir -p /root
-mount -t btrfs /dev/sda2 /root
+mount -t btrfs /dev/disk/by-id/ata-disk_root /root
[ -d /root/usr ] || mkdir -p /root/usr
-mount -t btrfs /dev/sdb2 /root/usr
+mount -t btrfs /dev/disk/by-id/ata-disk_usr /root/usr
btrfs subvolume create /root/usr/usr
umount /root/usr
-mount -t btrfs -o subvol=usr /dev/sdb2 /root/usr
+mount -t btrfs -o subvol=usr /dev/disk/by-id/ata-disk_usr /root/usr
cp -a -t /root /source/*
mkdir -p /root/run
btrfs filesystem sync /root/usr
btrfs filesystem sync /root
umount /root/usr
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sdc
-sync
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
-LABEL=dracut / btrfs subvol=root 0 0
-LABEL=dracutusr /usr btrfs subvol=usr,ro 0 0
+/dev/disk/by-id/ata-disk_root / btrfs defaults 0 0
+/dev/disk/by-id/ata-disk_usr /usr btrfs subvol=usr,ro 0 0
echo "**************************FAILED**************************"
else
- echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdc
+ echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
echo "All OK"
fi
fi
stty sane
echo "made it to the rootfs!"
if getargbool 0 rd.shell; then
- # while sleep 1; do sleep 1;done
strstr "$(setsid --help)" "control" && CTTY="-c"
setsid $CTTY sh -i
fi
-sync
-systemctl poweroff
echo "Powering down."
+systemctl --no-block poweroff
exit 0
echo "CLIENT TEST START: $test_name"
- dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
+ -initrd "$TESTDIR"/initramfs.testing || return 1
- if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result; then
+ if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED]"
return 1
fi
}
test_setup() {
- rm -f -- "$TESTDIR"/root.btrfs
- rm -f -- "$TESTDIR"/usr.btrfs
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1M count=320
- dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1M count=320
+ # shellcheck disable=SC2064
+ trap "$(shopt -p nullglob globstar)" RETURN
+ shopt -q -s nullglob globstar
export kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
mount dmesg mkdir cp ping dd \
- umount strace less setsid tree systemctl reset sync
+ umount strace less setsid systemctl reset sync
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
[ -f ${_terminfodir}/l/linux ] && break
inst /lib/systemd/system/systemd-remount-fs.service
inst /lib/systemd/systemd-remount-fs
inst /lib/systemd/system/systemd-journal-flush.service
- inst /etc/sysconfig/init
inst /lib/systemd/system/slices.target
- inst /lib/systemd/system/system.slice
inst_multiple -o /lib/systemd/system/dracut*
inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
# install basic tools needed
inst_multiple sh bash setsid loadkeys setfont \
- login sushell sulogin gzip sleep echo mount umount
+ login sulogin gzip sleep echo mount umount
inst_multiple modprobe
# install libnss_files for login
inst_libdir_file "libnss_files*"
# install dbus and pam
- find \
- /etc/dbus-1 \
- /etc/pam.d \
- /etc/security \
- /lib64/security \
- /lib/security -xtype f \
- | while read -r file || [ -n "$file" ]; do
- inst_multiple -o "$file"
- done
+ inst_multiple -o \
+ /etc/dbus-1/** \
+ /etc/pam.d/** \
+ /etc/security/** \
+ /lib64/security/** \
+ /lib/security/**
# install dbus socket and service file
- inst /usr/lib/systemd/system/dbus.socket
- inst /usr/lib/systemd/system/dbus.service
- inst /usr/lib/systemd/system/dbus-broker.service
- inst /usr/lib/systemd/system/dbus-daemon.service
+ inst_multiple -o \
+ /usr/lib/systemd/system/dbus.socket \
+ /usr/lib/systemd/system/dbus.service \
+ /usr/lib/systemd/system/dbus-broker.service \
+ /usr/lib/systemd/system/dbus-daemon.service
(
echo "FONT=eurlatgr"
inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--nohardlink \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
-
- # Invoke KVM and/or QEMU to actually create the target filesystem.
rm -rf -- "$TESTDIR"/overlay
- dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1
+ # Create the blank file to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1MiB count=160
+ dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1MiB count=160
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr
+
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/result; then
+
+ if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img; then
echo "Could not create root filesystem"
return 1
fi
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
[ -e /etc/machine-id ] && EXTRA_MACHINE="/etc/machine-id"
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,4M
-,41M
-,41M
-,41M
-EOF
-udevadm settle
-mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda2 /dev/sda3 /dev/sda4
+set -ex
+mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/ata-disk_raid[123]
# wait for the array to finish initailizing, otherwise this sometimes fails
# randomly.
-mdadm -W /dev/md0
-set -e
+mdadm -W /dev/md0 || :
printf test > keyfile
cryptsetup -q luksFormat /dev/md0 /keyfile
echo "The passphrase is test"
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 \
- && lvm vgchange -ay
-mke2fs /dev/dracut/root
+lvm lvcreate -l 100%FREE -n root dracut
+lvm vgchange -ay
+mke2fs -L root /dev/dracut/root
mkdir -p /sysroot
mount /dev/dracut/root /sysroot
cp -a -t /sysroot /source/*
+mkdir -p /sysroot/run
umount /sysroot
lvm lvchange -a n /dev/dracut/root
udevadm settle
cryptsetup luksClose /dev/mapper/dracut_crypt_test
udevadm settle
+mdadm -W /dev/md0 || :
+udevadm settle
+mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
+. /tmp/mduuid
+udevadm settle
eval "$(udevadm info --query=env --name=/dev/md0 | while read -r line || [ -n "$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"
-} | dd oflag=direct,dsync of=/dev/sda1
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
#DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
#DEBUGFAIL="rd.break rd.shell rd.debug debug"
test_run() {
- DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$DISKIMAGE" || return 1
+ -initrd "$TESTDIR"/initramfs.testing || return 1
+
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
}
test_setup() {
- DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
- # Create the blank file to use as a root filesystem
- rm -f -- "$DISKIMAGE"
- dd if=/dev/zero of="$DISKIMAGE" bs=1M count=128
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
export initdir=$TESTDIR/overlay
# shellcheck disable=SC1090
. "$basedir"/dracut-init.sh
- inst_multiple sfdisk mke2fs poweroff cp umount dd sync
+ inst_multiple sfdisk mke2fs poweroff cp umount dd sync grep
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \
+ "${disk_args[@]}" \
-append "root=/dev/cannotreach rw rootfstype=ext2 console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$DISKIMAGE" || return 1
- eval "$(grep -F -a -m 1 ID_FS_UUID "$DISKIMAGE")"
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
(
# shellcheck disable=SC2031
echo "testluks UUID=$ID_FS_UUID /etc/key" > "$initdir"/etc/crypttab
#echo "luks-$ID_FS_UUID /dev/md0 none" > $initdir/etc/crypttab
echo -n "test" > "$initdir"/etc/key
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,2M
-,20M
-,20M
-,20M
-EOF
-udevadm settle
-for i in sda2 sda3 sda4; do
- lvm pvcreate -ff -y /dev/$i
-done \
- && lvm vgcreate dracut /dev/sda[234] \
- && lvm lvcreate -l 100%FREE -n root dracut \
- && lvm vgchange -ay \
- && mke2fs /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 \
- && echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
-sync
+
+set -ex
+for dev in /dev/disk/by-id/ata-disk_disk[123]; do
+ lvm pvcreate -ff -y "$dev"
+done
+
+lvm vgcreate dracut /dev/disk/by-id/ata-disk_disk[123]
+lvm lvcreate -l 100%FREE -n root dracut
+lvm vgchange -ay
+mke2fs /dev/dracut/root
+mkdir -p /sysroot
+mount /dev/dracut/root /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+lvm lvchange -a n /dev/dracut/root
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
#DEBUGFAIL="rd.break rd.shell"
test_run() {
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext2 || return 1
+ -initrd "$TESTDIR"/initramfs.testing || return 1
+
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
}
test_setup() {
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=80
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple sfdisk mke2fs poweroff cp umount dd sync
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
- "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
+ "$testdir"/run-qemu \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+
(
# shellcheck disable=SC2031
export initdir=$TESTDIR/overlay
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-o "plymouth network kernel-network-modules" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
-# don't let udev and this script step on eachother's toes
trap 'poweroff -f' EXIT
+# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-sleep 1
-mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
+set -ex
+mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/ata-disk_raid[123]
# wait for the array to finish initailizing, otherwise this sometimes fails
# randomly.
-mdadm -W /dev/md0
+mdadm -W /dev/md0 || :
printf test > keyfile
cryptsetup -q luksFormat /dev/md0 /keyfile
echo "The passphrase is test"
-set -e
-set -x
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
echo "dracut-root-block-created"
echo MD_UUID="$MD_UUID"
echo "ID_FS_UUID=$ID_FS_UUID"
-} | dd oflag=direct,dsync of=/dev/sda
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-#echo " rd.break=shutdown " >> /run/initramfs/etc/cmdline
if [ -d /run/initramfs/etc ]; then
echo " rd.debug=0 " >> /run/initramfs/etc/cmdline
fi
-sync
poweroff -f
client_run() {
echo "CLIENT TEST START: $*"
- cp --sparse=always --reflink=auto "$TESTDIR"/disk2.img "$TESTDIR"/disk2.img.new
- cp --sparse=always --reflink=auto "$TESTDIR"/disk3.img "$TESTDIR"/disk3.img.new
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ # degrade the RAID
+ # qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2.img.new \
- -drive format=raw,index=3,media=disk,file="$TESTDIR"/disk3.img.new \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot $* systemd.log_target=kmsg root=LABEL=root rw rd.retry=10 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.shell=0 $DEBUGFAIL " \
-initrd "$TESTDIR"/initramfs.testing
+
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $* [FAIL]"
return 1
fi
- rm -f -- "$TESTDIR"/marker.img
- dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=40
echo "CLIENT TEST END: $* [OK]"
return 0
}
test_setup() {
- # Create the blank file to use as a root filesystem
- rm -f -- "$TESTDIR"/marker.img
- dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=40
- dd if=/dev/zero of="$TESTDIR"/disk1.img bs=1M count=35
- dd if=/dev/zero of="$TESTDIR"/disk2.img bs=1M count=35
- dd if=/dev/zero of="$TESTDIR"/disk3.img bs=1M count=35
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple sfdisk mke2fs poweroff cp umount dd grep sync
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1.img \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2.img \
- -drive format=raw,index=3,media=disk,file="$TESTDIR"/disk3.img \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
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
echo "ARRAY /dev/md0 level=raid5 num-devices=3 UUID=$MD_UUID" > "$initdir"/etc/mdadm.conf
echo "luks-$ID_FS_UUID UUID=$ID_FS_UUID /etc/key" > "$initdir"/etc/crypttab
echo -n test > "$initdir"/etc/key
+ chmod 0600 "$initdir"/etc/key
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
set -x
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,4M
-,43M
-,43M
-,43M
-EOF
-udevadm settle
+
+set -ex
printf test > keyfile
-cryptsetup -q luksFormat /dev/sda2 /keyfile
-cryptsetup -q luksFormat /dev/sda3 /keyfile
-cryptsetup -q luksFormat /dev/sda4 /keyfile
-cryptsetup luksOpen /dev/sda2 dracut_sda2 < /keyfile
-cryptsetup luksOpen /dev/sda3 dracut_sda3 < /keyfile
-cryptsetup luksOpen /dev/sda4 dracut_sda4 < /keyfile
-mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/mapper/dracut_sda2 /dev/mapper/dracut_sda3 /dev/mapper/dracut_sda4
+cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk1 /keyfile
+cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk2 /keyfile
+cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk3 /keyfile
+cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk1 dracut_disk1 < /keyfile
+cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk2 dracut_disk2 < /keyfile
+cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk3 dracut_disk3 < /keyfile
+mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/mapper/dracut_disk1 /dev/mapper/dracut_disk2 /dev/mapper/dracut_disk3
# wait for the array to finish initailizing, otherwise this sometimes fails
# randomly.
mdadm -W /dev/md0
-lvm pvcreate -ff -y /dev/md0 \
- && lvm vgcreate dracut /dev/md0 \
- && lvm lvcreate -l 100%FREE -n root dracut \
- && lvm vgchange -ay \
- && mke2fs /dev/dracut/root \
- && mkdir -p /sysroot \
- && mount /dev/dracut/root /sysroot \
- && cp -a -t /sysroot /source/* \
- && umount /sysroot \
- && sleep 2 \
- && lvm lvchange -a n /dev/dracut/root \
- && sleep 2 \
- && lvm vgchange -a n dracut \
- && {
- lvm vgdisplay \
- && { mdadm -W /dev/md0 || :; } \
- && mdadm --stop /dev/md0 \
- && cryptsetup luksClose /dev/mapper/dracut_sda2 \
- && cryptsetup luksClose /dev/mapper/dracut_sda3 \
- && cryptsetup luksClose /dev/mapper/dracut_sda4 \
- && :
- :
- } \
- && {
- echo "dracut-root-block-created"
- for i in /dev/sda[234]; do
- udevadm info --query=env --name="$i" | grep -F 'ID_FS_UUID='
- done
- } | dd oflag=direct,dsync of=/dev/sda1
+lvm pvcreate -ff -y /dev/md0
+lvm vgcreate dracut /dev/md0
+
+lvm lvcreate -l 100%FREE -n root dracut
+lvm vgchange -ay
+mke2fs /dev/dracut/root
+mkdir -p /sysroot
+mount /dev/dracut/root /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+lvm lvchange -a n /dev/dracut/root
+mdadm -W /dev/md0 || :
+mdadm --stop /dev/md0
+cryptsetup luksClose /dev/mapper/dracut_disk1
+cryptsetup luksClose /dev/mapper/dracut_disk2
+cryptsetup luksClose /dev/mapper/dracut_disk3
+
+{
+ echo "dracut-root-block-created"
+ for i in /dev/disk/by-id/ata-disk_disk[123]; do
+ udevadm info --query=env --name="$i" | grep -F 'ID_FS_UUID='
+ done
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
+. /lib/dracut-lib.sh
+
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb
+
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
-[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
+[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
+[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
-echo "made it to the rootfs! Powering down."
+echo "made it to the rootfs!"
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
+echo "Powering down."
mount -n -o remount,ro /
+if [ -d /run/initramfs/etc ]; then
+ echo " rd.debug=0 " >> /run/initramfs/etc/cmdline
+fi
poweroff -f
test_run() {
LUKSARGS=$(cat "$TESTDIR"/luks.txt)
- dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
echo "CLIENT TEST START: $LUKSARGS"
+
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
echo "CLIENT TEST END: [OK]"
- dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
echo "CLIENT TEST START: Any LUKS"
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
echo "CLIENT TEST END: [OK]"
- dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
echo "CLIENT TEST START: Wrong LUKS UUID"
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img && return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img && return 1
echo "CLIENT TEST END: [OK]"
return 0
}
test_setup() {
- # Create the blank file to use as a root filesystem
- rm -f -- "$TESTDIR"/root.ext2
- dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=134
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple -o ${_terminfodir}/l/linux
inst "$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script"
inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
+
+ inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
+ inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
+
inst_multiple grep
inst_simple /etc/os-release
inst ./test-init.sh /sbin/init
inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
- "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
+ "$testdir"/run-qemu \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1
- cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/root.ext2)
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/marker.img)
for uuid in $cryptoUUIDS; do
eval "$uuid"
printf ' rd.luks.uuid=luks-%s ' "$ID_FS_UUID"
inst_multiple poweroff shutdown dd
inst_hook shutdown-emergency 000 ./hard-off.sh
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
+ i=1
for uuid in $cryptoUUIDS; do
eval "$uuid"
- printf 'luks-%s /dev/sda%s /etc/key timeout=0\n' "$ID_FS_UUID" $i
+ printf 'luks-%s /dev/disk/by-id/ata-disk_disk%s /etc/key timeout=0\n' "$ID_FS_UUID" $i
((i += 1))
done > "$initdir"/etc/crypttab
echo -n test > "$initdir"/etc/key
+ chmod 0600 "$initdir"/etc/key
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-o "plymouth network kernel-network-modules" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
udevadm settle
# dmraid does not want symlinks in --disk "..."
-if [ -e /dev/hda ]; then
- echo y | dmraid -f isw -C Test0 --type 1 --disk "/dev/hdb /dev/hdc"
-else
- echo y | dmraid -f isw -C Test0 --type 1 --disk "/dev/sdb /dev/sdc"
-fi
+echo y | dmraid -f isw -C Test0 --type 1 --disk "$(realpath /dev/disk/by-id/ata-disk_disk1) $(realpath /dev/disk/by-id/ata-disk_disk2)"
udevadm settle
SETS=$(dmraid -c -s)
{
echo "dracut-root-block-created"
echo MD_UUID="$MD_UUID"
-} | dd oflag=direct,dsync of=/dev/sda
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
mdadm --wait-clean /dev/md0
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
-cat /proc/mdstat
-[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
+[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
+[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-sync
+if [ -d /run/initramfs/etc ]; then
+ echo " rd.debug=0 " >> /run/initramfs/etc/cmdline
+fi
poweroff -f
client_run() {
echo "CLIENT TEST START: $*"
- rm -f -- "$TESTDIR"/marker.img
- dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1 \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2 \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
+ -initrd "$TESTDIR"/initramfs.testing || return 1
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $* [FAIL]"
}
test_setup() {
-
- # Create the blank file to use as a root filesystem
- rm -f -- "$TESTDIR"/marker.img
- rm -f -- "$TESTDIR"/disk1
- rm -f -- "$TESTDIR"/disk2
- dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=1
- dd if=/dev/zero of="$TESTDIR"/disk1 bs=1M count=104
- dd if=/dev/zero of="$TESTDIR"/disk2 bs=1M count=104
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
export initdir=$TESTDIR/overlay
# shellcheck disable=SC1090
. "$basedir"/dracut-init.sh
- inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync
+ inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync realpath
inst_hook initqueue 01 ./create-root.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=100
+ dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=100
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1 \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2 \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-o "plymouth network kernel-network-modules" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
modprobe btrfs
udevadm control --reload
udevadm settle
-# save a partition at the beginning for future flagging purposes
-sfdisk -X gpt /dev/sda << EOF
-,10M
-,200M
-,200M
-,200M
-,200M
-EOF
-udevadm settle
-mkfs.btrfs -draid10 -mraid10 -L root /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5
+
+set -e
+
+mkfs.btrfs -draid10 -mraid10 -L root /dev/disk/by-id/ata-disk_raid[1234]
udevadm settle
+
btrfs device scan
udevadm settle
-set -e
+
mkdir -p /sysroot
-mount -t btrfs /dev/sda5 /sysroot
+mount -t btrfs /dev/disk/by-id/ata-disk_raid4 /sysroot
cp -a -t /sysroot /source/*
umount /sysroot
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
+
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
+. /lib/dracut-lib.sh
+
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda
-sync
+
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
-[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
+[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
+[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
-echo "made it to the rootfs! Powering down."
+echo "made it to the rootfs!"
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
+echo "Powering down."
mount -n -o remount,ro /
+
poweroff -f
# Uncomment this to debug failures
#DEBUGFAIL="rd.shell"
test_run() {
- DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-root.img
- MARKER_DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-marker.img
- dd if=/dev/zero of="$MARKER_DISKIMAGE" bs=512 count=10
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-4.img raid4
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$MARKER_DISKIMAGE" \
- -drive format=raw,index=1,media=disk,file="$DISKIMAGE" \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$MARKER_DISKIMAGE" || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
}
test_setup() {
inst_multiple -o ${_terminfodir}/l/linux
inst "$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script"
inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
+
+ inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
+ inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
+
inst_multiple grep
inst ./test-init.sh /sbin/init
inst_simple /etc/os-release
inst_multiple sfdisk mkfs.btrfs poweroff cp umount dd sync
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=150
+ dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=150
+ dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=150
+ dd if=/dev/zero of="$TESTDIR"/raid-4.img bs=1MiB count=150
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-4.img raid4
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- dd if="$DISKIMAGE" bs=512 count=4 skip=2048 | grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
(
# shellcheck disable=SC2031
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-o "plymouth network kernel-network-modules" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
-#!/usr/bin/python -tt
+#!/usr/bin/python3 -tt
#
# livecd-creator : Creates Live CD based for Fedora.
#
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-sync
+
poweroff -f
#DEBUGFAIL="rd.shell rd.break rd.debug systemd.log_level=debug systemd.log_target=console"
test_check() {
- for pdir in $(python -c "import site; print(site.getsitepackages())" | sed -e 's/\[\(.*\)\]/\1/' -e "s/', /' /g"); do
+ for pdir in $(python3 -c "import site; print(site.getsitepackages())" | sed -e 's/\[\(.*\)\]/\1/' -e "s/', /' /g"); do
# shellcheck disable=SC2001
pdir1=$(echo "$pdir" | sed "s/^'\(.*\)'$/\1/")
if [[ -d $pdir1/imgcreate ]]; then
}
test_run() {
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/livecd.iso livecd 1
+
"$testdir"/run-qemu \
+ "${disk_args[@]}" \
-boot order=d \
- -drive format=raw,bps=1000000,index=0,media=disk,file="$TESTDIR"/livecd.iso \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/root.img \
-append "panic=1 systemd.crash_reboot root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
# -append "root=live:CDLABEL=LiveCD live quiet rhgb selinux=0 rd.live.check" \
# -initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/root.img || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/marker.img || return 1
}
test_setup() {
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
- dd if=/dev/zero of="$TESTDIR"/root.img count=100
-
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-a "debug dmsquash-live qemu" \
-o "rngd" \
cp -a -- /etc/ld.so.conf* "$initdir"/etc
ldconfig -r "$initdir"
)
- python create.py -d -c livecd-fedora-minimal.ks
+ python3 create.py -d -c livecd-fedora-minimal.ks
return 0
}
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,4M
-,29M
-,29M
-,29M
-EOF
-udevadm settle
-for i in sda2 sda3 sda4; do
- lvm pvcreate -ff -y /dev/$i
-done \
- && lvm vgcreate dracut /dev/sda[234] \
- && lvm lvcreate -l 17 -T dracut/mythinpool \
- && lvm lvcreate -V1G -T dracut/mythinpool -n root \
- && lvm vgchange -ay \
- && mke2fs /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
-dmsetup status | grep out_of_data_space \
- || echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
+
+set -ex
+for dev in /dev/disk/by-id/ata-disk_disk[123]; do
+ lvm pvcreate -ff -y "$dev"
+done
+
+lvm vgcreate dracut /dev/disk/by-id/ata-disk_disk[123]
+lvm lvcreate -l 17 -T dracut/mythinpool
+lvm lvcreate -V1G -T dracut/mythinpool -n root
+lvm vgchange -ay
+mke2fs /dev/dracut/root
+mkdir -p /sysroot
+mount /dev/dracut/root /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+lvm lvchange -a n /dev/dracut/root
+
+if ! dmsetup status | grep -q out_of_data_space; then
+ echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+fi
+
sync
poweroff -f
#!/bin/sh
+: > /dev/watchdog
+
. /lib/dracut-lib.sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
-echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+
export TERM=linux
export PS1='initramfs-test:\w\$ '
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-getargbool 0 rd.shell && sh -i
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
-sync
poweroff -f
#DEBUGFAIL="rd.break rd.shell"
test_run() {
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
+ "${disk_args[@]}" \
-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
- -initrd "$TESTDIR"/initramfs.testing
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext2 || return 1
+ -initrd "$TESTDIR"/initramfs.testing || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
}
test_setup() {
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=92
-
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
(
inst_multiple sfdisk mke2fs poweroff cp umount grep dmsetup dd sync
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Invoke KVM and/or QEMU to actually create the target filesystem.
- "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \
+
+ # Create the blank files to use as a root filesystem
+ dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3
+
+ "$testdir"/run-qemu \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+
(
# shellcheck disable=SC2031
export initdir=$TESTDIR/overlay
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-o "plymouth network kernel-network-modules" \
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
while read -r dev _ fstype opts rest || [ -n "$dev" ]; do
[ "$fstype" != "nfs" -a "$fstype" != "nfs4" ] && continue
- echo "nfs-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/sda
+ echo "nfs-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
break
done < /proc/mounts
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
udevadm control --reload
udevadm settle
-set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
+set -ex
-udevadm settle
-mkfs.ext3 -L dracut /dev/sda2
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda2 /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null
}
-wait_for_if_link eth0 ens2
+wait_for_if_link eth0 enp0s1
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
-ip link set dev eth0 name ens2
-ip addr add 192.168.50.1/24 dev ens2
-ip addr add 192.168.50.2/24 dev ens2
-ip addr add 192.168.50.3/24 dev ens2
-linkup ens2
+ip link set dev eth0 name enp0s1
+ip addr add 192.168.50.1/24 dev enp0s1
+ip addr add 192.168.50.2/24 dev enp0s1
+ip addr add 192.168.50.3/24 dev enp0s1
+linkup enp0s1
echo > /dev/watchdog
modprobe af_packet
run_server() {
# Start server first
echo "NFS TEST SETUP: Starting DHCP/NFS server"
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root 1
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+ "${disk_args[@]}" \
-net socket,listen=127.0.0.1:12320 \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
echo "CLIENT TEST START: $test_name"
# Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
- if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1 &> /dev/null; then
- echo "Unable to make client sda image" 1>&2
- return 1
- fi
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \
+ "${disk_args[@]}" \
-net nic,macaddr="$mac",model=e1000 \
-net socket,connect=127.0.0.1:12320 \
-watchdog i6300esb -watchdog-action poweroff \
-initrd "$TESTDIR"/initramfs.testing
# shellcheck disable=SC2181
- if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nfs-OK "$TESTDIR"/client.img; then
+ if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nfs-OK "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
return 1
fi
# nfsinfo=( server:/path nfs{,4} options )
- read -r -a nfsinfo < <(awk '{print $2, $3, $4; exit}' "$TESTDIR"/client.img)
+ read -r -a nfsinfo < <(awk '{print $2, $3, $4; exit}' "$TESTDIR"/marker.img)
if [[ ${nfsinfo[0]%%:*} != "$server" ]]; then
echo "CLIENT TEST INFO: got server: ${nfsinfo[0]%%:*}"
52:54:00:12:34:05 "root=dhcp" 192.168.50.1 wsize=4096 || return 1
client_test "NFSv3 Bridge Customized root=dhcp DHCP path,options" \
- 52:54:00:12:34:05 "root=dhcp bridge=foobr0:ens2" 192.168.50.1 wsize=4096 || return 1
+ 52:54:00:12:34:05 "root=dhcp bridge=foobr0:enp0s1" 192.168.50.1 wsize=4096 || return 1
client_test "NFSv3 root=dhcp DHCP IP:path,options" \
52:54:00:12:34:06 "root=dhcp" 192.168.50.2 wsize=4096 || return 1
}
test_setup() {
- # Make server root
- dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
-
export kernel=$KVERSION
export srcmods="/lib/modules/$kernel/"
# Detect lib paths
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/server
- # Invoke KVM and/or QEMU to actually create the target filesystem.
+ dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
+
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
# Make an overlay with needed tools for the test harness
(
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst_simple ./99-default.link /etc/systemd/network/99-default.link
)
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
echo "made it to the rootfs! Powering down."
while read -r dev _ fstype opts rest || [ -n "$dev" ]; do
[ "$fstype" != "ext3" ] && continue
- echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/sda
+ echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
break
done < /proc/mounts
-#sh -i
+
if getargbool 0 rd.shell; then
strstr "$(setsid --help)" "control" && CTTY="-c"
setsid $CTTY sh -i
fi
+
sync
poweroff -f
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
udevadm control --reload
udevadm settle
-echo "Size of /dev/sdc and /dev/sdd"
-blockdev --getsize64 /dev/sdc /dev/sdd
+set -ex
-mkfs.ext3 -j -L singleroot -F /dev/sda \
- && mkdir -p /sysroot \
- && mount /dev/sda /sysroot \
- && cp -a -t /sysroot /source/* \
- && umount /sysroot \
- && mdadm --create /dev/md0 --run --auto=yes --level=stripe --raid-devices=2 /dev/sdc /dev/sdd \
- && mdadm -W /dev/md0 || : \
- && lvm pvcreate -ff -y /dev/md0 \
- && lvm vgcreate dracut /dev/md0 \
- && lvm lvcreate -l 100%FREE -n root dracut \
- && lvm vgchange -ay \
- && mkfs.ext3 -j -L sysroot /dev/dracut/root \
- && mount /dev/dracut/root /sysroot \
- && cp -a -t /sysroot /source/* \
- && umount /sysroot \
- && lvm lvchange -a n /dev/dracut/root \
- && echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sdb
+mkfs.ext3 -j -L singleroot -F /dev/disk/by-id/ata-disk_singleroot
+mkdir -p /sysroot
+mount /dev/disk/by-id/ata-disk_singleroot /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+mdadm --create /dev/md0 --run --auto=yes --level=stripe --raid-devices=2 /dev/disk/by-id/ata-disk_raid0-1 /dev/disk/by-id/ata-disk_raid0-2
+mdadm -W /dev/md0 || :
+lvm pvcreate -ff -y /dev/md0
+lvm vgcreate dracut /dev/md0
+lvm lvcreate -l 100%FREE -n root dracut
+lvm vgchange -ay
+mkfs.ext3 -j -L sysroot /dev/dracut/root
+mount /dev/dracut/root /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+lvm lvchange -a n /dev/dracut/root
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
udevadm settle
-set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
-udevadm settle
-mkfs.ext3 -L dracut /dev/sda2
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda2 /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
-sync
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
while [ $cnt -lt 600 ]; do
li=$(ip -o link show dev "$1" 2> /dev/null)
[ -n "$li" ] && return 0
- if [[ $2 ]]; then
- li=$(ip -o link show dev "$2" 2> /dev/null)
- [ -n "$li" ] && return 0
- fi
sleep 0.1
cnt=$((cnt + 1))
done
return 1
}
-wait_for_if_link eth0 ens2
-wait_for_if_link eth1 ens3
+wait_for_if_link enp0s1
+wait_for_if_link enp0s2
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
-ip link set dev eth0 name ens2
-ip addr add 192.168.50.1/24 dev ens2
-ip link set ens2 up
-ip link set dev eth1 name ens3
-ip addr add 192.168.51.1/24 dev ens3
-ip link set ens3 up
+ip addr add 192.168.50.1/24 dev enp0s1
+ip link set enp0s1 up
+ip addr add 192.168.51.1/24 dev enp0s2
+ip link set enp0s2 up
: > /var/lib/dhcpd/dhcpd.leases
chmod 777 /var/lib/dhcpd/dhcpd.leases
dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2009-06.dracut:target0
tgtadm --lld iscsi --mode target --op new --tid 2 --targetname iqn.2009-06.dracut:target1
tgtadm --lld iscsi --mode target --op new --tid 3 --targetname iqn.2009-06.dracut:target2
-tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sdb
-tgtadm --lld iscsi --mode logicalunit --op new --tid 2 --lun 2 -b /dev/sdc
-tgtadm --lld iscsi --mode logicalunit --op new --tid 3 --lun 3 -b /dev/sdd
+tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/disk/by-id/ata-disk_singleroot
+tgtadm --lld iscsi --mode logicalunit --op new --tid 2 --lun 2 -b /dev/disk/by-id/ata-disk_raid0-1
+tgtadm --lld iscsi --mode logicalunit --op new --tid 3 --lun 3 -b /dev/disk/by-id/ata-disk_raid0-2
tgtadm --lld iscsi --mode target --op bind --tid 1 -I 192.168.50.101
tgtadm --lld iscsi --mode target --op bind --tid 2 -I 192.168.51.101
tgtadm --lld iscsi --mode target --op bind --tid 3 -I 192.168.50.101
# Start server first
echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server"
+ declare -a disk_args=()
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img serverroot 1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/singleroot.img singleroot
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/root.ext3 \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \
- -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \
+ "${disk_args[@]}" \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net nic,macaddr=52:54:00:12:34:57,model=e1000 \
-net socket,listen=127.0.0.1:12330 \
- -append "panic=1 quiet root=/dev/sda2 rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -append "panic=1 quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
tty -s && stty sane
if ! [[ $SERIAL ]]; then
- echo "Waiting for the server to startup"
- while ! grep -q Serving "$TESTDIR"/server.log; do
+ while :; do
+ grep Serving "$TESTDIR"/server.log && break
echo "Waiting for the server to startup"
+ tail "$TESTDIR"/server.log
sleep 1
done
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
fi
+
}
run_client() {
shift
echo "CLIENT TEST START: $test_name"
- dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \
+ "${disk_args[@]}" \
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net nic,macaddr=52:54:00:12:34:01,model=e1000 \
-net socket,connect=127.0.0.1:12330 \
-acpitable file=ibft.table \
-append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
-initrd "$TESTDIR"/initramfs.testing
- if ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/client.img; then
+
+ # shellcheck disable=SC2181
+ if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
return 1
fi
initiator=$(iscsi-iname)
run_client "root=dhcp" \
- "root=/dev/root netroot=dhcp ip=ens2:dhcp" \
+ "root=/dev/root netroot=dhcp ip=enp0s1:dhcp" \
"rd.iscsi.initiator=$initiator" \
|| return 1
run_client "netroot=iscsi target0" \
"root=LABEL=singleroot netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target0" \
- "ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:ens2:off" \
+ "ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:enp0s1:off" \
"rd.iscsi.initiator=$initiator" \
|| return 1
inst_multiple sfdisk mkfs.ext3 poweroff cp umount setsid dd sync blockdev
inst_hook initqueue 01 ./create-client-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
- # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
- if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then
- echo "Unable to make client sdb image" 1>&2
- return 1
- fi
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ dd if=/dev/zero of="$TESTDIR"/singleroot.img bs=1MiB count=200
+ dd if=/dev/zero of="$TESTDIR"/raid0-1.img bs=1MiB count=100
+ dd if=/dev/zero of="$TESTDIR"/raid0-2.img bs=1MiB count=100
+
+ declare -a disk_args=()
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/singleroot.img singleroot
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
+
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/client.img \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \
- -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/client.img || return 1
- rm -- "$TESTDIR"/client.img
- rm -rf -- "$TESTDIR"/overlay
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ rm -- "$TESTDIR"/marker.img
# Make server root
dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-server-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--nomdadmconf \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ rm -rf -- "$TESTDIR"/overlay
+
+ dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=60
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1
- rm -rf -- "$TESTDIR"/overlay
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ rm -- "$TESTDIR"/marker.img
# Make an overlay with needed tools for the test harness
(
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst_simple ./99-default.link /etc/systemd/network/99-default.link
)
echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
break
done < /proc/mounts
+
if getargbool 0 rd.shell; then
strstr "$(setsid --help)" "control" && CTTY="-c"
setsid $CTTY sh -i
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
udevadm control --reload
udevadm settle
-ls -al /dev/disk/by-id
-
mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
mount /dev/disk/by-id/ata-disk_root /root
qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1
qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
- "$testdir"/run-qemu -M q35 \
+ "$testdir"/run-qemu \
"${disk_args[@]}" \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
declare -i disk_index=0
qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
- "$testdir"/run-qemu -M q35 \
+ "$testdir"/run-qemu \
"${disk_args[@]}" \
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net nic,macaddr=52:54:00:12:34:01,model=e1000 \
qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
# Invoke KVM and/or QEMU to actually create the target filesystem.
- "$testdir"/run-qemu -M q35 \
+ "$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
--nomdadmconf \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ rm -rf -- "$TESTDIR"/overlay
- dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=60
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
declare -a disk_args=()
# shellcheck disable=SC2034
declare -i disk_index=0
qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root
# Invoke KVM and/or QEMU to actually create the target filesystem.
- "$testdir"/run-qemu -M q35 \
+ "$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
rm -- "$TESTDIR"/marker.img
- rm -rf -- "$TESTDIR"/overlay
# Make an overlay with needed tools for the test harness
(
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
: > /dev/watchdog
+. /lib/dracut-lib.sh
+
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+command -v plymouth > /dev/null 2>&1 && plymouth --quit
exec > /dev/console 2>&1
+
while read -r dev fs fstype opts rest || [ -n "$dev" ]; do
[ "$dev" = "rootfs" ] && continue
[ "$fs" != "/" ] && continue
- echo "nbd-OK $fstype $opts" | dd oflag=direct,dsync of=/dev/sda
+ echo "nbd-OK $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
echo "nbd-OK $fstype $opts"
break
done < /proc/mounts
export PS1='nbdclient-test:\w\$ '
stty sane
echo "made it to the rootfs! Powering down."
-#sh -i
-: > /dev/watchdog
-mount -n -o remount,ro / &> /dev/null
-: > /dev/watchdog
+
+if getargbool 0 rd.shell; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
+
+mount -n -o remount,ro /
+
+sync
poweroff -f
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
-udevadm settle
set -e
udevadm settle
-mkfs.ext3 -L dracut /dev/sda
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
{
echo "dracut-root-block-created"
echo "ID_FS_UUID=$ID_FS_UUID"
-} | dd oflag=direct,dsync of=/dev/sdb
-sync
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
udevadm control --reload
udevadm settle
+set -ex
+
printf test > keyfile
-cryptsetup -q luksFormat /dev/sda /keyfile
+cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_root /keyfile
echo "The passphrase is test"
-cryptsetup luksOpen /dev/sda 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 \
- && lvm vgchange -ay \
- && mkfs.ext3 -L dracut -j /dev/dracut/root \
- && mkdir -p /sysroot \
- && mount /dev/dracut/root /sysroot \
- && cp -a -t /sysroot /source/* \
- && umount /sysroot
+cryptsetup luksOpen /dev/disk/by-id/ata-disk_root 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
+lvm vgchange -ay
+mkfs.ext3 -L dracut -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
udevadm settle
cryptsetup luksClose /dev/mapper/dracut_crypt_test
udevadm settle
sleep 1
-eval "$(udevadm info --query=env --name=/dev/sda | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
+eval "$(udevadm info --query=env --name=/dev/disk/by-id/ata-disk_root | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
{
echo "dracut-root-block-created"
echo "ID_FS_UUID=$ID_FS_UUID"
-} | dd oflag=direct,dsync of=/dev/sdb
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
set -e
udevadm settle
-mkfs.ext3 -L dracut /dev/sda
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
{
echo "dracut-root-block-created"
echo "ID_FS_UUID=$ID_FS_UUID"
-} | dd oflag=direct,dsync of=/dev/sdb
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
sync
poweroff -f
while [ $cnt -lt 600 ]; do
li=$(ip -o link show dev "$1" 2> /dev/null)
[ -n "$li" ] && return 0
- if [[ $2 ]]; then
- li=$(ip -o link show dev "$2" 2> /dev/null)
- [ -n "$li" ] && return 0
- fi
sleep 0.1
cnt=$((cnt + 1))
done
wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null
}
-wait_for_if_link eth0 ens3
-
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
-ip link set dev eth0 name ens3
-ip addr add 192.168.50.1/24 dev ens3
-linkup ens3
+
+wait_for_if_link enp0s1
+ip addr add 192.168.50.1/24 dev enp0s1
+linkup enp0s1
modprobe af_packet
nbd-server
# Start server first
echo "NBD TEST SETUP: Starting DHCP/NBD server"
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/unencrypted.img unencrypted
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/encrypted.img encrypted
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img serverroot
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/nbd.ext3 \
- -drive format=raw,index=2,media=disk,file="$TESTDIR"/encrypted.ext3 \
+ "${disk_args[@]}" \
+ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net socket,listen=127.0.0.1:12340 \
- -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
- -append "panic=1 systemd.crash_reboot root=/dev/sda rootfstype=ext3 rw quiet console=ttyS0,115200n81 selinux=0" \
- -initrd "$TESTDIR"/initramfs.server -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+ -append "panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -initrd "$TESTDIR"/initramfs.server \
+ -pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
# Cleanup the terminal if we have one
echo "CLIENT TEST START: $test_name"
- # Clear out the flags for each test
- if ! dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1; then
- echo "Unable to make client flag image" 1>&2
- return 1
- fi
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/flag.img \
+ "${disk_args[@]}" \
-net nic,macaddr="$mac",model=e1000 \
-net socket,connect=127.0.0.1:12340 \
-append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81 selinux=0 " \
-initrd "$TESTDIR"/initramfs.testing
# shellcheck disable=SC2181
- if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nbd-OK "$TESTDIR"/flag.img; then
+ if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nbd-OK "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
return 1
fi
# nbdinfo=( fstype fsoptions )
- read -r -a nbdinfo < <(awk '{print $2, $3; exit}' "$TESTDIR"/flag.img)
+ read -r -a nbdinfo < <(awk '{print $2, $3; exit}' "$TESTDIR"/marker.img)
if [[ ${nbdinfo[0]} != "$fstype" ]]; then
echo "CLIENT TEST END: $test_name [FAILED - WRONG FS TYPE] \"${nbdinfo[0]}\" != \"$fstype\""
}
make_encrypted_root() {
- # Create the blank file to use as a root filesystem
- dd if=/dev/zero of="$TESTDIR"/encrypted.ext3 bs=1M count=80
- dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1
-
rm -fr "$TESTDIR"/overlay
kernel=$KVERSION
# Create what will eventually be our root filesystem onto an overlay
)
inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
- mount dmesg mkdir cp ping dd
+ mount dmesg mkdir cp ping dd sync
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
[ -f ${_terminfodir}/l/linux ] && break
done
inst_multiple -o ${_terminfodir}/l/linux
+
+ inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
+ inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
+
inst ./client-init.sh /sbin/init
inst_simple /etc/os-release
find_binary plymouth > /dev/null && inst_multiple plymouth
inst_hook emergency 000 ./hard-off.sh
inst_hook initqueue 01 ./create-encrypted-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
+ dd if=/dev/zero of="$TESTDIR"/encrypted.img bs=1MiB count=120
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/encrypted.img root
+
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/encrypted.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \
+ "${disk_args[@]}" \
-append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1
- grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/flag.img > "$TESTDIR"/luks.uuid
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
+ grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid
}
make_client_root() {
- dd if=/dev/zero of="$TESTDIR"/nbd.ext3 bs=1M count=120
- dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1
-
rm -fr "$TESTDIR"/overlay
kernel=$KVERSION
(
done
)
inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
- dmesg mkdir cp ping dd
+ dmesg mkdir cp ping dd mount sync
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
[ -f ${_terminfodir}/l/linux ] && break
done
inst_multiple -o ${_terminfodir}/l/linux
+
+ inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
+ inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
+ ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
+
inst ./client-init.sh /sbin/init
inst_simple /etc/os-release
inst /etc/nsswitch.conf /etc/nsswitch.conf
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-client-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ dd if=/dev/zero of="$TESTDIR"/unencrypted.img bs=1MiB count=120
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/unencrypted.img root
+
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/nbd.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
rm -fr "$TESTDIR"/overlay
}
make_server_root() {
- dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
- dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1
-
rm -fr "$TESTDIR"/overlay
export kernel=$KVERSION
(
cat > "$initdir/etc/nbd-server/config" << EOF
[generic]
[raw]
-exportname = /dev/sdb
+exportname = /dev/disk/by-id/ata-disk_unencrypted
port = 2000
bs = 4096
[encrypted]
-exportname = /dev/sdc
+exportname = /dev/disk/by-id/ata-disk_encrypted
port = 2001
bs = 4096
EOF
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd sync
inst_hook initqueue 01 ./create-server-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=120
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root
+
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
- -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
rm -fr "$TESTDIR"/overlay
}
. "$basedir"/dracut-init.sh
inst_multiple poweroff shutdown dd
inst_hook shutdown-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 ./debug-shell.service /lib/systemd/system/debug-shell.service
)
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
- -m "dash udev-rules rootfs-block fs-lib base debug kernel-modules" \
- -d "af_packet piix ide-gd_mod ata_piix ext3 ext3 sd_mod e1000" \
+ -a "udev-rules base rootfs-block fs-lib debug kernel-modules" \
+ -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod e1000 drbg" \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
{
echo "OK"
echo "$IFACES"
-} | dd oflag=direct,dsync of=/dev/sda
+} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
getargbool 0 rd.shell && sh -i
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
done
rm -f -- /etc/lvm/lvm.conf
udevadm control --reload
-udevadm settle
set -e
-# save a partition at the beginning for future flagging purposes
-sfdisk /dev/sda << EOF
-,1M
-,
-EOF
udevadm settle
-mkfs.ext3 -L dracut /dev/sda2
+mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
mkdir -p /root
-mount /dev/sda2 /root
+mount /dev/disk/by-id/ata-disk_root /root
cp -a -t /root /source/*
mkdir -p /root/run
umount /root
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1
-sync
+echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
poweroff -f
while [ $cnt -lt 600 ]; do
li=$(ip -o link show dev "$1" 2> /dev/null)
[ -n "$li" ] && return 0
- if [[ $2 ]]; then
- li=$(ip -o link show dev "$2" 2> /dev/null)
- [ -n "$li" ] && return 0
- fi
sleep 0.1
cnt=$((cnt + 1))
done
wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null
}
-wait_for_if_link eth0 ens2
+wait_for_if_link enp0s1
: > /dev/watchdog
ip addr add 127.0.0.1/8 dev lo
linkup lo
-ip link set dev eth0 name ens2
-ip addr add 192.168.50.1/24 dev ens2
-linkup ens2
+
+ip addr add 192.168.50.1/24 dev enp0s1
+linkup enp0s1
: > /dev/watchdog
modprobe af_packet
# Start server first
echo "MULTINIC TEST SETUP: Starting DHCP/NFS server"
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root
+
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+ "${disk_args[@]}" \
-net socket,listen=127.0.0.1:12350 \
-net nic,macaddr=52:54:01:12:34:56,model=e1000 \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
echo "CLIENT TEST START: $test_name"
- # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
- if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then
- echo "Unable to make client sda image" 1>&2
- return 1
- fi
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
- "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
+ "$testdir"/run-qemu \
+ "${disk_args[@]}" \
-net socket,connect=127.0.0.1:12350 \
-net nic,macaddr=52:54:00:12:34:"$mac1",model=e1000 \
-net nic,macaddr=52:54:00:12:34:"$mac2",model=e1000 \
-device e1000,netdev=n2,mac=52:54:00:12:34:99 \
-watchdog i6300esb -watchdog-action poweroff \
-append "quiet rd.net.timeout.dhcp=3 panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console" \
- -initrd "$TESTDIR"/initramfs.testing
+ -initrd "$TESTDIR"/initramfs.testing || return 1
{
read -r OK
read -r IFACES
- } < "$TESTDIR"/client.img
+ } < "$TESTDIR"/marker.img
if [[ $OK != "OK" ]]; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
client_test "MULTINIC root=nfs BOOTIF=" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
- "ens2" || return 1
+ "enp0s1" || return 1
- client_test "MULTINIC root=nfs BOOTIF= ip=ens4:dhcp" \
+ client_test "MULTINIC root=nfs BOOTIF= ip=enp0s3:dhcp" \
00 01 02 \
- "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=ens3:dhcp" \
- "ens2 ens3" || return 1
+ "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=enp0s2:dhcp" \
+ "enp0s1 enp0s2" || return 1
# PXE Style BOOTIF= with dhcp root-path
client_test "MULTINIC root=dhcp BOOTIF=" \
00 01 02 \
"root=dhcp BOOTIF=52-54-00-12-34-02" \
- "ens4" || return 1
+ "enp0s3" || return 1
# Multinic case, where only one nic works
client_test "MULTINIC root=nfs ip=dhcp" \
FF 00 FE \
"root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
- "ens3" || return 1
+ "enp0s2" || return 1
# Require two interfaces
- client_test "MULTINIC root=nfs ip=ens3:dhcp ip=ens4:dhcp bootdev=ens3" \
+ client_test "MULTINIC root=nfs ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s2" \
00 01 02 \
- "root=nfs:192.168.50.1:/nfs/client ip=ens3:dhcp ip=ens4:dhcp bootdev=ens3" \
- "ens3 ens4" || return 1
+ "root=nfs:192.168.50.1:/nfs/client ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s2" \
+ "enp0s2 enp0s3" || return 1
# Require three interfaces with dhcp root-path
- client_test "MULTINIC root=dhcp ip=ens2:dhcp ip=ens3:dhcp ip=ens4:dhcp bootdev=ens4" \
+ client_test "MULTINIC root=dhcp ip=enp0s1:dhcp ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s3" \
00 01 02 \
- "root=dhcp ip=ens2:dhcp ip=ens3:dhcp ip=ens4:dhcp bootdev=ens4" \
- "ens2 ens3 ens4" || return 1
+ "root=dhcp ip=enp0s1:dhcp ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s3" \
+ "enp0s1 enp0s2 enp0s3" || return 1
client_test "MULTINIC bonding" \
00 01 02 \
- "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:ens2,ens3,ens4:mode=balance-rr" \
+ "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:enp0s1,enp0s2,enp0s3:mode=balance-rr" \
"bond0" || return 1
# bridge, where only one interface is actually connected
client_test "MULTINIC bridging" \
00 01 02 \
- "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:ens2,ens6,ens7" \
+ "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:enp0s1,enp0s5,enp0s6" \
"bridge0" || return 1
return 0
}
test_setup() {
- # Make server root
- dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
-
kernel=$KVERSION
(
mkdir -p "$TESTDIR"/overlay/source
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
--nomdadmconf \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ rm -fr "$TESTDIR"/overlay
+
+ dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=120
+ dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
+ declare -a disk_args=()
+ # shellcheck disable=SC2034
+ declare -i disk_index=0
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
- -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+ "${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
- grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1
- rm -fr "$TESTDIR"/overlay
+ grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1
# Make an overlay with needed tools for the test harness
(
inst_multiple poweroff shutdown
inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst_simple ./99-default.link /etc/systemd/network/99-default.link
)
+++ /dev/null
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
-ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
#!/bin/sh
+
+trap 'poweroff -f' EXIT
+
# don't let udev and this script step on eachother's toes
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
: > "/etc/udev/rules.d/$x"
inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
# create an initramfs that will create the target root filesystem.
. "$basedir"/dracut-init.sh
inst_multiple poweroff shutdown
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst_simple ./99-default.link /etc/systemd/network/99-default.link
)
}
# Provide rng device sourcing the hosts /dev/urandom and other standard parameters
-ARGS+=(-smp 2 -m 512 -nodefaults -vga none -display none -no-reboot -device virtio-rng-pci)
+ARGS+=(-M q35 -smp 2 -m 512 -nodefaults -vga none -display none -no-reboot -device virtio-rng-pci)
if ! [[ $* == *-daemonize* ]] && ! [[ $* == *-daemonize* ]]; then
ARGS+=(-serial stdio)