Add a smoke test QEMU boot script for CI
Reviewed by: imp, lwhsu (earlier) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19661
This commit is contained in:
parent
fabed6b2bd
commit
cc2e55c7ea
63
tools/boot/ci-qemu-test.sh
Executable file
63
tools/boot/ci-qemu-test.sh
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Install loader, kernel, and enough of userland to boot in QEMU and echo
|
||||||
|
# "Hello world." from init, as a very quick smoke test for CI. Uses QEMU's
|
||||||
|
# virtual FAT filesystem to avoid the need to create a disk image.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Root directory for minimal FreeBSD installation.
|
||||||
|
ROOTDIR=$(pwd)/fat-root
|
||||||
|
|
||||||
|
# Create minimal directory structure.
|
||||||
|
rm -f $ROOTDIR/efi/boot/BOOTx64.EFI
|
||||||
|
for dir in dev bin efi/boot etc lib libexec sbin usr/libexec; do
|
||||||
|
mkdir -p $ROOTDIR/$dir
|
||||||
|
done
|
||||||
|
|
||||||
|
# Install kernel, loader and minimal userland.
|
||||||
|
make -DNO_ROOT DESTDIR=$ROOTDIR \
|
||||||
|
MODULES_OVERRIDE= \
|
||||||
|
WITHOUT_DEBUG_FILES=yes \
|
||||||
|
WITHOUT_KERNEL_SYMBOLS=yes \
|
||||||
|
installkernel
|
||||||
|
for dir in stand \
|
||||||
|
lib/libc lib/libedit lib/ncurses \
|
||||||
|
libexec/rtld-elf \
|
||||||
|
bin/sh sbin/init sbin/shutdown; do
|
||||||
|
make -DNO_ROOT DESTDIR=$ROOTDIR INSTALL="install -U" \
|
||||||
|
WITHOUT_MAN= \
|
||||||
|
WITHOUT_PROFILE= \
|
||||||
|
WITHOUT_TESTS= \
|
||||||
|
WITHOUT_TOOLCHAIN= \
|
||||||
|
-C $dir install
|
||||||
|
done
|
||||||
|
|
||||||
|
# Put loader in standard EFI location.
|
||||||
|
mv $ROOTDIR/boot/loader.efi $ROOTDIR/efi/boot/BOOTx64.EFI
|
||||||
|
|
||||||
|
# Configuration files.
|
||||||
|
cat > $ROOTDIR/boot/loader.conf <<EOF
|
||||||
|
vfs.root.mountfrom="msdosfs:/dev/ada0s1"
|
||||||
|
autoboot_delay=-1
|
||||||
|
boot_verbose=YES
|
||||||
|
EOF
|
||||||
|
cat > $ROOTDIR/etc/rc <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "Hello world."
|
||||||
|
/sbin/shutdown -p now
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Remove unnecessary files to keep FAT filesystem size down.
|
||||||
|
rm -rf $ROOTDIR/METALOG $ROOTDIR/usr/lib
|
||||||
|
|
||||||
|
# And, boot in QEMU.
|
||||||
|
timeout 300 \
|
||||||
|
qemu-system-x86_64 -m 256M -bios OVMF.fd \
|
||||||
|
-serial stdio -vga none -nographic -monitor none \
|
||||||
|
-snapshot -hda fat:$ROOTDIR 2>&1 | tee boot.log
|
||||||
|
grep -q 'Hello world.' boot.log
|
||||||
|
echo OK
|
Loading…
Reference in New Issue
Block a user