在安装bochs之前,我们先需要安装虚拟机和linux发行版,也可以安装双系统,总之有个linux操作系统就好。

  我是在ubuntu14.04系统下安装bochs的。

安装Bochs

  以下为安装步骤

  1. 下载bochs。官方地址是http://sourceforge.net/projects/bochs/files/bochs/,安装的版本是2.6.2,下载后的文件是bochs-2.6.2.tar.gz。
  2. 解压压缩包 tar zxvf bochs-2.6.2.tar.gz
  3. 编译。先进入到目录 cd bochs-2.6.2,开始configure、 make、 make install三步曲
./configure \
--prefix=/your_path/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11 \
LDFLAGS='-pthread' \
LIBS='-lX11'

  注意各行结尾'\'字符前有个空格,/your_path/要修改为你想要安装的路径,相比与原书的配置,我在上面增加了两行(红色)的配置,这对后面的编译有帮助,会减少一些问题的出现。

  configure之后,会生成Makefile,可以编译了。

make

  make的过程中可能遇到各种问题,我在下面罗列一下我遇到的。

  ① 由于g++没有安装,出现C++ preprocessor "/lib/cpp" fail sanity check。

  解决办法:安装g++

sudo apt-get install g++

  ② fatal error: gtk/gtk.h: No such file or directory

  

  解决办法:输入下面的命令行

