linux下bochs的安装及简单运行

    技术2022-06-13  108

    http://bochs.sourceforge.net/    bochs官网。关于bochs不再累述。

    我是在UBUNTU下用包管理软件apt-get装的bochs.命令

    apt-get install bochs

    这是一个没有调试环境的安装,先感受一下小成功的滋味。。呵呵

    这样的安装后,在命令行下执行$bochs会跳出一个配置界面,表害怕,这说安装成功啦。仔细阅读他的提示会发现是没有配置文件

    (配置文件bochsrc,ROMIMAGE,VGAROMIMAGE。这些不解释。自己查)。你可以配置一个简单的bochsrc。内容如下:

      1###############################################################   2 # Configuration file for Bochs   3 ###############################################################   4   5 # how much memory the emulated machine will have   6 megs: 64   7   8 # filename of ROM images   9 romimage: file=/usr/share/bochs/BIOS-bochs-latest  10  11 # what disk images will be used  12 floppya: 1_44=a.img, status=inserted  13  14 # choose the boot disk.  15 boot: floppy  16  17 # where do we send log messages?  18 # log: bochsout.txt  19  20 # disable the mouse  21 mouse: enabled=0  22  23 # enable key mapping, using US layout as default.

     

    这个文件至少可以使bochs能共运行嘿嘿,因为网上高手都是安装后直接运行就行啦,可是小弟的就是没有。出现各种错误,,可能是你的bochs没找到配置文件,而你从网上复制的是比较长,专业,但是有的文件可能版本不同,路径不同,所以在启动时就会出现找不到的错误,这是个最简单的。很多都用的是你安装软件的默认路径。关于配置文件的书写,最好的就是man bochsrc,标准教程

    下面是一个启动文件,是《linux内核完全剖析)第三章的例子,很简单的功能,

    *******************************************************************************************************************************************************

      1!   2 !boot.s -- bootsect.s 的框架程序。用代码0x07替换msag中1字符,然后在屏幕第一行上显示   3 !   4   5 .globl begtext,begdata,begbss,endtext,enddata,endbss     !全局标识符,供ld86链接使用   6 .text                                                    !正文段   7 begtext:   8 .data                                                    !数据段   9 begdata:  10 .bss                                                     !未初始化数据段  11 begbss:  12 .text                                                    !正文段开始  13 BOOTSEG = 0x7c0                                          !BIOS加载bootsect代码的原始段地址。  14  15  16 entry start                                              !告知链接程序,程序从strat标号处开始执行  17  18 start:  19         jmpi  go,BOOTSEG                                 !段间跳转。BOOTSEG指出跳转段的地址,标号go是偏移地址  20 go:     mov   ax,cs                                      !段寄存器cs值-->ax,用于初始化数据段寄存器ds和es  21         mov   ds,ax  22         mov   es,ax  23         mov   [msg1+17],ah                               !0x07-->替换字符串1个点符号,喇叭会鸣一声  24         mov   cx,#20                                     !共显示20个字符,包括回车换行符  25         mov   dx,#0x1004                                 !字符串显示在屏幕第17行,第5列处  26         mov   bx,#0x000c                                 !字符显示属性(红色)  27         mov   bp,#msg1                                   !指向要调用的字符串(中断调用要求)  28         mov   ax,#0x1301                                 !写字符串并移动光标到串结尾处  29         int   0x10                                       !BIOS中断调用0x10,功能0x13,子功能01  30 loop0:  jmp   loop0                                      !死循环  31  32 msg1:   .ascii "Loading system..."                       !调用BIOS中断显示的信息。共20个ASCII码字符。  33         .byte  13,10  34  35  36 .org    510                                              !表示以后语句从地址510(0x1FE)开始存放  37         .word 0xAA55                                     !有效引导扇区标志,供BIOS加载引导扇区使用。  38  39 .text  40 endtext:  41 .data  42 enddata:  43 .bss  44 endbss: *************************************************************************************************************************************

    编译过程:

    $as86 -0 -a -o boot.o boot.s

    $ld86 -0 -s -o boort boot.o

    $dd bs=32 if =boot of=a.img skip=1

    这样然后启动bochs可以看到屏幕上的“loading system"

    程序的解释及编译过程下篇文章

    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

    上面是简单的bochs安装与实验,安装成功很简单,但是不会带调试,要带调试要原码编译:

    本来也不是多复杂

    安装bochs: 然后到bochs官方网站下载源码包 bochs-2.4.6.tar.gz 解压此文件:

    tar  vxzf   bochs-2.4.26tar.gz cd bochs-2.4.2 ./configure   --enable-debugger   --enable-disasm make sudo  make install

    可是ubuntu少装的东西真是不少(至少我的是)

    sudo   apt-get    bulid-essional (如果以前安装过就免了) sudo apt-get install xorg-dev

    但是装着两个估计你看到的期望的场面的几率很小

    我的还有一个gtk没有装等等。。。。

    出现的调试错误直接把错误信息甩到google上。会找到答案。

    望兄弟们一遍成功

     


    最新回复(0)