forked from xen-project/xen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqemu-smoke-dom0-arm32.sh
executable file
·99 lines (81 loc) · 2.31 KB
/
qemu-smoke-dom0-arm32.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash
set -ex
serial_log="$(pwd)/smoke.serial"
cd binaries
mkdir rootfs
cd rootfs
tar xvf ../xen-image-minimal-qemuarm.tar.bz2
mkdir -p ./root
echo "name=\"test\"
memory=400
vcpus=1
kernel=\"/root/zImage\"
ramdisk=\"/root/initrd.cpio.gz\"
extra=\"console=hvc0 root=/dev/ram0 rdinit=/bin/sh\"
" > root/test.cfg
echo "#!/bin/bash
xl list
xl create -c /root/test.cfg
" > ./root/xen.start
echo "bash /root/xen.start" >> ./etc/init.d/xen-watchdog
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
mkdir rootfs
cd rootfs
tar xvzf ../initrd.tar.gz
find . | cpio -H newc -o | gzip > ../root/initrd.cpio.gz
cd ..
rm -rf rootfs
rm initrd.tar.gz
cp ../zImage ./root
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 2048 \
-serial stdio \
-monitor none \
-display none \
-machine dumpdtb=virt.dtb
# XXX disable pci to avoid Linux hang
fdtput virt.dtb -p -t s /pcie@10000000 status disabled
# ImageBuilder
echo 'MEMORY_START="0x40000000"
MEMORY_END="0xC0000000"
DEVICE_TREE="virt.dtb"
XEN="xen-qemuarm"
DOM0_KERNEL="zImage"
DOM0_RAMDISK="initrd.gz"
DOM0_CMD="console=hvc0 earlyprintk clk_ignore_unused root=/dev/ram0 rdinit=/sbin/init"
XEN_CMD="console=dtuart dom0_mem=1024M bootscrub=0 console_timestamps=boot"
NUM_DOMUS=0
LOAD_CMD="tftpb"
BOOT_CMD="bootz"
UBOOT_SOURCE="boot.source"
UBOOT_SCRIPT="boot.scr"' > config
rm -rf imagebuilder
git clone https://gitlab.com/ViryaOS/imagebuilder
bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config
rm -f ${serial_log}
set +e
echo " virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \
timeout -k 1 720 \
./qemu-system-arm \
-machine virt \
-machine virtualization=true \
-smp 4 \
-m 2048 \
-serial stdio \
-monitor none \
-display none \
-no-reboot \
-device virtio-net-pci,netdev=n0 \
-netdev user,id=n0,tftp=./ \
-bios /usr/lib/u-boot/qemu_arm/u-boot.bin |& \
tee ${serial_log} | sed 's/\r//'
set -e
(grep -q "Domain-0" ${serial_log} && grep -q "^/ #" ${serial_log}) || exit 1
exit 0