sudo apt-get install libgtk2.-dev

    如果还不行,尝试在bochs/gui下的makefile 第104后面增加`pkg-config --cflags --libs gtk+-2.0`(注意是  `  ),有可能这也解决不了,那么可以尝试根据出错信息定位所在的目录,修改该目录下的makefile,在相应位置加入`pkg-config --cflags --libs gtk+-2.0`。

$(CXX) -c  $(CXXFLAGS) $(LOCAL_CXXFLAGS) $< -o $@ `pkg-config --cflags --libs gtk+-2.0`

 ③ undefined reference to symbol ’XSetForeground'

  解决办法:输入下面命令行

sudo apt-get install xorg-dev

  如果上面configure时,没有设置LIBS='lX11',也会出现这个问题。

④ undefined reference to 'pthread_create'

  解决办法: configure时加入LDFLAGS='-pthread'。

  最后make install

make install

  至此,无错误信息,bochs安装成功。

运行bochs

  安装bochs的工作已经完成了,如果还出现其他问题,尝试一下在bing、google、baidu等等搜索解决问题,想当初在网上做操作系统JOS实验时,我也是花了大量时间在安装bochs上,那时都快崩溃了,总之很多因素都会导致配置过程中失败,请坚持下去,因为很多人像我一样在安装过程中挣扎着,匍匐前行,如果你安装成功了,也祝贺你,这等于成功了一大半!!

  下面开始准备运行bochs:

    我们先试试运行下bochs,先进入我们上面配置时制定的bochs地址,然后输入下面的命令:

bin/bochs

  正常来说会出现以下界面:

  如果不是,尝试根据错误信息解决。

  之后我打算省略书上的一些细节,直接描述应该做些什么。

  首先,我们创建一个虚拟硬盘,输入以下命令:

bin/bximage -hd -mode="flat" -size= -q hd60M.img

  然后,我们在当前目录创建一个bochsrc文件了,这是用来配置bochs的,文件名为bochsrc.disk,文件内容为:

#Bochs运行中使用的内存,设置为32M
megs: 32 #设置真实机器的BIOS和VGA BIOS
#修改成你们对应的地址
romimage: file=/home/thougr/Desktop/mybochs/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/thougr/Desktop/mybochs/bochs/share/bochs/VGABIOS-lgpl-latest
#设置Bochs所使用的磁盘
#设置启动盘符
boot: disk

#设置日志文件的输出
log: bochs.out

#开启或关闭某些功能,修改成你们对应的地址
mouse: enabled=
keyboard_mapping: enabled=1, map=/home/thougr/Desktop/mybochs/bochs/share/bochs/keymaps/x11-pc-us.map

#硬盘设置
ata0: enabled=, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=
ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=, heads=, spt=

#增加bochs对gdb的支持,我们在这里不使用,所以注释掉了
#gdbstub: enabled=, port=, text_base=, data_base=, bss_base=

  执行下列命令运行bochs:

bin/bochs -f bochsrc.disk

  结果如图下:

  输入'c'继续运行(默默地吐槽一句,这是书上没有提示做的)

  结果如下图:

  显示这个错误时正常的,因为我们还没有设置启动盘,不要桑心,这个问题之后会解决的,做到这里已经很成功了!!!

  

《操作系统真象还原》bochs安装的更多相关文章

  1. 《操作系统真象还原》BIOS

    以下是读本书第二章的收获. 记得我大学学习操作系统的时候会遇到一些奇奇怪怪的问题,因为觉得问题太奇怪了,所以羞于问老师.诸如ROM到底是个什么东西:如果用内存映射的方式访问外部设备,是不是内存条里专门 ...

  2. 《操作系统真象还原》ELF文件

    下面是第五章部分内容的收获. 用C语言编写内核 一直以来我们都是用汇编语言编写程序的,但接下来我们或许很少用汇编语言编写代码了,大多数都是使用C语言.为什么要这样呢?书上的解释我看的不是很懂,只能结合 ...

  3. 《操作系统真象还原》MBR

    以下是读本书第三章的收获. 如何知道一个源程序的各符号(指令和变量)地址?简单来说,地址就是该符号偏移文件开头的距离,符号的地址是按顺序编排的,所以两个相邻的符号,其地址也是相邻的.对于指令来说,指令 ...

  4. 开源虚拟机Bochs安装以及踩坑

    因为想要写一个简单的操作系统,所以需要安装虚拟机来模拟出硬件,VMware不适合这个场景,因为会使用硬件级别的虚拟化,而bochs这个开源虚拟机,是用软件虚拟了所有的硬件,所以调试可以做到非常细的粒度 ...

  5. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  6. 虚拟机中安装Linux_Centos7操作系统(最小化安装)

    我们打开之前安装的VM, 点击 “创建新的虚拟机”: 我们选 典型 安装  简单点 然后下一步: 我们稍后安装操作系统 ,点下一步: 这里选 Linux 然后下拉 选CentOS 64位,然后下一步: ...

  7. bochs安装一系列问题

    http://blog.chinaunix.net/uid-23817499-id-3418083.html http://www.mouseos.com/os/tools/bochs.html    ...

  8. 【安装操作系统】VMware 中安装 Redhat 5

    引言 已有一台 Windows XP 家用机,安装 Linux 虚拟机,一不小心就会走弯路,因此本文提供一些入门级的经验来帮助你躲开歧途. 欢迎来到 lovickie 的博客 http://www.c ...

  9. Windows 7操作系统下Apache的安装与配置(图文详解)

    我这里是 Apache2.4.X-win64 首先, 我的操作系统信息如下  Apache2.4-win64的下载 官网 http://www.apachelounge.com/download/ 因 ...

随机推荐

  1. 学会这一招,小白也能使用数据可视化BI软件创建医院数据实时展示大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件.   本文以医院数据实时展示大屏为例 ...

  2. vscode+php+xdebug Time-out connecting to client (Waited: 200 ms)

    如果php.ini配置没错,且端口无误,那么就可能是配置文件选错了. vscode里面有两个配置文件,一个是 Listen for xdebug ,一个是 Lanuch currently open ...

  3. .NET Core MVC 静态文件应用

    一.静态文件应用方面 ASP.NET Core 静态文件应用,主要分为两方面:网站访问和静态文件整合 二.案例 1.访问静态文件 我们都知道,在 ASP.NET 项目中,我们的静态文件一般要放在 ww ...

  4. 方法中this指向的问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Docker基础(1) 原理篇

    Docker是什么 Docker的构成 Docker的分层和写时拷贝策略 Docker与主流虚拟机的区别 Docker镜像与容器的关系 镜像的变更管理 Docker是什么 Docker是一个开源的应用 ...

  6. redis两种持久化方式RDB和AOF

    目录 前言 1. Redis 数据库结构 2. RDB 持久化 2.1. RDB 的创建和载入 2.1.1. 手动触发保存 SAVE 命令 BGSAVE 命令 SAVE 和 BGSAVE 的比较 2. ...

  7. fastJson&edis

    fastJson&redis 1. fastJson 1.1 依赖 <dependency> <groupId>com.alibaba</groupId> ...

  8. C# 通过反射检查属性是否包含特定字符串

    public static bool StringFilter(this object model,string filterStr) { if (string.IsNullOrEmpty(filte ...

  9. 【转】JS 的 new 到底是干什么的?

    原文:https://zhuanlan.zhihu.com/p/23987456?refer=study-fe 大部分讲 new 的文章会从面向对象的思路讲起,但是我始终认为,在解释一个事物的时候,不 ...

  10. day19 几个模块的学习

    # 模块本质上就是一个 .py 文件# 数据类型# 列表.元组# 字典# 集合.frozenset# 字符串# 堆栈:特点:先进后出# 队列:先进先出 FIFO # from collections ...