[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/9] automation: qemu-smoke-arm32.sh: Modify script to use ImageBuilder



On Thu, 22 Sep 2022, Michal Orzel wrote:
> Take an example from arm64 qemu test scripts and use ImageBuilder
> to generate u-boot script automatically. Calculating the addresses
> manually is quite error prone and also we will be able to benefit
> from using ImageBuilder when adding domUs to this test in the future.
> 
> Install and use u-boot from the debian package.
> Modify the script so that binaries are loaded from u-boot via tftp.

Great patch! It makes the test a lot better!


> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
> ---
>  automation/scripts/qemu-smoke-arm32.sh | 57 ++++++++++++--------------
>  1 file changed, 27 insertions(+), 30 deletions(-)
> 
> diff --git a/automation/scripts/qemu-smoke-arm32.sh 
> b/automation/scripts/qemu-smoke-arm32.sh
> index 530f3892fdd3..765facbe4d66 100755
> --- a/automation/scripts/qemu-smoke-arm32.sh
> +++ b/automation/scripts/qemu-smoke-arm32.sh
> @@ -4,7 +4,9 @@ set -ex
>  
>  export DEBIAN_FRONTENT=noninteractive
>  apt-get -qy update
> -apt-get -qy install --no-install-recommends device-tree-compiler \
> +apt-get -qy install --no-install-recommends u-boot-qemu \
> +                                            u-boot-tools \
> +                                            device-tree-compiler \
>                                              curl \
>                                              cpio
>  
> @@ -20,10 +22,6 @@ tar xvzf ../initrd.tar.gz
>  find . | cpio -H newc -o | gzip > ../initrd.gz
>  cd ..
>  
> -kernel=`stat -L --printf="%s" vmlinuz`
> -initrd=`stat -L --printf="%s" initrd.gz`
> -
> -# For Xen, we need a couple of more node. Dump the DT from QEMU and add them
>  # 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 \
> @@ -36,31 +34,31 @@ curl -fsSLO 
> https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
>     -display none \
>     -machine dumpdtb=virt.dtb
>  
> -dtc -I dtb -O dts virt.dtb > virt.dts
> +# ImageBuilder
> +echo 'MEMORY_START="0x40000000"
> +MEMORY_END="0x80000000"
> +
> +DEVICE_TREE="virt.dtb"
> +XEN="xen"
> +DOM0_KERNEL="vmlinuz"
> +DOM0_RAMDISK="initrd.gz"
> +DOM0_CMD="console=hvc0 earlyprintk clk_ignore_unused root=/dev/ram0 
> rdinit=/bin/sh"
> +XEN_CMD="console=dtuart dom0_mem=512M bootscrub=0"

This is missing dtuart=/pl011@9000000 compared to the original


> +NUM_DOMUS=0
> +
> +LOAD_CMD="tftpb"
> +BOOT_CMD="bootm"

"bootm" because "booti" is not available on arm32, right?


> +UBOOT_SOURCE="boot.source"
> +UBOOT_SCRIPT="boot.scr"' > config
>  
> -cat >> virt.dts << EOF
> -/ {
> -     chosen {
> -             #address-cells = <0x2>;
> -             #size-cells = <0x2>;
> -             stdout-path = "/pl011@9000000";
> -        xen,xen-bootargs = "console=dtuart dtuart=/pl011@9000000 
> dom0_mem=512M bootscrub=0";
> -             xen,dom0-bootargs = "console=tty0 console=hvc0 earlyprintk 
> clk_ignore_unused root=/dev/ram0 rdinit=/bin/sh";
> -             dom0 {
> -                     compatible = "xen,linux-zimage", "xen,multiboot-module";
> -                     reg = <0x0 0x1000000 0x0 $kernel>;
> -             };
> -        dom0-ramdisk {
> -                     compatible = "xen,linux-initrd", "xen,multiboot-module";
> -                     reg = <0x0 0x3200000 0x0 $initrd>;
> -             };
> -     };
> -};
> -EOF
> -dtc -I dts -O dtb virt.dts > virt.dtb
> +rm -rf imagebuilder
> +git clone https://gitlab.com/ViryaOS/imagebuilder
> +bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config
>  
>  rm -f smoke.serial
>  set +e
> +echo "  virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \
>  timeout -k 1 240 \
>  ./qemu-system-arm \
>     -machine virt \
> @@ -70,11 +68,10 @@ timeout -k 1 240 \
>     -serial stdio \
>     -monitor none \
>     -display none \
> -   -dtb virt.dtb \
>     -no-reboot \
> -   -kernel ./xen \
> -   -device loader,file=./vmlinuz,addr=0x1000000 \
> -   -device loader,file=./initrd.gz,addr=0x3200000 |& tee smoke.serial
> +   -device virtio-net-pci,netdev=n0 \
> +   -netdev user,id=n0,tftp=./ \
> +   -bios /usr/lib/u-boot/qemu_arm/u-boot.bin |& tee smoke.serial
>  
>  set -e
>  (grep -q "^/ #" smoke.serial) || exit 1
> -- 
> 2.25.1
> 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.