|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/3] automation: Add arm32 dom0less testing
Hi Stefano,
On 14/02/2023 01:37, Stefano Stabellini wrote:
>
>
> On Mon, 13 Feb 2023, Michal Orzel wrote:
>> At the moment, we only perform a single arm32 test in our CI, checking
>> whether dom0 boots successfully or not. This is mostly because we do not
>> have any arm32 runners and we only execute a hypervisor only build.
>>
>> In order not to leave the arm32 testing in such a poor state, add a
>> script qemu-smoke-dom0less-arm32.sh to start testing true dom0less
>> configuration, in which case we do not need a dom0 with a toolstack.
>>
>> The script is mostly based on the one used for dom0 arm32 testing as well
>> as the one used for dom0less arm64 testing. We obtain Debian Bullseye
>> kernel and Alpine Linux busybox-based rootfs. Depending on the test
>> variant, we prepare a test case contained within domU_check variable,
>> that will be executed as part of /init script.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
>> ---
>> automation/gitlab-ci/test.yaml | 16 ++++
>> .../scripts/qemu-smoke-dom0less-arm32.sh | 89 +++++++++++++++++++
>> 2 files changed, 105 insertions(+)
>> create mode 100755 automation/scripts/qemu-smoke-dom0less-arm32.sh
>>
>> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
>> index ce543ef5c0ef..84ab1fee50a4 100644
>> --- a/automation/gitlab-ci/test.yaml
>> +++ b/automation/gitlab-ci/test.yaml
>> @@ -210,6 +210,22 @@ qemu-smoke-dom0-arm32-gcc-debug:
>> - *arm32-test-needs
>> - debian-unstable-gcc-arm32-debug
>>
>> +qemu-smoke-dom0less-arm32-gcc:
>> + extends: .qemu-arm32
>> + script:
>> + - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee
>> ${LOGFILE}
>> + needs:
>> + - *arm32-test-needs
>> + - debian-unstable-gcc-arm32
>> +
>> +qemu-smoke-dom0less-arm32-gcc-debug:
>> + extends: .qemu-arm32
>> + script:
>> + - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee
>> ${LOGFILE}
>> + needs:
>> + - *arm32-test-needs
>> + - debian-unstable-gcc-arm32-debug
>> +
>> qemu-alpine-x86_64-gcc:
>> extends: .qemu-x86-64
>> script:
>> diff --git a/automation/scripts/qemu-smoke-dom0less-arm32.sh
>> b/automation/scripts/qemu-smoke-dom0less-arm32.sh
>> new file mode 100755
>> index 000000000000..c81529cbbfd0
>> --- /dev/null
>> +++ b/automation/scripts/qemu-smoke-dom0less-arm32.sh
>> @@ -0,0 +1,89 @@
>> +#!/bin/bash
>> +
>> +set -ex
>> +
>> +test_variant=$1
>> +
>> +cd binaries
>> +# Use the kernel from Debian
>> +curl --fail --silent --show-error --location --output vmlinuz
>> https://deb.debian.org/debian/dists/bullseye/main/installer-armhf/current/images/netboot/vmlinuz
>> +# Use a tiny initrd based on busybox from Alpine Linux
>> +curl --fail --silent --show-error --location --output initrd.tar.gz
>> https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/armhf/alpine-minirootfs-3.15.1-armhf.tar.gz
>> +
>> +if [ -z "${test_variant}" ]; then
>> + passed="generic test passed"
>> + domU_check="
>> +echo \"${passed}\"
>> +"
>> +fi
>> +
>> +# domU rootfs
>> +mkdir rootfs
>> +cd rootfs
>> +tar xvzf ../initrd.tar.gz
>> +echo "#!/bin/sh
>> +
>> +mount -t proc proc /proc
>> +mount -t sysfs sysfs /sys
>> +mount -t devtmpfs devtmpfs /dev
>> +${domU_check}
>> +/bin/sh" > init
>> +chmod +x init
>> +find . | cpio -H newc -o | gzip > ../initrd.gz
>> +cd ..
>> +
>> +# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
>> +curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
>> +./qemu-system-arm \
>> + -machine virt \
>> + -machine virtualization=true \
>> + -smp 4 \
>> + -m 1024 \
>> + -serial stdio \
>> + -monitor none \
>> + -display none \
>> + -machine dumpdtb=virt.dtb
>> +
>> +# ImageBuilder
>> +echo 'MEMORY_START="0x40000000"
>> +MEMORY_END="0x80000000"
>> +
>> +DEVICE_TREE="virt.dtb"
>> +XEN="xen"
>> +XEN_CMD="console=dtuart bootscrub=0"
>> +
>> +DOMU_KERNEL[0]="vmlinuz"
>> +DOMU_RAMDISK[0]="initrd.gz"
>> +DOMU_MEM[0]="512"
>> +NUM_DOMUS=1
>
> Since we are at it I would prefer to create both dom0 and a domU to make
> the test more interesting. The following works on gitlab-ci on top of
> this patch. Would you be up for adding it to this patch?
This is exactly what I had in my initial approach. However, because this would
not differ
much from what we have in dom0 arm32 testing, I decided to go for true dom0less
configuration.
I'm ok to always boot dom0less domU with dom0. In this case I might add an
additional test to
run a true dom0less as well.
~Michal
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |