Simplify qemu recipes

This commit is contained in:
Jeremy Soller 2022-08-24 06:22:40 -06:00
parent 4f7378f76c
commit 6a7daa8891

View file

@ -11,7 +11,10 @@ else ifeq ($(ARCH),x86_64)
QEMU_EFI=/usr/share/OVMF/OVMF_CODE.fd QEMU_EFI=/usr/share/OVMF/OVMF_CODE.fd
QEMUFLAGS=-smp 4 -m 2048 QEMUFLAGS=-smp 4 -m 2048
else ifeq ($(ARCH),aarch64) else ifeq ($(ARCH),aarch64)
efi=yes
kvm=no kvm=no
#TODO: support vga
vga=no
QEMU_ARCH=aarch64 QEMU_ARCH=aarch64
QEMU_MACHINE=virt QEMU_MACHINE=virt
QEMU_CPU=max QEMU_CPU=max
@ -20,10 +23,30 @@ else ifeq ($(ARCH),aarch64)
ifneq ($(vga),no) ifneq ($(vga),no)
QEMUFLAGS+=-device virtio-gpu-pci QEMUFLAGS+=-device virtio-gpu-pci
endif endif
ifneq ($(usb),no)
QEMUFLAGS+=-device usb-ehci -device usb-kbd -device usb-mouse
endif
else else
$(error Unsupported ARCH for QEMU "$(ARCH)")) $(error Unsupported ARCH for QEMU "$(ARCH)"))
endif endif
ifeq ($(efi),yes)
FIRMWARE=build/firmware.rom
QEMUFLAGS+=-bios build/firmware.rom
ifeq ($(live),yes)
HARDDRIVE=build/harddrive-efi.bin
else
HARDDRIVE=build/livedisk-efi.bin
endif
else
FIRMWARE=
ifeq ($(live),yes)
HARDDRIVE=build/harddrive.bin
else
HARDDRIVE=build/livedisk.bin
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 QEMUFLAGS+=-d cpu_reset,guest_errors
ifeq ($(serial),no) ifeq ($(serial),no)
@ -86,96 +109,40 @@ endif
build/firmware.rom: build/firmware.rom:
cp $(QEMU_EFI) $@ cp $(QEMU_EFI) $@
qemu: build/harddrive.bin build/extra.bin qemu: $(HARDDRIVE) $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-drive file=build/harddrive.bin,format=raw \ -drive file=$(HARDDRIVE),format=raw \
-drive file=build/extra.bin,format=raw -drive file=build/extra.bin,format=raw
qemu_no_build: build/extra.bin qemu_no_build: $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-drive file=build/harddrive.bin,format=raw \ -drive file=$(HARDDRIVE),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 build/firmware.rom qemu_nvme: $(HARDDRIVE) $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-bios build/firmware.rom \ -drive file=$(HARDDRIVE),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
-drive file=build/harddrive-efi.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_efi_no_build: build/extra.bin build/firmware.rom
$(QEMU) $(QEMUFLAGS) \
-bios build/firmware.rom \
-drive file=build/harddrive-efi.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_nvme: build/harddrive.bin build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-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_no_build: build/extra.bin qemu_nvme_no_build: $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-drive file=build/harddrive.bin,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ -drive file=$(HARDDRIVE),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 build/firmware.rom qemu_iso: build/livedisk.iso $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-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/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
qemu_nvme_efi_no_build: build/extra.bin build/firmware.rom
$(QEMU) $(QEMUFLAGS) \
-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/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
qemu_nvme_live: build/livedisk.bin build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-drive file=build/livedisk.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
qemu_nvme_live_no_build: build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-drive file=build/livedisk.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
qemu_live: build/livedisk.bin build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-drive file=build/livedisk.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_live_no_build: build/extra.bin
$(QEMU) $(QEMUFLAGS) \
-drive file=build/livedisk.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_live_efi: build/livedisk-efi.bin build/extra.bin build/firmware.rom
$(QEMU) $(QEMUFLAGS) \
-bios build/firmware.rom \
-drive file=build/livedisk-efi.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_live_efi_no_build: build/extra.bin build/firmware.rom
$(QEMU) $(QEMUFLAGS) \
-bios build/firmware.rom \
-drive file=build/livedisk-efi.bin,format=raw \
-drive file=build/extra.bin,format=raw
qemu_iso: build/livedisk.iso build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-boot d -cdrom build/livedisk.iso \ -boot d -cdrom build/livedisk.iso \
-drive file=build/extra.bin,format=raw -drive file=build/extra.bin,format=raw
qemu_iso_no_build: build/extra.bin qemu_iso_no_build: $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-boot d -cdrom build/livedisk.iso \ -boot d -cdrom build/livedisk.iso \
-drive file=build/extra.bin,format=raw -drive file=build/extra.bin,format=raw
qemu_extra: build/extra.bin qemu_extra: $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-drive file=build/extra.bin,format=raw -drive file=build/extra.bin,format=raw
qemu_nvme_extra: build/extra.bin qemu_nvme_extra: $(FIRMWARE) build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \
-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