mouse/src

Blob: scripts/run-qemu.sh

Raw · Blame

#!/bin/sh
set -eu

script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
repo_dir=$(dirname "$script_dir")
build_dir=${MOUSE_BUILD_DIR:-"$repo_dir/build"}
kernel_args=${MOUSE_KERNEL_ARGS:-"console=ttyS0 rdinit=/sbin/cheesed panic=-1"}
local_qemu="$build_dir/tools/qemu/bin/qemu-system-x86_64"
local_lib="$build_dir/tools/deps/lib"

if [ -n "${QEMU_SYSTEM_X86_64:-}" ]; then
    qemu=$QEMU_SYSTEM_X86_64
elif [ -x "$local_qemu" ]; then
    qemu=$local_qemu
    DYLD_LIBRARY_PATH="$local_lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}"
    export DYLD_LIBRARY_PATH
else
    qemu=qemu-system-x86_64
fi

case "$qemu" in
    */*)
        if [ ! -x "$qemu" ]; then
            printf '%s\n' "$qemu is not executable" >&2
            exit 1
        fi
        ;;
    *)
        if ! command -v "$qemu" >/dev/null 2>&1; then
            printf '%s\n' "qemu-system-x86_64 is required to boot the image" >&2
            exit 1
        fi
        ;;
esac

if [ ! -f "$build_dir/vmlinuz-virt" ] ||
    [ ! -f "$build_dir/mouse-initramfs.cpio.gz" ]; then
    printf '%s\n' "run 'make image' before booting MOUSE" >&2
    exit 1
fi

exec "$qemu" \
    -machine accel=tcg \
    -cpu max \
    -m 256M \
    -no-reboot \
    -display none \
    -nographic \
    -kernel "$build_dir/vmlinuz-virt" \
    -initrd "$build_dir/mouse-initramfs.cpio.gz" \
    -append "$kernel_args"