set quiet := true OS_NAME := os() ARCH_NAME := arch() OVMF_ARM := if OS_NAME == "macos" { "/opt/homebrew/share/qemu/edk2-aarch64-code.fd" } else { "/usr/share/edk2/aarch64/QEMU_EFI.fd" } ACCEL := if OS_NAME == "macos" { if ARCH_NAME == "arm64" { "-accel hvf" } else { "" } } else { "" } ACCEL_INFO := if ACCEL == "" { "none (TCG)" } else { ACCEL } CPU := if ARCH_NAME == "arm64" { "host" } else { if ARCH_NAME == "aarch64" { "host" } else { "max" } } export BUILD_DIR := justfile_directory() + "/.build" export TEMP_DIR := BUILD_DIR + "/temp" export BOOT_BIN := BUILD_DIR + "/bootloader/BOOTAA64.EFI" export IMG_FILE := BUILD_DIR + "/termOS.img" mod Bootloader _prep: @mkdir -p {{BUILD_DIR}}/bootloader @mkdir -p {{TEMP_DIR}}/bootloader @build: _prep @echo "🛠️ Building everything..." just Bootloader build @image: build @echo "💾 Creating image..." @dd if=/dev/zero of={{IMG_FILE}} bs=1M count=64 status=none @mkfs.fat -F 32 {{IMG_FILE}} > /dev/null @mmd -i {{IMG_FILE}} ::/EFI ::/EFI/BOOT @mcopy -i {{IMG_FILE}} {{BOOT_BIN}} ::/EFI/BOOT/BOOTAA64.EFI @run: image @echo "🚀 Launching..." # Создаем копию переменных, если её нет (чтобы не портить системный файл) @cp /usr/share/edk2/aarch64/QEMU_VARS.fd {{TEMP_DIR}}/vars.fd qemu-system-aarch64 {{ACCEL}} \ -machine virt \ -cpu {{CPU}} \ -m 512M \ -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/aarch64/QEMU_EFI.fd \ -drive if=pflash,format=raw,file={{TEMP_DIR}}/vars.fd \ -drive file={{IMG_FILE}},format=raw,if=none,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -serial mon:stdio