Bochs的安装配置

[转载] 原文:https://blog.csdn.net/bychen623/article/details/53619084 

Bochs:为多平台设计的x86架构模拟器/虚拟机

材料: 
1、Ubuntu16.04LTS 
2、Bochs-2.6.8

一、安装步骤: 


1、到官网上下载Bochs-2.6.8.tar.gz 下载链接

下载源码而不直接使用sudo apt-get install vgabios bochs bochs-x bximage命令行安装是因为我们还要安装Bochs的调试功能

2、解压下载好源码:

tar zxvf bochs-2.6.8.tar.gz


3、进入解压后的目录,然后执行命令行:

./configure --enable-debugger --enable-disasm
make
sudo make install


注意: 
第1条是开启Bochs的调试和反汇编功能; 
安装过程中可能出现一些问题,一般都是一些包和引用没有安装,下面是我遇到的几个问题及解决方案:

错误1:fatal error: X11/Xlib.h: No such file or directory 
解决方案:sudo apt-get install libx11-dev

错误2:fatal error: X11/extensions/Xrandr.h: No such file or directory 
解决方案:sudo apt-get install xorg-dev

安装成功后,在终端输入bochs即可看到bochs的画面了: 

Bochs的安装配置


二、配置Bochs 


安装好Bochs后,接下来就需要对Bochs进行配置了,如果你不自己写配置文件的话,执行bochs命令时Bochs会自己在当前目录顺序寻找以下文件作为默认配置文件: 
.bochsrc 
bochsrc 
bochsrc.txt 
bochsrc.bxrc(仅对Windows有效)

我们可以通过ls -a命令看到Bochs安装目录下的所有文件: 

Bochs的安装配置
然后可以进入到.bochsrc文件里面查看自带的配置信息

在这里我们自己创建一个名叫bochsrc的配置文件,来告诉Bochs我们想要的虚拟机是什么样子的,下面就是我的配置文件:

#################################################################
# Bochs的配置文件
# Configuration file for Bochs
#################################################################

# how much memory the emulated machine will have
megs: 32

# filenameof ROM images
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# which disk image will be used 这个是启动软盘,我们虚拟出来的那个a.img
floppya:1_44=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:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map


注意这里要确保romimage和vgaromimage这两项的路径是正确的,不然虚拟机启动时会提示“couldn’t open ROM image file”的错误,还有Bochs的版本不一样的话,键盘设置的方式也不太一样。

接下来再来说一说如何创建镜像,bochs创建镜像是特别简单的,只需要敲下面命令:

bximage

Bochs的安装配置

然后会有几个选项(红框框里面的),第一个是选择生成硬盘镜像还是软盘,我们选择fd;第二个是镜像大小选择,1.44就可以了;第三个是命名,这里随便自己了。

三、最简单的操作系统 


那么接下来,我们就要开始写一个最简单的操作系统了,这个代码全由汇编完成,而且只有不到20行:

    org    07c00h
    mov    ax, cs
    mov    ds, ax
    mov    es, ax
    call   DispStr
    jmp    $
DispStr:
    mov    ax, BootMessage
    mov    bp, ax
    mov    cx, 16
    mov    ax, 01301h
    mov    bx, 000ch
    mov    dl, 0
    int    10h
    ret
BootMessage:    db    "Hello, OS world!"
times    510-($-$$)    db    0
dw       0xaa55


用NASM编译一下这段代码:

nasm boot.asm -o boot.bin


k然后在boot.asm的目录下我们可以看到多了一个512字节的boot.bin文件,这个文件就要被我们写入到软盘里面。这里当然你可以写入到一个真实的空白软盘上,但是现在基本上都已经见不到软盘了吧,所以我们这里就用Bochs来虚拟出所需要的软盘。

四、Bochs的使用 


1.创建软盘映像: 
输入sudo bximage,然后在问到要创建hd还是fd的时候,输入fd,之后就一直回车默认就行了 

Bochs的安装配置


2.这下我们通过虚拟,有了计算机,又有了软盘,是时候将我们刚刚编译好的引导扇区写进软盘了,Linux下自带了dd命令可以很方便地进行软盘读写:

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


Bochs的安装配置


一切准备就绪,是时候进行启动Bochs了,进入到你的boot.bin所在目录下,然后在终端输入命令:

sudo bochs -f bochsrc


注意:这里要特别注意bochsrc就是我们第二步写的那个配置文件,因为安装Bochs成功之后可以在任意地方使用bochs命令了,但是要使用我们的配置文件bochsrc的话就需要加上绝对路径,比如非Bochs安装目录下运行bochs的命令如下:

sudo bochs -f /home/bychen/downloads/bochs-2.6.8/bochsrc


输入回车, 
(注意:如果这里出现是一个什么都没有的一片黑色的界面的话,那是因为我们这里是带调试模式的Bochs,回车之后还需要一次回车,然后在出现Bochs提示符之后输入“c”,再次回车) 


看到Bochs界面上出现的“Hello, OS world!” 
这就是一个最简单的操作系统了~