From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Gibson To: passt-dev@passt.top Subject: [PATCH 07/15] tests: Search multiple places for aarch64 EDK2 bios image Date: Wed, 06 Jul 2022 17:29:01 +1000 Message-ID: <20220706072909.596805-8-david@gibson.dropbear.id.au> In-Reply-To: <20220706072909.596805-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8234500604330332136==" --===============8234500604330332136== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 --- test/.gitignore | 1 + test/Makefile | 5 ++++- test/distro/debian | 6 +++--- test/distro/fedora | 16 ++++++++-------- test/distro/opensuse | 2 +- test/find-arm64-firmware.sh | 13 +++++++++++++ 6 files changed, 30 insertions(+), 13 deletions(-) create mode 100755 test/find-arm64-firmware.sh diff --git a/test/.gitignore b/test/.gitignore index 895c3ae..360da92 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -2,3 +2,4 @@ perf.js test_logs/ mbuto/ *.img +QEMU_EFI.fd diff --git a/test/Makefile b/test/Makefile index b72280d..9990841 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,7 +6,7 @@ # Author: David Gibson =20 DOWNLOAD_ASSETS =3D mbuto -LOCAL_ASSETS =3D mbuto.img +LOCAL_ASSETS =3D mbuto.img QEMU_EFI.fd =20 ASSETS =3D $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) =20 @@ -18,6 +18,9 @@ mbuto: mbuto.img: passt.mbuto mbuto ./mbuto/mbuto -p ./$< -c lz4 -f $@ =20 +QEMU_EFI.fd: + ./find-arm64-firmware.sh $@ + check: assets ./run =20 diff --git a/test/distro/debian b/test/distro/debian index ce3b9e7..9992b69 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -136,7 +136,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-in= it host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaul= ts -no-reboot -nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model= =3Dvirtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -= nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio host PS1=3D'$ ' sleep 2 host apt-get update @@ -222,7 +222,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-in= it host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaul= ts -no-reboot -nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model= =3Dvirtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -= nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio sleep 2 host apt-get update 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(a).service -e= 's/ExecStart=3D.*/ExecStart=3D\/sbin\/agetty --autologin root -8 --keep-baud= 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaul= ts -no-reboot -nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model= =3Dvirtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -= nographic -vga none __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd diff --git a/test/distro/fedora b/test/distro/fedora index 2a8e3e9..9fbba6b 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -158,7 +158,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -213,7 +213,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -268,7 +268,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -323,7 +323,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -378,7 +378,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -433,7 +433,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -488,7 +488,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -543,7 +543,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/sys= tem/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.ser= vice host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virti= o-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio -device virtio-rng-pci host PS1=3D'$ ' sleep 2 host yum -y install make gcc nmap-ncat diff --git a/test/distro/opensuse b/test/distro/opensuse index 18e1c81..f2da9fe 100644 --- a/test/distro/opensuse +++ b/test/distro/opensuse @@ -130,7 +130,7 @@ host wget http://download.opensuse.org/ports/aarch64/tumb= leweed/appliances/openS host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty(= a).service -e 's/ExecStart=3D.*/ExecStart=3D\/sbin\/agetty --timeout 5000 --a= utologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ =20 -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -= serial stdio __IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bi= os __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __= IMG__ -net socket,fd=3D5 -net nic,model=3Dvirtio host PS1=3D'$ ' host ip link set enp0s1 up sleep 10 diff --git a/test/find-arm64-firmware.sh b/test/find-arm64-firmware.sh new file mode 100755 index 0000000..3182620 --- /dev/null +++ b/test/find-arm64-firmware.sh @@ -0,0 +1,13 @@ +#! /bin/sh + +LOCATIONS=3D"/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 --=20 2.36.1 --===============8234500604330332136==--