Get QEMU to run UEFI aarch64
This commit is contained in:
parent
c34750b50e
commit
5cb8411166
|
@ -56,11 +56,16 @@ INSTALLER=\
|
||||||
|
|
||||||
## Bootloader variables
|
## Bootloader variables
|
||||||
ifeq ($(ARCH),x86_64)
|
ifeq ($(ARCH),x86_64)
|
||||||
|
BOOTLOADER_EFI_PATH=efi/boot/bootx64.efi
|
||||||
BOOTLOADER_TARGET=x86-unknown-none
|
BOOTLOADER_TARGET=x86-unknown-none
|
||||||
else ifeq ($(ARCH),i686)
|
else ifeq ($(ARCH),i686)
|
||||||
|
BOOTLOADER_EFI_PATH=efi/boot/bootia32.efi
|
||||||
BOOTLOADER_TARGET=x86-unknown-none
|
BOOTLOADER_TARGET=x86-unknown-none
|
||||||
|
else ifeq ($(ARCH),aarch64)
|
||||||
|
BOOTLOADER_EFI_PATH=efi/boot/bootaa64.efi
|
||||||
|
BOOTLOADER_TARGET=aarch64-unknown-none
|
||||||
else
|
else
|
||||||
BOOTLOADER_TARGET=$(ARCH)-unknown-none
|
$(error Unsupported ARCH for bootloader "$(ARCH)")
|
||||||
endif
|
endif
|
||||||
EFI_TARGET=$(ARCH)-unknown-uefi
|
EFI_TARGET=$(ARCH)-unknown-uefi
|
||||||
PARTED=/sbin/parted
|
PARTED=/sbin/parted
|
||||||
|
|
|
@ -33,7 +33,7 @@ build/harddrive-efi.bin: build/bootloader.efi build/filesystem.bin
|
||||||
mkfs.vfat $@.esp && \
|
mkfs.vfat $@.esp && \
|
||||||
mmd -i $@.esp efi && \
|
mmd -i $@.esp efi && \
|
||||||
mmd -i $@.esp efi/boot && \
|
mmd -i $@.esp efi/boot && \
|
||||||
mcopy -i $@.esp $< ::efi/boot/bootx64.efi && \
|
mcopy -i $@.esp $< ::$(BOOTLOADER_EFI_PATH) && \
|
||||||
# Create the disk \
|
# Create the disk \
|
||||||
dd if=/dev/zero of=$@ bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 2 + $$(du -m build/filesystem.bin | cut -f1)) && \
|
dd if=/dev/zero of=$@ bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 2 + $$(du -m build/filesystem.bin | cut -f1)) && \
|
||||||
# Create partition table \
|
# Create partition table \
|
||||||
|
|
83
mk/qemu.mk
83
mk/qemu.mk
|
@ -1,42 +1,34 @@
|
||||||
ifeq ($(ARCH),i686)
|
ifeq ($(ARCH),i686)
|
||||||
|
#TODO: support kvm
|
||||||
#TODO: support kvm
|
kvm=no
|
||||||
kvm=no
|
QEMU_ARCH=i386
|
||||||
QEMU_ARCH=i386
|
QEMU_MACHINE=pc
|
||||||
QEMU_MACHINE=pc
|
QEMU_CPU=pentium2
|
||||||
QEMU_CPU=pentium2
|
#TODO: support higher RAM sizes
|
||||||
#TODO: support higher RAM sizes
|
#TODO: support higher CPU counts
|
||||||
QEMU_MEM=512
|
QEMUFLAGS=-smp 1 -m 512
|
||||||
#TODO: support higher CPU counts
|
|
||||||
QEMU_SMP=1
|
|
||||||
|
|
||||||
else ifeq ($(ARCH),x86_64)
|
else ifeq ($(ARCH),x86_64)
|
||||||
|
QEMU_ARCH=x86_64
|
||||||
QEMU_ARCH=x86_64
|
QEMU_MACHINE=q35
|
||||||
QEMU_MACHINE=q35
|
QEMU_CPU=max
|
||||||
QEMU_CPU=max
|
QEMU_EFI=/usr/share/OVMF/OVMF_CODE.fd
|
||||||
QEMU_MEM=2048
|
QEMUFLAGS=-smp 4 -m 2048
|
||||||
QEMU_SMP=4
|
|
||||||
|
|
||||||
else ifeq ($(ARCH),aarch64)
|
else ifeq ($(ARCH),aarch64)
|
||||||
|
kvm=no
|
||||||
kvm=no
|
QEMU_ARCH=aarch64
|
||||||
QEMU_ARCH=aarch64
|
QEMU_MACHINE=virt
|
||||||
QEMU_MACHINE=virt
|
QEMU_CPU=max
|
||||||
QEMU_CPU=max
|
QEMU_EFI=/usr/share/AAVMF/AAVMF_CODE.fd
|
||||||
QEMU_MEM=2048
|
QEMUFLAGS=-smp 1 -m 2048
|
||||||
QEMU_SMP=1
|
ifneq ($(vga),no)
|
||||||
|
QEMUFLAGS+=-device virtio-gpu-pci
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
|
$(error Unsupported ARCH for QEMU "$(ARCH)"))
|
||||||
$(error Unsupported QEMU ARCH))
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
QEMU=SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-$(QEMU_ARCH)
|
QEMU=SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-$(QEMU_ARCH)
|
||||||
QEMUFLAGS=-d cpu_reset,guest_errors,int -no-reboot
|
QEMUFLAGS+=-d cpu_reset,guest_errors -no-reboot
|
||||||
QEMUFLAGS+=-smp $(QEMU_SMP) -m $(QEMU_MEM)
|
|
||||||
QEMU_EFI=/usr/share/OVMF/OVMF_CODE.fd
|
|
||||||
ifeq ($(serial),no)
|
ifeq ($(serial),no)
|
||||||
QEMUFLAGS+=-chardev stdio,id=debug -device isa-debugcon,iobase=0x402,chardev=debug
|
QEMUFLAGS+=-chardev stdio,id=debug -device isa-debugcon,iobase=0x402,chardev=debug
|
||||||
else
|
else
|
||||||
|
@ -94,6 +86,9 @@ build/extra.bin:
|
||||||
truncate -s 1g $@
|
truncate -s 1g $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
build/firmware.rom:
|
||||||
|
cp $(QEMU_EFI) $@
|
||||||
|
|
||||||
qemu: build/harddrive.bin build/extra.bin
|
qemu: build/harddrive.bin build/extra.bin
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-drive file=build/harddrive.bin,format=raw \
|
-drive file=build/harddrive.bin,format=raw \
|
||||||
|
@ -104,15 +99,15 @@ qemu_no_build: build/extra.bin
|
||||||
-drive file=build/harddrive.bin,format=raw \
|
-drive file=build/harddrive.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
qemu_efi: build/harddrive-efi.bin build/extra.bin
|
qemu_efi: build/harddrive-efi.bin build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/harddrive-efi.bin,format=raw \
|
-drive file=build/harddrive-efi.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
qemu_efi_no_build: build/extra.bin
|
qemu_efi_no_build: build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/harddrive-efi.bin,format=raw \
|
-drive file=build/harddrive-efi.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
|
@ -126,15 +121,15 @@ qemu_nvme_no_build: build/extra.bin
|
||||||
-drive file=build/harddrive.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
-drive file=build/harddrive.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
||||||
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
||||||
|
|
||||||
qemu_nvme_efi: build/harddrive-efi.bin build/extra.bin
|
qemu_nvme_efi: build/harddrive-efi.bin build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/harddrive-efi.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
-drive file=build/harddrive-efi.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
||||||
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
||||||
|
|
||||||
qemu_nvme_efi_no_build: build/extra.bin
|
qemu_nvme_efi_no_build: build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/harddrive-efi.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
-drive file=build/harddrive-efi.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
|
||||||
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
-drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
|
||||||
|
|
||||||
|
@ -158,15 +153,15 @@ qemu_live_no_build: build/extra.bin
|
||||||
-drive file=build/livedisk.bin,format=raw \
|
-drive file=build/livedisk.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
qemu_live_efi: build/livedisk-efi.bin build/extra.bin
|
qemu_live_efi: build/livedisk-efi.bin build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/livedisk-efi.bin,format=raw \
|
-drive file=build/livedisk-efi.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
qemu_live_efi_no_build: build/extra.bin
|
qemu_live_efi_no_build: build/extra.bin build/firmware.rom
|
||||||
$(QEMU) $(QEMUFLAGS) \
|
$(QEMU) $(QEMUFLAGS) \
|
||||||
-bios $(QEMU_EFI) \
|
-bios build/firmware.rom \
|
||||||
-drive file=build/livedisk-efi.bin,format=raw \
|
-drive file=build/livedisk-efi.bin,format=raw \
|
||||||
-drive file=build/extra.bin,format=raw
|
-drive file=build/extra.bin,format=raw
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue