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"}
initramfs=${MOUSE_INITRAMFS:-"$build_dir/mouse-initramfs.cpio.gz"}
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 "$initramfs" ]; 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 "$initramfs" \
-append "$kernel_args"