当前位置: 首页 > news >正文

Linux上Bochs的安装和配置

下载Bochs最新版
  • 进入网址Bochs x86 PC emulator - Browse /bochs at SourceForge.net,点击最新版进入

  • 选择相应的版本,此处为Linux平台,所以选择bochs-2.7.tar.gz,点击下载

  • 解压后使用scp命令上传至Linux平台(假设下载在windows平台进行)

编译安装Bochs
configure
  • 配置configure工具,生成Makefile

    ./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文件。

  • 配置信息

    # 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

    dd if=bootroot-0.11 of=boot.img
    

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


参考
  • Linux Bochs镜像下载
  • bochs安装配置,搭建小型操作系统运行环境 - 知乎 (zhihu.com)
  • assembly - FLOPPY: read() on floppy image returns 0 - Stack Overflow
  • Bochs x86 PC emulator - Browse /bochs at SourceForge.net
  • X windows libraries?? (narkive.com)
  • c - Gtk can’t find “” - Stack Overflow
  • bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation) (sourceforge.io)
http://www.xdnf.cn/news/827947.html

相关文章:

  • PHP-FPM、FastCGI和PHP-CGI的用途及示例代码
  • 地心护核者xapofx1_5.dll丢失怎么办?地心护核者xapofx1_5.dll丢失多种解决方法全面分析
  • 去padding_心中无码,自然高清 || 联合去马赛克与超分辨率研究论文Pytorch复现
  • minidump详细介绍
  • 关于不能往yahoo,sina等地址发邮件的问题
  • yandex.com在线以图搜图(找资源网站)
  • linux 访问本地网页内容,(转)linux 命令访问url: curl http://www.baidu.com/index.html...
  • 【解决方案】win11中本地组策略编辑器(gpedit.msc)打不开
  • 模拟电子技术基础 第一章
  • GSLB是什么?谈谈对该技术的一点理解
  • CocoaPods安装以及一些问题处理-2022.6.21
  • Oracle 体系结构(24)—— Oracle 的权限管理与角色(role)
  • JS事件之onmouseover 、onmouseout 与onmouseenter 、onmouseleave区别
  • 渗透测试靶机--- Stapler-1
  • 解决Win10找不到d3d9.dll文件问题
  • 【sshd】sshd_config 中 PermitRootLogin 的forced-commands-only的限定密钥登陆、限定执行命令
  • OpenAnolis开源社区的萌芽与发展
  • d2l中各种内定函数的笔记
  • 使用 Nexus3 搭建 Maven 私服
  • oracle关于rownum的使用【oracle】
  • 襟翼是什么?——浅述飞控襟翼系统
  • BlockingQueue详解
  • AFNetworking详解
  • throwable_您想知道的所有关于Throwable的信息
  • Linux中usr是什么?其有何作用?
  • 解决飞Q 在win7下 找不到的问题
  • C#中三层架构UI、BLL、DAL、Model详解
  • 计算机单机取证(autopsy工具使用)
  • 加密狗是什么?一次性给您说全加密狗的概念
  • 如何在 Linux 上刷新 DNS 缓存?