added support for other platforms
This commit is contained in:
@@ -3,28 +3,38 @@ set quiet := true
|
||||
OS_NAME := os()
|
||||
ARCH_NAME := arch()
|
||||
|
||||
OVMF_ARM := if OS_NAME == "macos" {
|
||||
if ARCH_NAME == "aarch64" {
|
||||
"/opt/homebrew/share/qemu/edk2-aarch64-code.fd"
|
||||
} else {
|
||||
"/usr/local/share/qemu/edk2-aarch64-code.fd"
|
||||
}
|
||||
} else {
|
||||
"/usr/share/edk2/aarch64/QEMU_EFI.fd"
|
||||
}
|
||||
|
||||
ACCEL := if OS_NAME == "macos" {
|
||||
if ARCH_NAME == "aarch64" { "-accel hvf" } else { "" }
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
# Homebrew prefix (arm64 mac vs x86_64 mac)
|
||||
HB_PREFIX := if ARCH_NAME == "aarch64" { "/opt/homebrew" } else { "/usr/local" }
|
||||
export PATH := HB_PREFIX + "/bin:" + HB_PREFIX + "/sbin:" + env_var("PATH")
|
||||
|
||||
ACCEL_INFO := if ACCEL == "" { "none (TCG)" } else { ACCEL }
|
||||
# QEMU acceleration: HVF on Apple Silicon, KVM on aarch64 Linux, TCG otherwise
|
||||
ACCEL := if OS_NAME == "macos" {
|
||||
if ARCH_NAME == "aarch64" { "-accel hvf" } else { "" }
|
||||
} else {
|
||||
if ARCH_NAME == "aarch64" { "-accel kvm" } else { "" }
|
||||
}
|
||||
|
||||
CPU := if ARCH_NAME == "aarch64" { "host" } else { "max" }
|
||||
# CPU type: "host" with hardware virt, "max" for cross-arch TCG
|
||||
CPU := if ARCH_NAME == "aarch64" { "host" } else { "max" }
|
||||
|
||||
# AArch64 UEFI firmware
|
||||
# Linux default is Fedora/RHEL path; override via OVMF_PATH env var:
|
||||
# Debian/Ubuntu: /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
|
||||
# Arch: /usr/share/edk2-armvirt/aarch64/QEMU_CODE.fd
|
||||
OVMF_ARM := if OS_NAME == "macos" {
|
||||
HB_PREFIX + "/share/qemu/edk2-aarch64-code.fd"
|
||||
} else {
|
||||
env_var_or_default("OVMF_PATH", "/usr/share/edk2/aarch64/QEMU_EFI.fd")
|
||||
}
|
||||
|
||||
# Display backend
|
||||
DISPLAY_FLAGS := if OS_NAME == "macos" {
|
||||
"-display cocoa,show-cursor=on"
|
||||
} else {
|
||||
env_var_or_default("QEMU_DISPLAY", "-display sdl")
|
||||
}
|
||||
|
||||
ACCEL_INFO := if ACCEL == "" { "none (TCG)" } else { ACCEL }
|
||||
|
||||
export BUILD_DIR := justfile_directory() + "/.build"
|
||||
export TEMP_DIR := BUILD_DIR + "/temp"
|
||||
@@ -56,18 +66,18 @@ _prep:
|
||||
@mcopy -i {{IMG_FILE}} {{BUILD_DIR}}/Kernel/ksOSKernel.bin ::/ksOSKernel.bin
|
||||
|
||||
@run: _image
|
||||
@echo "🚀 Launching..."
|
||||
@echo "🚀 Launching (accel: {{ACCEL_INFO}})..."
|
||||
qemu-system-aarch64 {{ACCEL}} \
|
||||
-machine virt,acpi=off \
|
||||
-cpu {{CPU}} \
|
||||
-m 512M \
|
||||
-device ramfb \
|
||||
-display cocoa,show-cursor=on \
|
||||
{{DISPLAY_FLAGS}} \
|
||||
-drive if=pflash,format=raw,readonly=on,file={{OVMF_ARM}} \
|
||||
-drive file={{IMG_FILE}},format=raw,if=none,id=hd0 \
|
||||
-device virtio-blk-device,drive=hd0 \
|
||||
-serial stdio \
|
||||
-monitor telnet:127.0.0.1:5555,server,nowait
|
||||
|
||||
|
||||
@clean:
|
||||
rm -rf {{BUILD_DIR}}
|
||||
rm -rf {{BUILD_DIR}}
|
||||
|
||||
Reference in New Issue
Block a user