《ORANGE’S:一个操作系统的实现》一书中选择使用虚拟计算机Bochs进行仿真。

Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。甚至可以不使用PC硬件来运行Bochs。事实上,它可以在任何编译运行Bochs的平台上模拟x86硬件。通过改变配置,可以指定使用的CPU(386、486或者586),以及内存大小等。根据需要,Bochs还可以模拟多台PC,此外,它甚至还有自己的电源按钮。

以下对bochs的安装及常见错误的解决作总结:

安装步骤

采用源码安装的方式:

1. 源码下载:

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

直接下载当前最新的源码,准备在linux上安装,所以下载的 bochs-2.6.9.tar.gz

2. 安装前准备

sudo apt-get install build-essential xorg-dev libgtk2.0-dev bison

省掉config过程很多依赖编译报错

我在这个过程中出现了报错:unable to locate package build-essential xorg-dev libgtk2.0-dev bison

解决办法参考:https://blog.csdn.net/weixin_46672140/article/details/119115185

3.编译安装

sudo tar xvzf bochs-2.6.9.tar.gz
cd bochs-2.6.9
./configure  --enable-debugger --enable-disasm --enable-readline -LIBS='-lx11'
make
sudo make install
make install //会把bochs可执行文件拷贝到/usr/local/bin/目录下

逐条执行上述指令

