From 9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 3 Jun 2024 15:54:25 +0200 Subject: Adding upstream version 060+5. Signed-off-by: Daniel Baumann --- test/TEST-18-UEFI/Makefile | 1 + test/TEST-18-UEFI/test-init.sh | 23 +++++++++++ test/TEST-18-UEFI/test.sh | 92 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 test/TEST-18-UEFI/Makefile create mode 100755 test/TEST-18-UEFI/test-init.sh create mode 100755 test/TEST-18-UEFI/test.sh (limited to 'test/TEST-18-UEFI') diff --git a/test/TEST-18-UEFI/Makefile b/test/TEST-18-UEFI/Makefile new file mode 100644 index 0000000..2dcab81 --- /dev/null +++ b/test/TEST-18-UEFI/Makefile @@ -0,0 +1 @@ +-include ../Makefile.testdir diff --git a/test/TEST-18-UEFI/test-init.sh b/test/TEST-18-UEFI/test-init.sh new file mode 100755 index 0000000..03966d2 --- /dev/null +++ b/test/TEST-18-UEFI/test-init.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +export PATH=/usr/sbin:/usr/bin:/sbin:/bin + +[ -e /proc/self/mounts ] \ + || (mkdir -p /proc && mount -t proc -o nosuid,noexec,nodev proc /proc) + +grep -q '^sysfs /sys sysfs' /proc/self/mounts \ + || (mkdir -p /sys && mount -t sysfs -o nosuid,noexec,nodev sysfs /sys) + +grep -q '^devtmpfs /dev devtmpfs' /proc/self/mounts \ + || (mkdir -p /dev && mount -t devtmpfs -o mode=755,noexec,nosuid,strictatime devtmpfs /dev) + +grep -q '^tmpfs /run tmpfs' /proc/self/mounts \ + || (mkdir -p /run && mount -t tmpfs -o mode=755,noexec,nosuid,strictatime tmpfs /run) + +: > /dev/watchdog + +exec > /dev/console 2>&1 + +echo "made it to the rootfs! Powering down." +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb +poweroff -f diff --git a/test/TEST-18-UEFI/test.sh b/test/TEST-18-UEFI/test.sh new file mode 100755 index 0000000..4191fed --- /dev/null +++ b/test/TEST-18-UEFI/test.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# shellcheck disable=SC2034 +TEST_DESCRIPTION="UEFI boot" + +# Linux kernel requirements +# CONFIG_BLK_DEV_INITRD for initramfs +# CONFIG_EFI_HANDOVER_PROTOCOL for ovmf (Open Virtual Machine Firmware) +# CONFIG_SATA_AHCI for ahci.ko +# CONFIG_BLK_DEV_SD for sd_mod.ko +# CONFIG_SQUASHFS_ZLIB for squashfs.ko + +ovmf_code() { + for path in \ + "/usr/share/OVMF/OVMF_CODE.fd" \ + "/usr/share/edk2/x64/OVMF_CODE.fd" \ + "/usr/share/edk2-ovmf/OVMF_CODE.fd" \ + "/usr/share/qemu/ovmf-x86_64-4m.bin"; do + [[ -s $path ]] && echo -n "$path" && return + done +} + +test_check() { + [[ -n "$(ovmf_code)" ]] +} + +KVERSION="${KVERSION-$(uname -r)}" + +test_marker_reset() { + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 +} + +test_marker_check() { + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/marker.img + return $? +} + +test_dracut() { + TEST_DRACUT_ARGS+=" --local --no-hostonly --no-early-microcode --add test --kver $KVERSION" + + # shellcheck disable=SC2162 + IFS=' ' read -a TEST_DRACUT_ARGS_ARRAY <<< "$TEST_DRACUT_ARGS" + + "$DRACUT" "$@" \ + --kernel-cmdline "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot selinux=0 console=ttyS0,115200n81 $DEBUGFAIL" \ + "${TEST_DRACUT_ARGS_ARRAY[@]}" || return 1 +} + +test_run() { + declare -a disk_args=() + declare -i disk_index=1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/squashfs.img root + + test_marker_reset + "$testdir"/run-qemu "${disk_args[@]}" -net none \ + -drive file=fat:rw:"$TESTDIR"/ESP,format=vvfat,label=EFI \ + -global driver=cfi.pflash01,property=secure,value=on \ + -drive if=pflash,format=raw,unit=0,file="$(ovmf_code)",readonly=on + test_marker_check || return 1 +} + +test_setup() { + # Create what will eventually be our root filesystem + "$DRACUT" --local --no-hostonly --no-early-microcode --nofscks \ + --tmpdir "$TESTDIR" --keep --modules "test-root" --include ./test-init.sh /sbin/init \ + "$TESTDIR"/tmp-initramfs.root "$KVERSION" || return 1 + + mkdir -p "$TESTDIR"/dracut.*/initramfs/proc + mksquashfs "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/squashfs.img -quiet -no-progress + + mkdir -p "$TESTDIR"/ESP/EFI/BOOT + + if [ -f "/usr/lib/gummiboot/linuxx64.efi.stub" ]; then + TEST_DRACUT_ARGS+=" --uefi-stub /usr/lib/gummiboot/linuxx64.efi.stub " + fi + + mkdir -p "$TESTDIR"/ESP/EFI/BOOT + test_dracut \ + --modules 'rootfs-block test' \ + --kernel-cmdline 'root=/dev/sdc ro rd.skipfsck rootfstype=squashfs' \ + --drivers 'ahci sd_mod squashfs' \ + --uefi \ + "$TESTDIR"/ESP/EFI/BOOT/BOOTX64.efi +} + +test_cleanup() { + return 0 +} + +# shellcheck disable=SC1090 +. "$testdir"/test-functions -- cgit v1.2.3