#!/bin/sh -e DIR="$(cd "$(dirname "$0")" && pwd)" if [ -e /dev/kvm ]; then MACHINE_ARG="-machine pc,accel=kvm" else echo "WARNING: /dev/kvm not found, emulation will be slower" MACHINE_ARG="-machine pc" fi if ! [ -e "$DIR"/_linux ]; then echo "ERROR: linux kernel not found: $DIR/_linux" echo "Put a kernel there, either download it from the Osmocom jenkins:" echo "$ make -C tests qemu-download-kernel" echo echo "Or build your own kernel. Make sure to set:" echo " CONFIG_GTP=y" echo " CONFIG_NET_NS=y" echo " CONFIG_VETH=y" exit 1 fi KERNEL_CMDLINE="root=/dev/ram0 console=ttyS0 panic=-1 init=/init" set -x qemu-system-x86_64 \ $MACHINE_ARG \ -smp 1 \ -m 512M \ -no-user-config -nodefaults -display none \ -gdb unix:"$DIR"/_gdb.pipe,server=on,wait=off \ -no-reboot \ -kernel "$DIR"/_linux \ -initrd "$DIR"/_initrd.gz \ -append "${KERNEL_CMDLINE}" \ -serial stdio \ -chardev socket,id=charserial1,path="$DIR"/_gdb-serial.pipe,server=on,wait=off \ -device isa-serial,chardev=charserial1,id=serial1 \ 2>&1 | tee "$DIR/_output" set +x if grep -q "QEMU_TEST_SUCCESSFUL" "$DIR/_output"; then echo echo "QEMU tests: successful" echo else echo echo "QEMU tests: failed" echo exit 1 fi