Linux上Bochs的安装和配置

Linux上Bochs的安装和配置

下载Bochs最新版

编译安装Bochs

configure
  • 配置configure工具,生成Makefile

    1
    ./configure --with-x11 --with-wx --enable-plugins --enable-debugger --enable-debugger-gui --enable-readline --enable-cpp --enable-idle-hack --enable-cpu-level=6 --enable-x86-64 --enable-smp --enable-vmx=2 --enable-svm --enable-avx --enable-x86-debugger --enable-monitor-mwait --enable-configurable-msrs --enable-long-phy-address --enable-repeat-speedups --enable-fast-function-calls --enable-trace-linking --enable-ltdl-install --enable-assert-checks --enable-3dnow --enable-evex --enable-usb --enable-voodoo
  • 若提示缺少gccccclg++等则安装即可

  • 如提示缺少configure命令,则使用chmod 764 configre改变文件属性即可

  • 提示The readline library was disabled because it was not found,安装libreadline-dev即可

  • 提示handlers-chaining speedups are not supported with internal debugger or gdbstub yet

    此时参考官方文档,去除--enable-handlers-chaining

  • 提示WARNING: Bochs for wxWidgets cannot be compiled here, disabling it

    此时安装libwxbase3.0-dev库和libwxgtk3.0-gtk3-dev

  • 提示Package gdk-3.0 was not found in the pkg-config search path。安装libgtk-3-dev

  • 参考X windows libraries?? (narkive.com)

Make
  • 执行make命令

  • 找不到config.h头文件和osdep.h头文件

    分析可得,此时bx_debug文件夹内的debug.h文件找不到config.h文件和osdep.h文件,经查看,这两个文件都在bochs-2.7目录下,移入bx_debug目录即可或者更改debug.h中的路径。其他缺少的头文件可使用类似方式解决。

    c - Gtk can’t find “” - Stack Overflow

  • make: *** 没有规则可制作目标“misc/bximage.cc”,由“misc/bximage.o” 需求。 停止。出现类似问题,只需要找到文件,将其后缀由cpp改为cc

make install
  • 执行sudo make install命令即可。
检测安装结果
  • 执行bochs命令,出现如下结果则表示安装成功

配置Bochs

  • 为将要调试的操作系统配置虚拟硬件环境。此环境通过bochsrc描述,默认此文件所在目录为/etc/bochs-init/。当运行bochs时默认读取当前工作目录下的bochsrc文件。

  • 配置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    # configuration file generated by Bochs 
    plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1
    config_interface: textconfig
    display_library: x
    romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
    vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
    boot: floppy
    floppy_bootsig_check: disabled=0
    floppya: type=1_44, 1_44="boot.img", status=inserted, write_protected=0
    ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
    ata0-master: type=none
    ata0-slave: type=none
    ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
    ata1-master: type=none
    ata1-slave: type=none
    ata2: enabled=0
    ata3: enabled=0
    pci: enabled=1, chipset=i440fx
    vga: extension=vbe, update_freq=5
    cpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0, msrs="msrs.def"
    cpuid: x86_64=1,level=6, mmx=1, sep=1, simd=avx512, aes=1, movbe=1, xsave=1, apic=x2apic, sha=1, movbe=1, adx=1, xsaveopt=1, avx_f16c=1, avx_fma=1, bmi=bmi2, 1g_pages=1, pcid=1, fsgsbase=1, smep=1, smap=1, mwait=1, vmx=1
    cpuid: family=6, model=0x1a, stepping=5, vendor_string="GenuineIntel", brand_string="Intel(R) Core(TM) i7-4770 CPU (Haswell)"
    print_timestamps: enabled=0
    debugger_log: -
    magic_break: enabled=0
    port_e9_hack: enabled=0
    private_colormap: enabled=0
    clock: sync=none, time0=local, rtc_sync=0
    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=0, toggle=ctrl+mbutton
    speaker: enabled=1, mode=system
    parport1: enabled=1, file=none
    parport2: enabled=0
    com1: enabled=1, mode=null
    com2: enabled=0
    com3: enabled=0
    com4: enabled=0

    megs: 2048

    参考官方文档bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation) (sourceforge.io)

  • 配置完成后运行bochs,出错及处理如下

    • bochs: cannot connect to X server,此时是因为本地机器不支持X11转发。

测试

  • 使用bximage制作1.44MB软盘

  • 下载Linux早期版本的bochs镜像文件。此处选择bootroot-0.11-040928.zip下载,解压后如下。其中bootroot-0.11即为此处要用的软盘镜像文件。下载地址Linux Bochs镜像下载

  • bootimage-0.11写入到boot.img

    1
    dd if=bootroot-0.11 of=boot.img

  • 运行bochssudo bochs。出现如下界面,即为正确。


参考