tests: Search multiple places for aarch64 EDK2 bios image
Apparently qemu's ARM virt machine needs to be explicitly given a firmware image, rather than just supplying a sane default. Unfortunately the EDK2 firmware image we need isn't in the same place on all host distros. Currently the test scripts hardcode the Debian location, meaning it will break on hosts that have it somewhere else. This patch searches multiple locations for the firmware, and creates a local link during the asset build phase, which the tests can then use. For now it only searches the locations used by Debian and Fedora, but that's a small improvement in robustness already, and can be later improved further if we need to. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
2297637251
commit
b44e16ed6c
6 changed files with 30 additions and 13 deletions
1
test/.gitignore
vendored
1
test/.gitignore
vendored
|
@ -2,3 +2,4 @@ perf.js
|
||||||
test_logs/
|
test_logs/
|
||||||
mbuto/
|
mbuto/
|
||||||
*.img
|
*.img
|
||||||
|
QEMU_EFI.fd
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# Author: David Gibson <david@gibson.dropbear.id.au>
|
# Author: David Gibson <david@gibson.dropbear.id.au>
|
||||||
|
|
||||||
DOWNLOAD_ASSETS = mbuto
|
DOWNLOAD_ASSETS = mbuto
|
||||||
LOCAL_ASSETS = mbuto.img
|
LOCAL_ASSETS = mbuto.img QEMU_EFI.fd
|
||||||
|
|
||||||
ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS)
|
ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS)
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ mbuto:
|
||||||
mbuto.img: passt.mbuto mbuto
|
mbuto.img: passt.mbuto mbuto
|
||||||
./mbuto/mbuto -p ./$< -c lz4 -f $@
|
./mbuto/mbuto -p ./$< -c lz4 -f $@
|
||||||
|
|
||||||
|
QEMU_EFI.fd:
|
||||||
|
./find-arm64-firmware.sh $@
|
||||||
|
|
||||||
check: assets
|
check: assets
|
||||||
./run
|
./run
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init
|
||||||
host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local
|
host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host apt-get update
|
host apt-get update
|
||||||
|
@ -222,7 +222,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init
|
||||||
host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local
|
host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
||||||
sleep 2
|
sleep 2
|
||||||
host apt-get update
|
host apt-get update
|
||||||
host apt-get -y install make gcc netcat-openbsd
|
host apt-get -y install make gcc netcat-openbsd
|
||||||
|
@ -296,7 +296,7 @@ host wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocl
|
||||||
host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g'
|
host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g'
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio
|
||||||
sleep 2
|
sleep 2
|
||||||
host apt-get update
|
host apt-get update
|
||||||
host apt-get -y install make gcc netcat-openbsd
|
host apt-get -y install make gcc netcat-openbsd
|
||||||
|
|
|
@ -158,7 +158,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -213,7 +213,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -268,7 +268,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -323,7 +323,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -378,7 +378,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -433,7 +433,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -488,7 +488,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
@ -543,7 +543,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se
|
||||||
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
sleep 2
|
sleep 2
|
||||||
host yum -y install make gcc nmap-ncat
|
host yum -y install make gcc nmap-ncat
|
||||||
|
|
|
@ -130,7 +130,7 @@ host wget http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openS
|
||||||
host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g'
|
host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g'
|
||||||
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/
|
||||||
|
|
||||||
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio
|
host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio
|
||||||
host PS1='$ '
|
host PS1='$ '
|
||||||
host ip link set enp0s1 up
|
host ip link set enp0s1 up
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
13
test/find-arm64-firmware.sh
Executable file
13
test/find-arm64-firmware.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
LOCATIONS="/usr/share/qemu-efi-aarch64 /usr/share/edk2/aarch64"
|
||||||
|
|
||||||
|
for l in $LOCATIONS; do
|
||||||
|
if [ -f "$l/QEMU_EFI.fd" ]; then
|
||||||
|
ln -s "$l/QEMU_EFI.fd" "$1"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Couldn't find QEMU_EFI.fd" >&2
|
||||||
|
exit 1
|
Loading…
Reference in a new issue