cmake: add support for cd-rom booting via Bochs

This commit is contained in:
2026-02-21 23:25:54 +00:00
parent 728e1f057c
commit 5bc9ff4fd1
3 changed files with 72 additions and 0 deletions

View File

@@ -1,2 +1,3 @@
include(System-Disk)
include(QEMU)
include(Bochs)

18
arch/x86_64/Bochs.cmake Normal file
View File

@@ -0,0 +1,18 @@
find_program(BOCHS bochs)
if (NOT BOCHS)
message(STATUS "Bochs: cannot find bochs")
return()
endif ()
if (NOT TARGET cdrom)
message(STATUS "Bochs: CD-ROM image creation is unavailable. Cannot use bochs")
return()
endif ()
message(STATUS "Bochs: Enable CD-ROM boot")
add_custom_target(run-cdrom-bochs
COMMAND ${BOCHS} -q -f ${CMAKE_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/bochsrc.bxrc
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
USES_TERMINAL
DEPENDS cdrom)

53
arch/x86_64/bochsrc.bxrc Normal file
View File

@@ -0,0 +1,53 @@
# configuration file generated by Bochs
plugin_ctrl: unmapped=true, biosdev=true, speaker=true, extfpuirq=true, parallel=true, serial=true, iodebug=true
config_interface: textconfig
display_library: sdl2
memory: guest=128, host=128, block_size=128
romimage: file="/usr/local/share/bochs/BIOS-bochs-latest", address=0x00000000, options=none, flash_data=none
vgaromimage: file="/usr/local/share/bochs/VGABIOS-lgpl-latest.bin"
boot: cdrom
floppy_bootsig_check: disabled=0
floppya: type=1_44
# no floppyb
ata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=cdrom, path="rosetta-system.iso", status=inserted, model="Generic 1234", biosdetect=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=none, slot2=none, slot3=none, slot4=none, slot5=none
vga: extension=vbe, update_freq=10, realtime=1, ddc=builtin, vbe_memsize=16
cpu: count=1:1:1, ips=4000000, quantum=16, model=core2_penryn_t9600, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
print_timestamps: enabled=0
debugger_log: -
magic_break: enabled=1 0x0
port_e9_hack: enabled=false, all_rings=false
iodebug: all_rings=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=150, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=false, toggle=ctrl+mbutton
speaker: enabled=true, mode=system
parport1: enabled=true, file=none
parport2: enabled=false
com1: enabled=true, mode=null
com2: enabled=false
com3: enabled=false
com4: enabled=false