From 7a62ce3febaaf435d545fa02edefac3abbd2f890 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Tue, 30 Apr 2024 12:16:19 +0200 Subject: [PATCH] Enable Bochs-based emulation --- sdk/cmake/{qemu.cmake => emulation.cmake} | 6 +++ sdk/firmware/bochsrc_amd64.cfg | 54 +++++++++++++++++++++++ sdk/firmware/bochsrc_i686.cfg | 54 +++++++++++++++++++++++ 3 files changed, 114 insertions(+) rename sdk/cmake/{qemu.cmake => emulation.cmake} (93%) create mode 100644 sdk/firmware/bochsrc_amd64.cfg create mode 100644 sdk/firmware/bochsrc_i686.cfg diff --git a/sdk/cmake/qemu.cmake b/sdk/cmake/emulation.cmake similarity index 93% rename from sdk/cmake/qemu.cmake rename to sdk/cmake/emulation.cmake index 046bbb2..1ea5d81 100644 --- a/sdk/cmake/qemu.cmake +++ b/sdk/cmake/emulation.cmake @@ -19,6 +19,12 @@ add_custom_target(diskimg COMMAND rm ${EXECTOS_BINARY_DIR}/output/part.img VERBATIM) +# This target starts up a BOCHS+OVMF virtual machine +add_custom_target(bochsvm + DEPENDS diskimg + COMMAND bochs -f ../sdk/firmware/bochsrc_${ARCH}.cfg -q -unlock + VERBATIM USES_TERMINAL) + # This target starts up a QEMU+OVMF virtual machine using KVM accelerator add_custom_target(testkvm DEPENDS diskimg diff --git a/sdk/firmware/bochsrc_amd64.cfg b/sdk/firmware/bochsrc_amd64.cfg new file mode 100644 index 0000000..03fea9c --- /dev/null +++ b/sdk/firmware/bochsrc_amd64.cfg @@ -0,0 +1,54 @@ +# configuration file generated by Bochs +plugin_ctrl: usb_xhci=false, serial=true, e1000=false, extfpuirq=true, parallel=true, usb_uhci=false, biosdev=true, unmapped=true, gameport=true, ne2k=false, speaker=true, iodebug=false, pcipnic=false, usb_ohci=false +config_interface: textconfig +display_library: x +memory: host=64, guest=64 +romimage: file="../sdk/firmware/ovmf_pure_amd64.fd", address=0x00000000, options=none +vgaromimage: file="../sdk/firmware/vgabios.bin" +boot: floppy +floppy_bootsig_check: disabled=0 +floppya: type=1_44 +# no floppyb +ata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata0-master: type=disk, path="output/disk.img", mode=flat, cylinders=0, heads=0, spt=0, sect_size=512, model="Generic 1234", biosdetect=auto, translation=auto +ata0-slave: type=none +ata1: enabled=true, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata1-master: type=none +ata1-slave: type=none +ata2: enabled=false +ata3: enabled=false +optromimage1: file=none +optromimage2: file=none +optromimage3: file=none +optromimage4: file=none +optramimage1: file=none +optramimage2: file=none +optramimage3: file=none +optramimage4: file=none +pci: enabled=1, chipset=i440fx, slot1=cirrus, slot2=none, slot3=none, slot4=none, slot5=none +vga: extension=cirrus, update_freq=5, realtime=1, ddc=builtin +cpu: count=1:1:1, ips=400000000, quantum=16, model=bx_generic, reset_on_triple_fault=0, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0 +cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU " +cpuid: mmx=true, apic=xapic, simd=sse4_2, sse4a=false, misaligned_sse=false, sep=true +cpuid: movbe=false, adx=false, aes=false, sha=false, xsave=false, xsaveopt=false, x86_64=true +cpuid: 1g_pages=false, pcid=false, fsgsbase=false, smep=false, smap=false, mwait=true +print_timestamps: enabled=0 +port_e9_hack: enabled=0 +private_colormap: enabled=0 +clock: sync=none, time0=local, rtc_sync=0 +# no cmosimage +log: - +logprefix: %t%e%d +debug: action=ignore +info: action=report +error: action=report +panic: action=ask +keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none +mouse: type=ps2, enabled=false, toggle=ctrl+mbutton +com1: enabled=true, mode=null +com2: enabled=false +com3: enabled=false +com4: enabled=false +parport1: enabled=true, file=none +parport2: enabled=false +speaker: enabled=true, mode=system diff --git a/sdk/firmware/bochsrc_i686.cfg b/sdk/firmware/bochsrc_i686.cfg new file mode 100644 index 0000000..49ea10f --- /dev/null +++ b/sdk/firmware/bochsrc_i686.cfg @@ -0,0 +1,54 @@ +# configuration file generated by Bochs +plugin_ctrl: usb_xhci=false, serial=true, e1000=false, extfpuirq=true, parallel=true, usb_uhci=false, biosdev=true, unmapped=true, gameport=true, ne2k=false, speaker=true, iodebug=false, pcipnic=false, usb_ohci=false +config_interface: textconfig +display_library: x +memory: host=64, guest=64 +romimage: file="../sdk/firmware/ovmf_pure_i686.fd", address=0x00000000, options=none +vgaromimage: file="../sdk/firmware/vgabios.bin" +boot: floppy +floppy_bootsig_check: disabled=0 +floppya: type=1_44 +# no floppyb +ata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata0-master: type=disk, path="output/disk.img", mode=flat, cylinders=0, heads=0, spt=0, sect_size=512, model="Generic 1234", biosdetect=auto, translation=auto +ata0-slave: type=none +ata1: enabled=true, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata1-master: type=none +ata1-slave: type=none +ata2: enabled=false +ata3: enabled=false +optromimage1: file=none +optromimage2: file=none +optromimage3: file=none +optromimage4: file=none +optramimage1: file=none +optramimage2: file=none +optramimage3: file=none +optramimage4: file=none +pci: enabled=1, chipset=i440fx, slot1=cirrus, slot2=none, slot3=none, slot4=none, slot5=none +vga: extension=cirrus, update_freq=5, realtime=1, ddc=builtin +cpu: count=1:1:1, ips=400000000, quantum=16, model=bx_generic, reset_on_triple_fault=0, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0 +cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU " +cpuid: mmx=true, apic=xapic, simd=sse4_2, sse4a=false, misaligned_sse=false, sep=true +cpuid: movbe=false, adx=false, aes=false, sha=false, xsave=false, xsaveopt=false, x86_64=true +cpuid: 1g_pages=false, pcid=false, fsgsbase=false, smep=false, smap=false, mwait=true +print_timestamps: enabled=0 +port_e9_hack: enabled=0 +private_colormap: enabled=0 +clock: sync=none, time0=local, rtc_sync=0 +# no cmosimage +log: - +logprefix: %t%e%d +debug: action=ignore +info: action=report +error: action=report +panic: action=ask +keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none +mouse: type=ps2, enabled=false, toggle=ctrl+mbutton +com1: enabled=true, mode=null +com2: enabled=false +com3: enabled=false +com4: enabled=false +parport1: enabled=true, file=none +parport2: enabled=false +speaker: enabled=true, mode=system