本人一年前刚学linux系统的时候花了两天时间安装bochs,完全没头绪,后来半年前尝试安装还是失败,幸运的是b站过去几个月出了一些安装视频,所以我结合之前踩过的坑为大家带来详细的安装步骤,废话不多说,开始:
我的bochs是2.7版本,不过版本不重要了,其它版本安装流程基本都一样
首先,我把安装目录放在家目录下Downloads文件夹下面,即:
如果新手对于路径的问题还是比较迷茫的话,可以和我安装在同一路径,完全按照我的步骤来
这里对于新手说明一下,切换到家目录的三种方式:
1.在终端输入cd
2.在终端输入cd ~
3.在终端输入cd $HOME
$HOME的路径即 /home/你创建ubuntu时用到的用户名
4.直接点击左边的文件,进入我上图所示的界面,类似windows操作文件方式
然后接下来在终端中输入
cd Downloads/ //如果你是中文或者是其它语言或者其它单词,按照你系统中的输入
之后在终端输入ls,会看到:
那么这个就是我们bochs安装包所在的路径
接下来在终端输入:
tar zxvf bochs-2.7.tar.gz //同样,如果你是其他版本,按照你的安装包名输入
之后在Downloads目录下会看到:
这里的bochs-2.7就是我们的安装包
接下来,在终端输入
cd bochs2.7/
进入到bochs2.7文件夹下
接下来在命令行窗口中输入:
./configure \# 这里把bochs放在目录"$HOME/Downloads"下--prefix=$HOME/Downloadsbochs \ --enable-debugger \--enable-disasm \--enable-iodebug \--enable-x86-debugger \--with-x \--with-x11
即:
注意事项!!!!我前两次安装的时候,看的是《操作系统真象还原》这本书,就是在这个地方卡住了,即在哪里输入?后面的 \ 符号是什么意思?也没有回答来解释,还是看视频才会的
上面的是在终端输入的!!!每行输入上面所对应的一行
#是注释,就不要输入了
每一行和 \ 之间有空格,同时 \ 也需要输入!因为在linux系统中,最后加入\,就表示可以换行输入命令,不然你输入一行直接按回车的话就会直接完成命令的输入,下面的就无法一起输入了!
第二行,即prefix那一行,表示你想把安装后的bochs放在哪里,我这里放在家目录下Downloads里面,即和bochs2.7安装包放在一起。
最后那一行就不需要加 空格\ 了
在上面安装的时候可能有如下问题:
fatal error: X11/Xlib.h: No such file or directory
Ubuntu 编译提示 configure: error: no acceptable C compiler found in $PATH
按照上面的步骤安装即可
之后输入
make
即:
这个过程会有点慢
完成之后,看是否有错误,没有就输入:
//因为我是用户账号来输入的,没有切换到root账号,所以需要sudo来以管理员//的权限运行sudo make install
即:
这个过程就比较快了
之后切换到上一级目录,输入ls,会发现多了两个bin文件和share文件夹,
这两个文件夹就是我们配置bochs所需要的了
当我们进入到bin目录下会看到bximage和bochs两个文件,其中bximage是
我们配置启动盘时的核心
当我们进入到share目录下会看到bochs doc man三个文件夹,其中bochs文件夹中有两个文件极其重要,即我下图中画圈的两个文件
好,接下来就开始配置吧。
首先,我先切换到bin目录
输入
sudo gedic bochsrc.disk
在文件中写入:
# 设置bochs在运行中能够使用的内存,我这里设置32MBmes: 32# 设置真实机器所对应的BIOS和VGA BIOS# 这里的路径是按照我上面讲的那两个重要文件的路径来的# 如果你和我路径不一样,不要直接抄我的!roimage: file=/home/你的用户名/Downloads/share/bochs/BIOS-bochs-latestvgaromimage: file=/home/你的用户名/Downloads/share/bochs/VGABIOS-lgpl-latest# 选择启动磁盘,我这里是选择以硬盘启动# 如果你想按照软盘启动的话则boot: floppyboot: disk# 设置日志文件输出路径log: bochsout.txt# 关闭鼠标mouse: enabled=0# 磁盘设置ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14# 启动盘信息hd60M.img,下面的hd60M.img为我们启动硬盘# 我们之后创建的启动硬盘必须放在该路径下且必须同名# 下面的path也可以写成path="hd60M.img",不过要求你的hd60M.img在bin文件夹下ata0-master: type=disk, path="/home/你的用户名/Downloads/bin/./hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
在终端输入ls会看到:
成功创建了bochsrc.disk文件
然后我们输入bochs,会看到如下界面:
说明安装成功,上面的BXSHARE not set. using…那一行说明我们并未使用配置文件,稍后使用
我们再输入6,会看到:
再输入c,会看到:
出现这个错误,表明我们并未创建启动盘。
下面,我们的思路是创建一个测试文件,后缀名为asm,然后经过nasm编译,生成后缀名为bin的二进制文件。然后创建一个硬盘,通过bin目录下的bximage来创建,再把刚才生成的.bin文件写入硬盘中,最后启动bochs测试。
创建硬盘命令:
/bochs/bin/bximage -hd -mode="flat" -size=60 -q hd60M.img
编译命令:
nasm test.asm -o test.bin
文件写入硬盘命令
dd if=test.bin of=/home/你的用户名/Downloads/bin/hd60M.img bs=512 count=1 conv=notrunc
一般来说,我们可以把这三个命令放入到一个后缀名为sh的脚本文件中,然后执行该脚本文件。但是我执行这个脚本文件时,会发现终端中提示:
Unknown option: -hd
原因是我的系统无法通过配置文件来执行创建磁盘的命令,所以需要在命令行通过bximage来创建,输入
sudo bximage
如下图所示,按照我的图片所示来输入:
再在终端输入ls,会发现成功创建了hd60M.img磁盘映像文件
接下来就是创建一个汇编文件来进行测试了,我们测试的汇编代码如下:
org07c00h; 告诉编译器程序加载到7c00处movax, csmovds, axmoves, axcallDispStr; 调用显示字符串例程jmp$; 无限循环DispStr:movax, BootMessagemovbp, ax; ES:BP = 串地址movcx, 16; CX = 串长度movax, 01301h; AH = 13, AL = 01hmovbx, 000ch; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)movdl, 0int10h; 10h 号中断retBootMessage:db"Hello, OS world!"times 510-($-$$)db0; 填充剩下的空间,使生成的二进制代码恰好为512字节dw 0xaa55; 结束标志
然后就创建汇编文件吧,我们用的文件名为test.asm,在终端中输入
sudo gedit test.asm
之后复制上面的内容,然后保存。
再输入ls,发现成功创建了test.asm文件
接下来就可以对test.asm文件进行汇编了,在终端输入:
sudo nasm test.asm -o test.bin
再在终端输入ls,会看到test.bin文件成功被创建
最后把test.bin文件写入hd60M.img硬盘中
# 下面path也可以这么写 path=hd60M.img 不过要求你的hd60M.img在bin目录下dd if=test.bin of=/home/你的用户名/Downloads/bin/./hd60M.img bs=512 count=1 conv=notrunc
如下图:
然后我们创建一个run.sh脚本文件,来通过执行该脚本文件的方式,通过以bochsrc配置文件来打开bochs
创建文件:
sudo gedit run.sh
在文件中输入:
/home/你的用户名/Downloads/bin/bochs -f bochsrc.disk
发现成功创建了run.sh文件,执行该文件,会发现:
最后执行该文件,发现成功了
同时,上面的BXSHARE not set. using…那一行下面有:
可以看到,是按照配置文件来打开的。
最后,我们成功地安装了bochs,并测试成功,以后如果你想把其它编译好的文件挂载到磁盘中,让bochs运行的话,就和上面的步骤一样,用dd if=…那条命令即可。
总结,bochs安装最重要的四步:
一、配置bochsrc.disk文件
二、创建硬盘(或软盘,看你想以硬盘启动还是软盘启动了)
三、创建一个bin文件
四、把bin文件放到创建好的硬盘中,写一个run脚本来启动bochs即可
这个bochs安装费了我很长时间,我把我了解到的安装过程教给大家,希望大家少走弯路!
来源地址:https://blog.csdn.net/weixin_49635198/article/details/126831887