summaryrefslogtreecommitdiff
path: root/qemu.sh
blob: 0ce275a1a06840c806abb97fa0cdfa9f5c55c824 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env bash

BOOT_DIR=loader
BOOT_FILE=${BOOT_DIR}/loader.efi

SHIM_DIR=kc/boot
SHIM_FILE=${SHIM_DIR}/efi.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/sophia
bootfile=${efibootdir}/BOOTX64.EFI
servdir=${rundir}/adasoft/sophia

mkdir -p ${efidir} ${efibootdir} &&
mkdir -p ${bootdir} ${servdir} &&

cp ${FIRMWARE_VARS} ${varsfile} &&
cp ${BOOT_FILE} ${bootdir} &&
cp ${BOOT_FILE} ${bootfile} &&
cp ${SHIM_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 -S 

rm -rf ${tempdir}