7dcd979098
This commit adds four test cases for Grub: - Grub i386 legacy BIOS - Grub i386 UEFI - Grub x86-64 UEFI - Grub AArch64 UEFI There is some overlap with the ISO9660 filesystem test cases, some of which use Grub, but we found it relevant to have separate test cases for Grub, which were useful to test Grub in non-ISO9660 situations. The Grub ARM UEFI case is not tested, as it requires Grub to be chain-loaded by U-Boot. Implementing this test case is left as an exercise for the reader. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [yann.morin.1998@free.fr: - use EDK2 to build the OVMF blurbs from source, instead of the binary blobs - add host-dosfstools ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
157 lines
5.6 KiB
Python
157 lines
5.6 KiB
Python
import os
|
|
|
|
import infra.basetest
|
|
|
|
|
|
class TestGrubi386BIOS(infra.basetest.BRTest):
|
|
config = \
|
|
"""
|
|
BR2_x86_core2=y
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
|
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y
|
|
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}"
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
|
|
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg"
|
|
BR2_LINUX_KERNEL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
|
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
|
|
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
|
BR2_TARGET_ROOTFS_EXT2=y
|
|
BR2_TARGET_GRUB2=y
|
|
BR2_TARGET_GRUB2_I386_PC=y
|
|
BR2_TARGET_GRUB2_INSTALL_TOOLS=y
|
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
|
""".format(infra.filepath("tests/boot/test_grub/post-build.sh"))
|
|
|
|
def test_run(self):
|
|
hda = os.path.join(self.builddir, "images", "disk.img")
|
|
self.emulator.boot(arch="i386", options=["-hda", hda])
|
|
self.emulator.login()
|
|
|
|
|
|
class TestGrubi386EFI(infra.basetest.BRTest):
|
|
config = \
|
|
"""
|
|
BR2_x86_core2=y
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
|
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y
|
|
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}"
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh"
|
|
BR2_LINUX_KERNEL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
|
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
|
|
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
|
BR2_PACKAGE_EFIVAR=y
|
|
BR2_TARGET_ROOTFS_EXT2=y
|
|
BR2_TARGET_EDK2=y
|
|
BR2_TARGET_GRUB2=y
|
|
BR2_TARGET_GRUB2_I386_EFI=y
|
|
BR2_TARGET_GRUB2_INSTALL_TOOLS=y
|
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
|
BR2_PACKAGE_HOST_MTOOLS=y
|
|
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
|
""".format(infra.filepath("tests/boot/test_grub/post-build.sh"))
|
|
|
|
def test_run(self):
|
|
hda = os.path.join(self.builddir, "images", "disk.img")
|
|
bios = os.path.join(self.builddir, "images", "OVMF.fd")
|
|
self.emulator.boot(arch="i386", options=["-bios", bios, "-hda", hda])
|
|
self.emulator.login()
|
|
|
|
cmd = "modprobe efivarfs"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "mount -t efivarfs none /sys/firmware/efi/efivars"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "efivar -l"
|
|
self.assertRunOk(cmd)
|
|
|
|
|
|
class TestGrubX8664EFI(infra.basetest.BRTest):
|
|
config = \
|
|
"""
|
|
BR2_x86_64=y
|
|
BR2_x86_corei7=y
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
|
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_STABLE=y
|
|
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}"
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh"
|
|
BR2_LINUX_KERNEL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
|
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
|
|
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
|
BR2_PACKAGE_EFIVAR=y
|
|
BR2_TARGET_ROOTFS_EXT2=y
|
|
BR2_TARGET_EDK2=y
|
|
BR2_TARGET_GRUB2=y
|
|
BR2_TARGET_GRUB2_X86_64_EFI=y
|
|
BR2_TARGET_GRUB2_INSTALL_TOOLS=y
|
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
|
BR2_PACKAGE_HOST_MTOOLS=y
|
|
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
|
""".format(infra.filepath("tests/boot/test_grub/post-build.sh"))
|
|
|
|
def test_run(self):
|
|
hda = os.path.join(self.builddir, "images", "disk.img")
|
|
bios = os.path.join(self.builddir, "images", "OVMF.fd")
|
|
self.emulator.boot(arch="x86_64", options=["-bios", bios, "-hda", hda])
|
|
self.emulator.login()
|
|
|
|
cmd = "modprobe efivarfs"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "mount -t efivarfs none /sys/firmware/efi/efivars"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "efivar -l"
|
|
self.assertRunOk(cmd)
|
|
|
|
|
|
class TestGrubAArch64EFI(infra.basetest.BRTest):
|
|
config = \
|
|
"""
|
|
BR2_aarch64=y
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="{post_image}"
|
|
BR2_LINUX_KERNEL=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.18"
|
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
|
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{linux_fragment}"
|
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
|
BR2_PACKAGE_EFIVAR=y
|
|
BR2_TARGET_ROOTFS_EXT2=y
|
|
BR2_TARGET_EDK2=y
|
|
BR2_TARGET_GRUB2=y
|
|
BR2_PACKAGE_HOST_GENIMAGE=y
|
|
BR2_PACKAGE_HOST_MTOOLS=y
|
|
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
|
""".format(post_image=infra.filepath("tests/boot/test_grub/post-image-aarch64-efi.sh"),
|
|
linux_fragment=infra.filepath("tests/boot/test_grub/linux-aarch64-efi.config"))
|
|
|
|
def test_run(self):
|
|
hda = os.path.join(self.builddir, "images", "disk.img")
|
|
bios = os.path.join(self.builddir, "images", "QEMU_EFI.fd")
|
|
self.emulator.boot(arch="aarch64", options=["-M", "virt", "-cpu", "cortex-a53", "-bios", bios, "-hda", hda])
|
|
self.emulator.login()
|
|
|
|
cmd = "modprobe efivarfs"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "mount -t efivarfs none /sys/firmware/efi/efivars"
|
|
self.assertRunOk(cmd)
|
|
|
|
cmd = "efivar -l"
|
|
self.assertRunOk(cmd)
|