美文网首页
Centos 7 bochs安装攻略(采坑血泪史)

Centos 7 bochs安装攻略(采坑血泪史)

作者: panbook | 来源:发表于2019-07-31 10:53 被阅读0次

    安装步骤

    环境 

    CentOS release 7.5.1804

    gcc version 4.8.5 

    依赖库安装

    sudo yum install gtk2 gtk2-devel

    sudo yum install libXt libXt-devel

    sudo yum install libXpm libXpm-devel

    sudo yum install SDL SDL-devel

    ( sudo yum install libXrandr-devel.x86_64 )

    ( yum install xorg-x11-server-devel )

    源码配置和安装

    获取和解压

    源码地址:https://sourceforge.net/projects/bochs/files/bochs/2.6.8/

    wget https://sourceforge.net/projects/bochs/files/bochs/2.6.8/bochs-2.6.8.tar.gz

    tar xvfz bochs-2.6.8.tar.gz

    配置

    ./configure --enable-ne2000 \

              --enable-all-optimizations \

              --enable-cpu-level=6 \

              --enable-x86-64 \

              --enable-vmx=2 \

              --enable-pci \

              --enable-usb \

              --enable-usb-ohci \

              --enable-e1000 \

              --enable-debugger \

              --enable-debugger-gui \

              --enable-disasm \

              --with-sdl \

              --with-x11

    错误解决方案

    若遇到以下问题

    checking how to run the C++ preprocessor...

    /lib/cpp

    configure: error: in `/home/shupan/source/bochs-2.6.8':

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

    缺少相关头文件,执行以下命令解决

    sudo yum install glibc-headers gcc-c++

    若出现以下错误

    sdl.cc:36:17: fatal error: SDL.h: No such file or directory

    #include <SDL.h>

                    ^

    compilation terminated.

    则执行:  sudo yum install SDL SDL-devel

    出现其他错误类似,yum search xxx, 然后再安装

    安装

    sudo make  && make install

    添加环境变量

    export BXSHARE=/usr/local/share/bochs

    (可写入到~/.bash_profile中,记得source)

    若安装在非系统目录下,则还需添加PATH环境变量,如

    export PATH="$PATH:$HOME/opt/bochs/bin"

    镜像文件制作

    执行:bximage 

    依次键入:

    1

    fd

    Enter

    boot.img

    汇编程序编写

    vim boot.asm

    org 07c00h ;告诉编译器,程序加载到内存地址07c00h

        mov ax,cs

        mov ds,ax

        mov es,ax

        call DispStr    ;调用显示字符串例程

        jmp $          ;无限循环

    DispStr:

        mov ax,BootMessage

        mov bp,ax      ;es:bp = 字符串地址

        mov cx,16      ;cx = 字符串长度

        mov ax,01301h  ; ah = 13h,  al = 01h

        mov bx,000ch    ;页号为0(bh = 0) 黑底红字(bl = 0Ch,高亮)

        mov dl,0

        int 10h        ;10h号中断

        ret

    BootMessage:  db "Hello, OS World!"

    times 510-($-$$)  db 0      ;填充剩下的空间,使生成的二进制代码恰好为512字节

    dw 0xaa55          ;MBR结束标志

    安装nasm

    sudo yum install nasm

    编译镜像文件

    nasm boot.asm -o boot.bin

    dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc

    bochsrc配置

    vim .bochsrc  【注意加载顺序】

    # how much memory the emulated machine will have

    megs: 32

    # filename of ROM images

    # BIOS已经修改,地址可以不加,可以根据文件大小进行推断,如里加地址要与文件大小相匹配

    romimage: file=$BXSHARE/BIOS-bochs-latest

    vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

    # what disk images will be used

    # 配置镜像名

    floppya: 1_44=boot.img, status=inserted

    # choose the boot disk.

    boot: a

    # where do we send log messages?

    log: run.log

    # disable the mouse, since Finix is text only

    mouse: enabled=0

    # enable key mapping, using US layout as default.

    # 键盘的映射方式也改变了

    keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map

    加载执行

    bochs -f .bochsrc

    注意:需要有对应的库和图形界面,若连接远程或者没有对应的图形界面库,则会报如下错误(当时采坑了好久)

    >>PANIC<< Cannot connect to X display  

    是本机,不是远程。  需要展示图形界面。

    选6

    再按C (continue)继续执行,展示如下界面,

    展示出 “Hello,OS World!"

    参考资料

    https://www.cnblogs.com/pro-love/p/10947790.html

    https://sourceforge.net/projects/bochs/files/bochs/2.6.8/

    相关文章

      网友评论

          本文标题:Centos 7 bochs安装攻略(采坑血泪史)

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