From b50084d4dd70f2cc1b7b3c85cafeba0499725068 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 15 Aug 2025 19:45:23 +0000 Subject: [PATCH 1/3] Add option to run Windows QEMU when using WSL2 --- mk/qemu.mk | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/mk/qemu.mk b/mk/qemu.mk index 1bfa5d404..de43e4299 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -124,6 +124,17 @@ ifneq ($(ARCH),$(HOST_ARCH)) kvm?=no endif +# wsl2: run qemu on windows instead +ifeq ($(QEMU_ON_WINDOWS),1) + QEMU:=$(QEMU).exe + WINDOWS_DISK=/mnt/c/ProgramData/redox.qcow2 + disk=windows + net=windows + QEMU_MACHINE=pc + FIRMWARE= + QEMU_KERNEL= +endif + ifneq ($(FIRMWARE),) QEMUFLAGS+=-bios $(FIRMWARE) endif @@ -186,6 +197,8 @@ else # port 8080 and 8083 - webservers # port 64126 - our gdbserver implementation QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126$(EXTRANETARGS) + else ifeq ($(net),windows) + QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS) else QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS) -object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap endif @@ -228,6 +241,9 @@ else ifeq ($(disk),cdrom) else ifeq ($(disk),sdcard) QEMUFLAGS+=-drive file=$(DISK),if=sd,format=raw +else ifeq ($(disk),windows) + QEMUFLAGS+= \ + -drive file="$(shell wslpath -w $(WINDOWS_DISK))",if=virtio endif ifeq ($(gdb),yes) @@ -236,7 +252,11 @@ endif ifeq ($(UNAME),Linux) ifneq ($(kvm),no) - QEMUFLAGS+=-enable-kvm -cpu host + ifeq ($(QEMU_ON_WINDOWS),1) + QEMUFLAGS+=-accel whpx,kernel-irqchip=off -cpu Haswell,-tsc + else + QEMUFLAGS+=-enable-kvm -cpu host + endif else QEMUFLAGS+=-cpu $(QEMU_CPU) endif @@ -260,6 +280,8 @@ qemu-deps: $(DISK) ifeq ($(disk),usb) else ifeq ($(disk),sdcard) +else ifeq ($(disk),windows) +qemu-deps: $(WINDOWS_DISK) else qemu-deps: $(EXTRA_DISK) endif @@ -281,6 +303,11 @@ endif $(EXTRA_DISK): truncate -s 1g $@ +$(WINDOWS_DISK): $(BUILD)/harddrive.img + rm -f $@ + mkdir -p $(shell dirname $@) + qemu-img.exe convert -f raw -O qcow2 "\$(shell wslpath -w $<)" "$(shell wslpath -w $@)" + $(BUILD)/raspi3bp_uboot.rom: wget -O $@ https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/raspberry_pi/rpi3/u-boot-rpi-3-b-plus.bin From cb363699052f90e045b60c41ea275ea915907384 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 18 Aug 2025 10:10:09 +0000 Subject: [PATCH 2/3] Apply apic and mouse fixes --- mk/qemu.mk | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mk/qemu.mk b/mk/qemu.mk index 7b6930f31..fb7468ad8 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -132,12 +132,13 @@ endif # wsl2: run qemu on windows instead ifeq ($(QEMU_ON_WINDOWS),1) QEMU:=$(QEMU).exe - WINDOWS_DISK=/mnt/c/ProgramData/redox.qcow2 + WINDOWS_DISK=/mnt/c/ProgramData/redox.img disk=windows net=windows QEMU_MACHINE=pc FIRMWARE= QEMU_KERNEL= + QEMUFLAGS+=-device usb-tablet endif ifneq ($(FIRMWARE),) @@ -248,7 +249,7 @@ else ifeq ($(disk),sdcard) QEMUFLAGS+=-drive file=$(DISK),if=sd,format=raw else ifeq ($(disk),windows) QEMUFLAGS+= \ - -drive file="$(shell wslpath -w $(WINDOWS_DISK))",if=virtio + -drive file="$(shell wslpath -w $(WINDOWS_DISK))",format=raw,if=virtio endif ifeq ($(gdb),yes) @@ -258,7 +259,7 @@ endif ifeq ($(UNAME),Linux) ifneq ($(kvm),no) ifeq ($(QEMU_ON_WINDOWS),1) - QEMUFLAGS+=-accel whpx,kernel-irqchip=off -cpu Haswell,-tsc + QEMUFLAGS+=-accel whpx,kernel-irqchip=off -cpu Broadwell,x2apic=off else QEMUFLAGS+=-enable-kvm -cpu host endif @@ -315,7 +316,7 @@ $(EXTRA_DISK): $(WINDOWS_DISK): $(BUILD)/harddrive.img rm -f $@ mkdir -p $(shell dirname $@) - qemu-img.exe convert -f raw -O qcow2 "\$(shell wslpath -w $<)" "$(shell wslpath -w $@)" + cp "$<" "$@" $(BUILD)/raspi3bp_uboot.rom: wget -O $@ https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/raspberry_pi/rpi3/u-boot-rpi-3-b-plus.bin From c09215748d50617b76f8a58665b5e3f15a2c0a27 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 18 Aug 2025 10:37:28 +0000 Subject: [PATCH 3/3] Formatting --- mk/qemu.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mk/qemu.mk b/mk/qemu.mk index fb7468ad8..9ab81160d 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -244,12 +244,10 @@ else ifeq ($(disk),cdrom) QEMUFLAGS+= \ -boot d -cdrom $(DISK) \ -drive file=$(EXTRA_DISK),format=raw - else ifeq ($(disk),sdcard) QEMUFLAGS+=-drive file=$(DISK),if=sd,format=raw else ifeq ($(disk),windows) - QEMUFLAGS+= \ - -drive file="$(shell wslpath -w $(WINDOWS_DISK))",format=raw,if=virtio + QEMUFLAGS+=-drive file="$(shell wslpath -w $(WINDOWS_DISK))",format=raw,if=virtio endif ifeq ($(gdb),yes)