CI: avoid repacking initrd as part of the test job

Use the new test-artifacts which provide rootfs.cpio.gz rather than
initrd.tar.gz.  rootfs.cpio.gz also has all the necessary top-level
directories, and includes the rc_verbose setting, so these modifications can
be dropped.

Having that, do not repack the whole initrd, but only pack modified
files and rely on Linux handling of concatenated archives.
This allows packing just test-related files (which includes the whole
toolstack), instead of the whole initrd.

For xilinx-smoke-dom0-x86_64.sh, this involves instructing grub not to unzip
the archive, as doing so corrupts it.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
This commit is contained in:
Marek Marczykowski-Górecki authored and Andrew Cooper committed 2025-04-14 19:20:58 +01:00
1 parent 9caca83404
commit 786f323809
7 files changed
+61 -81

No files matched your search

+5 -3
View File
@@ -11,7 +11,9 @@
- project: xen-project/hardware/test-artifacts - project: xen-project/hardware/test-artifacts
job: linux-6.6.86-arm64 job: linux-6.6.86-arm64
ref: master ref: master
- alpine-3.18-arm64-rootfs-export - project: xen-project/hardware/test-artifacts
job: alpine-3.18-arm64-rootfs
ref: master
- qemu-system-aarch64-6.0.0-arm64-export - qemu-system-aarch64-6.0.0-arm64-export
.arm32-test-needs: &arm32-test-needs .arm32-test-needs: &arm32-test-needs
@@ -22,7 +24,7 @@
job: linux-6.6.56-x86_64 job: linux-6.6.56-x86_64
ref: master ref: master
- project: xen-project/hardware/test-artifacts - project: xen-project/hardware/test-artifacts
job: x86_64-rootfs-alpine-3.18 job: alpine-3.18-x86_64-rootfs
ref: master ref: master
.qemu-arm64: .qemu-arm64:
@@ -243,7 +245,7 @@ xilinx-smoke-dom0-x86_64-gcc-debug-argo:
job: x86_64-kernel-linux-6.6.56 job: x86_64-kernel-linux-6.6.56
ref: master ref: master
- project: xen-project/hardware/test-artifacts - project: xen-project/hardware/test-artifacts
job: x86_64-rootfs-alpine-3.18 job: alpine-3.18-x86_64-rootfs
ref: master ref: master
- project: xen-project/hardware/test-artifacts - project: xen-project/hardware/test-artifacts
job: x86_64-argo-linux-6.6.56 job: x86_64-argo-linux-6.6.56
+6 -10
View File
@@ -28,16 +28,14 @@ cd initrd
find . | cpio -H newc -o | gzip > ../domU-rootfs.cpio.gz find . | cpio -H newc -o | gzip > ../domU-rootfs.cpio.gz
cd .. cd ..
# initrd.tar.gz is Dom0 rootfs # Dom0 rootfs
cp rootfs.cpio.gz dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xvzf ../initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
cp -ar ../dist/install/* . cp -ar ../dist/install/* .
mkdir -p root etc/local.d
mv ../domU-rootfs.cpio.gz ./root mv ../domU-rootfs.cpio.gz ./root
cp ../bzImage ./root cp ../bzImage ./root
echo "name=\"domU\" echo "name=\"domU\"
@@ -60,9 +58,7 @@ xl -vvv create -c /root/domU.cfg
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf find . | cpio -H newc -o | gzip >> ../dom0-rootfs.cpio.gz
# rebuild Dom0 rootfs
find . | cpio -H newc -o | gzip > ../dom0-rootfs.cpio.gz
cd ../.. cd ../..
cat >> binaries/pxelinux.0 << EOF cat >> binaries/pxelinux.0 << EOF
+6 -8
View File
@@ -27,15 +27,14 @@ cd initrd
find . | cpio -H newc -o | gzip > ../domU-rootfs.cpio.gz find . | cpio -H newc -o | gzip > ../domU-rootfs.cpio.gz
cd .. cd ..
# Dom0 rootfs
cp rootfs.cpio.gz dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xvzf ../initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
cp -ar ../dist/install/* . cp -ar ../dist/install/* .
mkdir -p etc/local.d root
mv ../domU-rootfs.cpio.gz ./root mv ../domU-rootfs.cpio.gz ./root
cp ../Image ./root cp ../Image ./root
echo "name=\"domU\" echo "name=\"domU\"
@@ -56,8 +55,7 @@ xl -vvv create -c /root/domU.cfg
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf find . | cpio -H newc -o | gzip >> ../dom0-rootfs.cpio.gz
find . | cpio -H newc -o | gzip > ../dom0-rootfs.cpio.gz
cd ../.. cd ../..
# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded # XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
@@ -114,16 +114,14 @@ cd initrd
find . | cpio --create --format='newc' | gzip > ../binaries/initrd find . | cpio --create --format='newc' | gzip > ../binaries/initrd
cd .. cd ..
# DOM0 rootfs # Dom0 rootfs
cp binaries/rootfs.cpio.gz binaries/dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xzf ../binaries/initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
cp -ar ../binaries/dist/install/* . cp -ar ../binaries/dist/install/* .
mkdir -p etc/local.d
echo "#!/bin/bash echo "#!/bin/bash
@@ -142,8 +140,7 @@ xl network-attach 1 type=vif
${dom0_check} ${dom0_check}
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf find . | cpio -H newc -o | gzip >> ../binaries/dom0-rootfs.cpio.gz
find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
cd .. cd ..
# ImageBuilder # ImageBuilder
+12 -20
View File
@@ -164,16 +164,13 @@ ${domU_extra_config}
" "
if [ -n "$domU_check" ]; then if [ -n "$domU_check" ]; then
# DomU # DomU rootfs
cp binaries/rootfs.cpio.gz binaries/domU-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
# fakeroot is needed to preserve device nodes in rootless podman container mkdir -p etc/local.d
fakeroot -s ../fakeroot-save tar xzf ../binaries/initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
echo "#!/bin/sh echo "#!/bin/sh
echo 8 > /proc/sys/kernel/printk echo 8 > /proc/sys/kernel/printk
@@ -181,26 +178,22 @@ echo 8 > /proc/sys/kernel/printk
${domU_check} ${domU_check}
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf
echo "domU Welcome to Alpine Linux echo "domU Welcome to Alpine Linux
Kernel \r on an \m (\l) Kernel \r on an \m (\l)
" > etc/issue " > etc/issue
find . | fakeroot -i ../fakeroot-save cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz find . | cpio -H newc -o | gzip >> ../binaries/domU-rootfs.cpio.gz
cd .. cd ..
rm -rf rootfs rm -rf rootfs
fi fi
# DOM0 rootfs # Dom0 rootfs
cp binaries/rootfs.cpio.gz binaries/dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
fakeroot -s ../fakeroot-save tar xzf ../binaries/initrd.tar.gz mkdir -p boot etc/local.d
mkdir boot
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
cp -ar ../binaries/dist/install/* . cp -ar ../binaries/dist/install/* .
cp -ar ../binaries/tests . cp -ar ../binaries/tests .
cp -a ../automation/scripts/run-tools-tests tests/ cp -a ../automation/scripts/run-tools-tests tests/
@@ -237,7 +230,6 @@ fi
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "$domU_config" > etc/xen/domU.cfg echo "$domU_config" > etc/xen/domU.cfg
echo "rc_verbose=yes" >> etc/rc.conf
echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
echo "QEMU_XEN=/bin/false" >> etc/default/xencommons echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
mkdir -p var/log/xen/console mkdir -p var/log/xen/console
@@ -245,7 +237,7 @@ cp ../binaries/bzImage boot/vmlinuz
if [ -n "$domU_check" ]; then if [ -n "$domU_check" ]; then
cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
fi fi
find . | fakeroot -i ../fakeroot-save cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz find . | cpio -H newc -o | gzip >> ../binaries/dom0-rootfs.cpio.gz
cd .. cd ..
+14 -13
View File
@@ -80,6 +80,7 @@ argo-exec -l -p 28333 -- /bin/echo
" "
copy_dom0_files () copy_dom0_files ()
{ {
mkdir -p root usr/local/lib usr/local/bin
cp "${WORKDIR}/binaries/xen-argo.ko" "root/" cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/" cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/" cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
@@ -89,12 +90,13 @@ else
fatal "Unknown test: ${TEST}" fatal "Unknown test: ${TEST}"
fi fi
# Set up domU rootfs. # DomU rootfs
cp binaries/rootfs.cpio.gz binaries/domU-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xzf ../binaries/initrd.tar.gz mkdir -p etc/local.d
mkdir proc run srv sys
rm var/run
echo "#!/bin/sh echo "#!/bin/sh
set -x set -x
export LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH=/usr/local/lib
@@ -102,22 +104,22 @@ PATH=/usr/local/bin:/usr/local/sbin:\$PATH
${DOMU_CMD} ${DOMU_CMD}
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf
echo "domU Welcome to Alpine Linux echo "domU Welcome to Alpine Linux
Kernel \r on an \m (\l) Kernel \r on an \m (\l)
" > etc/issue " > etc/issue
copy_domU_files copy_domU_files
find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz find . | cpio -H newc -o | gzip >> ../binaries/domU-rootfs.cpio.gz
cd .. cd ..
rm -rf rootfs rm -rf rootfs
# Set up dom0 rootfs. # Dom0 rootfs
cp binaries/rootfs.cpio.gz binaries/dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xzf ../binaries/initrd.tar.gz mkdir -p boot etc/local.d
mkdir boot proc run srv sys
rm var/run
cp -ar ../binaries/dist/install/* . cp -ar ../binaries/dist/install/* .
echo "#!/bin/bash echo "#!/bin/bash
set -x set -x
@@ -127,14 +129,13 @@ ${DOM0_CMD}
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
echo "rc_verbose=yes" >> etc/rc.conf
echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
echo "QEMU_XEN=/bin/false" >> etc/default/xencommons echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
mkdir -p var/log/xen/console mkdir -p var/log/xen/console
cp ../binaries/bzImage boot/vmlinuz cp ../binaries/bzImage boot/vmlinuz
cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
copy_dom0_files copy_dom0_files
find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz find . | cpio -H newc -o | gzip >> ../binaries/dom0-rootfs.cpio.gz
cd .. cd ..
# Load software into TFTP server directory. # Load software into TFTP server directory.
@@ -147,7 +148,7 @@ echo "
net_default_server=10.0.6.1 net_default_server=10.0.6.1
multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
module2 (tftp)/${TEST_BOARD}/initrd-dom0 module2 --nounzip (tftp)/${TEST_BOARD}/initrd-dom0
boot boot
" > ${TFTP}/${TEST_BOARD}/grub.cfg " > ${TFTP}/${TEST_BOARD}/grub.cfg
@@ -38,36 +38,31 @@ echo \"${passed}\"
" "
fi fi
# DomU # DomU rootfs
cp binaries/rootfs.cpio.gz binaries/domU-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xzf ../binaries/initrd.tar.gz mkdir -p etc/local.d
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
echo "#!/bin/sh echo "#!/bin/sh
${domU_check} ${domU_check}
/bin/sh" > etc/local.d/xen.start /bin/sh" > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf find . | cpio -H newc -o | gzip >> ../binaries/domU-rootfs.cpio.gz
find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
cd .. cd ..
rm -rf rootfs rm -rf rootfs
# DOM0 rootfs # Dom0 rootfs
cp binaries/rootfs.cpio.gz binaries/dom0-rootfs.cpio.gz
# test-local configuration
mkdir -p rootfs mkdir -p rootfs
cd rootfs cd rootfs
tar xzf ../binaries/initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
rm var/run
cp -ar ../binaries/dist/install/* . cp -ar ../binaries/dist/install/* .
mkdir -p etc/local.d
echo "#!/bin/bash echo "#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH=/usr/local/lib
@@ -78,8 +73,7 @@ bash /etc/init.d/xencommons start
${dom0_check} ${dom0_check}
" > etc/local.d/xen.start " > etc/local.d/xen.start
chmod +x etc/local.d/xen.start chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf find . | cpio -H newc -o | gzip >> ../binaries/dom0-rootfs.cpio.gz
find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
cd .. cd ..
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.