summaryrefslogtreecommitdiff
path: root/qemu.sh
diff options
context:
space:
mode:
Diffstat (limited to 'qemu.sh')
-rwxr-xr-xqemu.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/qemu.sh b/qemu.sh
new file mode 100755
index 0000000..09b0121
--- /dev/null
+++ b/qemu.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+BOOT_DIR=boot
+BOOT_FILE=${BOOT_DIR}/kjarna.efi
+
+SERVICE_DIR=service
+SERVICE_FILE=${SERVICE_DIR}/kjarna.os
+
+CORE_DIR=kc/core
+CORE_FILE=${CORE_DIR}/kernel.os
+
+FIRMWARE_DIR=/usr/share/ovmf/x64
+FIRMWARE_FILE=${FIRMWARE_DIR}/OVMF_CODE.4m.fd
+FIRMWARE_VARS=${FIRMWARE_DIR}/OVMF_VARS.4m.fd
+
+INSTALL_PREFIX=adasoft/sophia
+
+make &&
+
+tempdir=$(mktemp -d) &&
+rundir=${tempdir}/run
+
+varsfile=${tempdir}/$(basename ${FIRMWARE_VARS})
+
+efidir=${rundir}/efi
+efibootdir=${efidir}/boot
+bootdir=${efidir}/adasoft/kjarna
+bootfile=${efibootdir}/BOOTX64.EFI
+servdir=${rundir}/service/kjarna
+
+mkdir -p ${efidir} ${efibootdir} &&
+mkdir -p ${bootdir} ${servdir} &&
+
+cp ${FIRMWARE_VARS} ${varsfile} &&
+cp ${BOOT_FILE} ${bootdir} &&
+cp ${BOOT_FILE} ${bootfile} &&
+cp ${SERVICE_FILE} ${servdir} &&
+cp ${CORE_FILE} ${servdir} &&
+
+qemu-system-x86_64 -d int \
+ -drive if=pflash,format=raw,unit=0,file=${FIRMWARE_FILE},readonly=on \
+ -drive if=pflash,format=raw,unit=1,file=${varsfile} \
+ -net none -drive file=fat:rw:${rundir} -monitor stdio \
+ -serial file:sophia.log -no-shutdown -no-reboot -s
+
+rm -rf ${tempdir}
+