我的操作系统是Ubuntu12.04
如果你使用的也是Ubuntu操作系统,可以使用下面的命令来安装Bochs:
从Bochs的官方网站http://bochs.sourceforge.net/下载最新的Bochs源代码包,我下载的是bochs-2.6.2.tar.gz。
安装过程差不多是这个样子的:
$tar vxzf bochs-2.4.5.tar.gz $cd bochs-2.4.5 $./configure --enable-debugger --enable-disasm $make $sudo make install解释一下上面几行命令:
Bochs已经安装完毕。现在,我们已经有了计算机(Bochs),还差一张引导软盘。既然计算机都可以虚拟,软盘当然也可以。在刚刚装好的Bochs组件中,有一个工具叫做bximage(见表1的第二项),它既能生成虚拟软盘,也能生成虚拟硬盘,我们也称它们为磁盘映像。创建一个软盘映像的过程如下所示:在命令行输入bximage
======================================================================== bximage Disk Image Creation Tool for Bochs $Id: bximage.c,v 1.34 2009/04/14 09:45:22 sshwarts Exp $ ======================================================================== Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] fd Choose the size of floppy disk image to create, in megabytes. Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. [1.44] I will create a floppy image with cyl=80 heads=2 sectors per track=18 total sectors=2880 total bytes=1474560 What should I name the image? [a.img] Writing: [] Done. The following line should appear in your bochsrc: floppya: image="a.img", status=inserted
org 07C00h ; 告诉编译器程序加载到0000:7C00处 mov ax, cx 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 ; 调用BIOS的10号中断 ret BootMessage: db "Hello World!" ; 要显示的字符串 times 510-($-$$) db 0 ; 填充剩余空间,使生成的二进制代码恰好为512字节 dw 0XAA55 ; 结束标志
$nasm boot.asm -o boot.bin
如果没有安装NASM,可以用如下命令进行安装:
$sudo apt-get install nasm
编译完成后,会在当前目录生成一个512字节的boot.bin文件,使用dd命令将它写进刚刚创建的软盘映像a.img的第一个扇区
$dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
Ok,马上就可以启动Bochs了。不过别急,在启动Bochs之前还需要为运行系统预先设置一些模拟环境的参数。这些参数可以在命令行上传递给Bochs执行程序,但通常都使用一个文本形式的配置文件(例如bochsrc)为专门的一个应用来设置运行参数。在目录/usr/local/share/doc/bochs下有一个bochsrc-sample.txt,我们可以参照它来写一个。这里既有好消息也有坏消息,坏消息是这个文件很长,好消息是大部分都是注释。
我们在当前目录下新建一个文件,命名为bochsrc(注意,没有后缀)。
############################################################### # Configuration file for Bochs(Linux) ############################################################### #======================================================================= # filename of ROM images #======================================================================= romimage: file=$BXSHARE/BIOS-bochs-latest #======================================================================= # VGAROMIMAGE # You now need to load a VGA ROM BIOS into C0000. #======================================================================= vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest #======================================================================= # what disk images will be used #======================================================================= floppya: 1_44=/home/chen/exp/a.img, status=inserted #======================================================================= # choose the boot disk. #======================================================================= boot: floppy #======================================================================= # where do we send log messages? #======================================================================= log: bochsout.txt #======================================================================= # disable the mouse #======================================================================= mouse: enabled=0 #======================================================================= # enable key mapping, using US layout as default. #======================================================================= keyboard_mapping: enabled=0, map= #======================================================================= # how much memory the emulated machine will have #======================================================================= megs: 32
$bochs
最终可以看到如下界面