第三条./configure指令可能会有错:configure: error: unrecognized option: `-LIBS=-lx11'

在ubuntu上 apt-get install libx11-dev,注意是小写. 然后在gcc中,-lX11, 注意是大写.

这里可以思考一下LIBS指令的含义:https://bbs.csdn.net/topics/220057357/

在make过程中我出现的报错:x11/xlib.h nosuch file or directory

可能是x11的的包没有安装完整,改错的话可以参考:

https://www.cnblogs.com/forcheryl/p/3978671.html

make过程可能也会因为缺少其他包而报错,搜索缺少的包并安装即可。

剩下两条指令应该可以顺利执行

4. 接下来让环境变量重新生效,在终端输入:

source /etc/profile

在这一步中,起初我通过重启的方法时环境变量生效,但关机后却无法再开机,Ubuntu始终停留在开机界面或者在黑屏闪动,重装了三次系统,改为采用上述指令。

5. 修改bochsrc文件:

在bochs-2.6.9目录下,有一个配置文件 .bochsrc,我们需要修改,让他运行我们的a.img

当你输入一个不带任何参数的bochs并执行之,bochs将在当前目录顺序寻找以下文件作为默认配置文件:

因此我们修改的文件为.bochsrc,注意前面有“.”的配置文件是隐藏文件,需要先把show hidden files打开:

.bochsrc 修改如下:

#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
cpu: cpuid_limit_winnt=0memory: guest=512, host=256romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastbootvgaromimage: file=$BXSHARE/VGABIOS-lgpl-latestmouse: enabled=0pci: enabled=1, chipset=i440fxprivate_colormap: enabled=0#floppya: 1_44=/dev/fd0, status=inserted
#floppya: image=../1.44, status=inserted
#floppya: 1_44=/dev/fd0H1440, status=inserted
#floppya: 1_2=../1_2, status=inserted
#floppya: 1_44=a:, status=inserted
floppya: 1_44=a.img, status=inserted, write_protected=1
#floppya: 1_44=/dev/rfd0a, status=insertedata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9#ata0-master: type=disk, mode=flat, path="30M.sample"
#ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17
#ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect
#ata0-slave: type=disk, mode=vvfat, path=/bochs/images/vvfat, journal=vvfat.redolog
#ata0-slave: type=cdrom, path=D:, status=inserted
#ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted
#ata0-slave: type=cdrom, path="drive", status=inserted
#ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted boot: floppy
#boot: diskfloppy_bootsig_check: disabled=0log: bochsout.txtpanic: action=ask
error: action=report
info: action=report
debug: action=ignore, pci=report # report BX_DEBUG from module 'pci'debugger_log: -parport1: enabled=1, file="parport.out"#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
#speaker: enabled=1, mode=sound

有注释的地方基本都是改动过的,解决了下一步启动运行过程中,几个问题。

6. 启动运行bochs虚拟机:

bochs -f .bochsrc

注意:如果上面第5步修改的是bochsrc文件而非.bochsrc文件,那上面的启动指令就不加“.”

也可以直接输入bochs回车运行。

确保目录文件下有a.img文件,运行结果:

常见错误及解决

如果有问题,大部分都是bochsrc配置的问题,可以查看报错点,尝试注释掉,确保最基本的几个配置基本就可以正常运行了

例如:

memory: guest=512, host=256
romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
floppya: 1_44=a.img, status=inserted, write_protected=1
boot: floppy

启动过程可能遇到的问题:

问题1:.bochsrc:187: cpu directive malformed

解决方法:

linux终端下:bochs -help cpu

我选的是amd_k6_2_chomper

不用纠结你的电脑是何种类型的cpu,这里设置的是bochs模拟的硬件,而非适配你的电脑的硬件类型。我的电脑是intel core_duo,使用amd类型一样没有错误。

修改配置文件即可

1

2

#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

问题2:.bochsrc:915: Bochs is not compiled with lowlevel sound support

解决方法:修改配置文件,注释掉以下两行

#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
#speaker: enabled=1, mode=sound

问题3:bochs界面显示no bootable device

这是比较常见的错误了。检查目录文件下是否有软盘镜像a.img等img文件,并查看它与.bochsrc配置文件中设置的floppy名称是否一致。

ubuntu下bochs的安装和配置相关推荐

  1. Ubuntu下mongodb的安装与配置

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便.这里介绍在Ubuntu下mongodb的安装与配置. 1.下载 mongodb可以在官网上下载,地址,选择Ubun ...

  2. Ubuntu下域名服务器bind9 安装与配置

    Ubuntu下域名服务器bind9 安装与配置 //更新 ubuntu :sudo apt update //1.安装: //1.2安装bind9 //sudo apt-get install bin ...

  3. ubuntu下Tomcat7的安装和配置

    和前几个软件一样,Tomcat 同样是由JAVA开发的,所以,在安装前一定要装好JDK. 大家可以到 http://tomcat.apache.org/download-70.cgi 下载最新的Tom ...

  4. Ubuntu下bochs详细安装步骤(超详细!)

    本人一年前刚学linux系统的时候花了两天时间安装bochs,完全没头绪,后来半年前尝试安装还是失败,幸运的是b站过去几个月出了一些安装视频,所以我结合之前踩过的坑为大家带来详细的安装步骤,废话不多说 ...

  5. ubuntu下Pure-FTPd的安装和配置

    1.安装Pure-FTPd sudo apt-get install pure-ftpd-mysql mysql-server 2.添加用户和组 sudo groupadd -g 2001 ftpgr ...

  6. ubuntu下cvs的安装、配置与使用

    cvs的安装方式大致有两种 一种是cvs+cvsd,另一种是cvs+xinetd,我选择的是cvs+xinetd,这种做法比较节省资源,xinetd是一个后台服务管理程序,除了管理cvs之外还可以管理 ...

  7. Ubuntu下CodeBlocks的安装、配置及静态库动态库的简单使用举例

    1.  从Ubuntu Software Center中搜索Code::Blocks并安装: 2.  在第一次启动时选择GNU GCC Compiler作为默认的编译器: 3.  生成静态库并调用操作 ...

  8. ubuntu下tftp的安装、配置、使用

    1. 安装(注意权限,root下) $ apt-get install tftp-hpa tftpd-hpa   2. 建立目录 $ mkdir /tftpboot # 这是建立tftp传输目录. $ ...

  9. Ubuntu下Apache的安装和配置——web服务器

    Apache2 <百度百科 > Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之 ...

最新文章

  1. myeclipse 项目中jsp或者js 文件中的错误是没必要处理的,可以忽略
  2. 爬虫(beautifulSoup)
  3. NSIS 打包 win7 中无法删除快捷方式
  4. Redis java使用
  5. 代码:CSS——reset.css
  6. mac安装nvm及换源及node安装切换
  7. Oracle新建表时,复制另一张旧表的结构和数据
  8. python画枫叶_python-文件的操作
  9. air什么意思中文_Air 的中文意思是什么?
  10. MyEclipse常用设置方法
  11. NYOJ 题目94 cigarettes
  12. linux下实现getch()函数的功能,Linux下实现getch()函数功能
  13. 全国各省市固定资本形成额数据 (1990-2018年)
  14. 2019年ArcGIS JavaScript API 4.x添加天地图矢量地图(球面墨卡托)
  15. 格创东智获《互联网周刊》2020工业互联网平台TOP12 解决方案提供商TOP16
  16. Java SE Lesson22_ClassLoader
  17. 新浪企业邮箱服务器怎么设置,新浪企业邮箱|手机端设置
  18. html实现点赞动画效果代码,Twitter“点赞”红心按钮CSS3动画特效
  19. 辽宁丰睿佳业:抖音店铺选品注意事项有哪些?
  20. 游戏资讯:预计在10月底至11月内, 版号审批将会恢复

热门文章

  1. JetBrains历史版本下载
  2. 产品经理——java学习之路
  3. python培训班昆明
  4. Java异常的根类似_Java异常(Exception)类型及处理
  5. 零基础学C语言设计难吗,【经验分享】零基础想学C语言,过来人提醒大家几点...
  6. 关系代数和SQL语法
  7. 近端梯度下降法 (proximal gradient descent)
  8. 十、什么是临界资源及如何访问临界资源
  9. 春节假期我读过的那些书
  10. RFM模型与Spark实现