美文网首页
操作系统真相还原之bochs环境配置

操作系统真相还原之bochs环境配置

作者: mecury | 来源:发表于2022-09-21 22:59 被阅读0次

    bochs 2.6.2 下载地址:https://sourceforge.net/projects/bochs/files/bochs/2.6.2/

    configure

    ./configure \
    --prefix=/home/lihaifei/bochs-2.6.2 \
    --enable-debugger \
    --enable-disasm \
    --enable-iodebug \
    --enable-x86-debugger \
    --with-x \
    --with-x11
    

    报错1: configure: error: no acceptable C compiler found in $PATH

    sudo yum install gcc
    

    报错2:configure: error: C++ preprocessor "/lib/cpp" fails sanity check

    yum install -y gcc-c++
    

    make

    报错1: gtk_enh_dbg_osdep.cc:20:21: fatal error: gtk/gtk.h: No such file or directory

    sudo yum install gtk2 gtk2-devel gtk2-devel-docs
    

    需要重新执行 configure

    ** 报错2:**

    /usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
    //usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line
    

    解决:vim Makefile 文件, 在 92 行增加 -lphread.然后重新 make

    bochs初启动

    # 设置虚拟机内存为32MB
    megs: 32
    # 设置BIOS镜像
    romimage: file=$BXSHARE/BIOS-bochs-latest 
    # 设置VGA BIOS镜像
    vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
    # 设置从硬盘启动
    boot: disk
    # 设置日志文件
    log: bochsout.txt
    # 关闭鼠标
    mouse: enabled=0
    # 打开键盘
    keyboard: type=mf, serial_delay=250
    # 设置硬盘
    ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
    # 添加gdb远程调试支持
    gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
    

    执行步骤:

    1. bin/bochs -f ./bochsrc.disk
    2. bin/bximage -hd -mode='flat' -size=60 -q hd60M.img
    3. 在代码文件中ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14增加:
      ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
    4. bin/bochs -f ./bochsrc.disk,执行成功后按下 c ,继续下一步。

    问题1:

    [lihaifei@192 bochs-2.6.2]$ bin/bochs
    ========================================================================
                           Bochs x86 Emulator 2.6.2
                    Built from SVN snapshot on May 26, 2013
                      Compiled on Sep 20 2022 at 09:43:08
    ========================================================================
    00000000000i[     ] reading configuration from .bochsrc
    00000000000e[     ] .bochsrc:192: invalid choice 'core2_penryn_t9600' parameter 'model'
    00000000000p[     ] >>PANIC<< .bochsrc:192: cpu directive malformed.
    00000000000e[CTRL ] notify called, but no bxevent_callback function is registered
    ========================================================================
    Bochs is exiting with the following message:
    [     ] .bochsrc:192: cpu directive malformed.
    ========================================================================
    00000000000i[CPU0 ] CPU is in real mode (active)
    00000000000i[CPU0 ] CS.mode = 16 bit
    00000000000i[CPU0 ] SS.mode = 16 bit
    00000000000i[CPU0 ] EFER   = 0x00000000
    00000000000i[CPU0 ] | EAX=00000000  EBX=00000000  ECX=00000000  EDX=00000000
    00000000000i[CPU0 ] | ESP=00000000  EBP=00000000  ESI=00000000  EDI=00000000
    00000000000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
    00000000000i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00000000000i[CPU0 ] |  CS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  DS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  SS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  ES:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  FS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  GS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] | EIP=00000000 (00000000)
    00000000000i[CPU0 ] | CR0=0x00000000 CR2=0x00000000
    00000000000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    bx_dbg_read_linear: physical memory read error (phy=0x000000000000, lin=0x00000000)
    00000000000i[CTRL ] quit_sim called with exit code 1
    

    在bochs启动过程中出现错误“invalid choise core2_penryn_t9600”引起“cpu directive malformed”

    解决:

    1. bochs -help cpu
    将显示出所有支持的CPU类型
    2. 修改.bochsrc文件中cpu: model=core2+penryn_t9600为cpu: model=上一条查到的所支持的CPU类型之一
    ————————————————
    版权声明:本文为CSDN博主「lvsi12」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lvsi12/article/details/24393089
    

    问题2 :Bochs is not compiled with gdbstub support

    [lihaifei@192 bochs-2.6.2]$ bin/bochs -f ./bochsrc.disk
    ========================================================================
                           Bochs x86 Emulator 2.6.2
                    Built from SVN snapshot on May 26, 2013
                      Compiled on Sep 20 2022 at 09:43:08
    ========================================================================
    00000000000i[     ] reading configuration from ./bochsrc.disk
    00000000000e[     ] ./bochsrc.disk:12: 'keyboard_mapping' will be replaced by new 'keyboard' option.
    00000000000p[     ] >>PANIC<< ./bochsrc.disk:16: Bochs is not compiled with gdbstub support
    00000000000e[CTRL ] notify called, but no bxevent_callback function is registered
    ========================================================================
    Bochs is exiting with the following message:
    [     ] ./bochsrc.disk:16: Bochs is not compiled with gdbstub support
    ========================================================================
    00000000000i[CPU0 ] CPU is in real mode (active)
    00000000000i[CPU0 ] CS.mode = 16 bit
    00000000000i[CPU0 ] SS.mode = 16 bit
    00000000000i[CPU0 ] EFER   = 0x00000000
    00000000000i[CPU0 ] | EAX=00000000  EBX=00000000  ECX=00000000  EDX=00000000
    00000000000i[CPU0 ] | ESP=00000000  EBP=00000000  ESI=00000000  EDI=00000000
    00000000000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
    00000000000i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00000000000i[CPU0 ] |  CS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  DS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  SS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  ES:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  FS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] |  GS:0000( 0000| 0|  0) 00000000 00000000 0 0
    00000000000i[CPU0 ] | EIP=00000000 (00000000)
    00000000000i[CPU0 ] | CR0=0x00000000 CR2=0x00000000
    00000000000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    bx_dbg_read_linear: physical memory read error (phy=0x000000000000, lin=0x00000000)
    00000000000i[CTRL ] quit_sim called with exit code 1
    

    解决方法:
    注释最后一行,禁用gdb调试。参考:https://zhuanlan.zhihu.com/p/390664291

    相关文章

      网友评论

          本文标题:操作系统真相还原之bochs环境配置

          本文链接:https://www.haomeiwen.com/subject/ozmvortx.html