首先说一下我的Ubuntu版本,敲命令

sudo lsb_release -a

就可以看到

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.3 LTS

Release: 14.04

Codename: trusty

所以,我的Ubuntu版本是14.04

也可以用

cat /etc/issue

查看版本号。

怎样查看系统是32位还是64位呢?

用命令 uname -m

然后显示:x86_64,这就说明是64位。

安装:

1.去http://nchc.dl.sourceforge.net/project/bochs/bochs/2.4.5/bochs-2.4.5.tar.gz 下载【bochs-2.4.5.tar.gz】

2.解压下载的源代码:

sudo tar zxvf bochs-2.4.5.tar.gz

3.进入bochs-2.4.5目录,运行configure脚本:

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

(-enable-debugger和 -enable-disasm 表示开启调试和反汇编功能)

4.第3步正确运行后,会产生一个Makefile文件,于是可以编译:

sudo make

5.安装:

sudo make install

至此,bochs安装已经结束。

但是你也许不会成功。不要着急,下面是编译安装过程中可能出现的一些问题及解决方法:

【错误1】

error: C++ preprocessor “/lib/cpp” fails sanity check

因为Bochs是用C++写的,所以这里要安装GNU g++编译器。

解决方法:

sudo apt-get install build-essential

sudo apt-get install g++

【错误2】

checking for default gui on this platform… x11

ERROR: X windows gui was selected, but X windows libraries were not found.

解决方法:

sudo apt-get install xorg-dev

【错误3】

ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package.

解决方法:

sudo apt-get install libgtk2.0-dev

【错误4】

make的时候提示 /usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined

reference to symbol pthread_create@@GLIBC_2.1 //

lib/i386-linux-gnu/libpthread.so.0: error adding symbols: DSO missing

from command line collect2: error: ld r

解决方法:

在makefile的“LIBS = ”这一行的最后面添加如下内容 :

-lz -lrt -lm -lpthread

于是变成了:

LIBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft 2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontcon fig -lgobject-2.0 -lglib-2.0 -lfreetype -lz -lrt -lm -lpthread

如果已经安装成功,那么我们肯定迫不及待地想用起来。

怎么用呢?这里举一个例子。

1.下载linux0.11的镜像文件

下载地址是:

http://www.oldlinux.org/Linux.old/images/bootroot-0.11

2.写一个简单的Bochs配置文件

#注意'#'后面为注内容

megs:128
#模拟器的内存 romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
#这个是BIOS-bochs-latest的路径,自己慢慢找,不一定和我的一样 vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#这个是VGABIOS-lgpl-latest的路径,自己慢慢找 floppya:1_44=bootroot-0.11,status=inserted
#这个是启动软盘,就是我们下载的那个,就在当前目录下,如果不在当前目录,需要指明路径 boot:floppy
#表示从软盘启动 log:bochsout.txt
#日志输出文件 #选项还有很多,想了解更多可以参照原始的.bochsrc(在bochs-2.4.5/目录下)

假设我们保存为bochs_cfg.txt

3.启动Bochs

我们敲命令:

bochs -f bochs_cfg.txt

(-f 选项表示指定配置文件)

然后我们就看到:



输入6,回车

然后看到:



咦?怎么是一片漆黑呢?

注意到了吗?屏幕底端显示:

[0xfffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b

处理器在加电启动时,CS=0xF000; IP=0xFFF0,也就是说地址线的低20位是0xFFFF0,且其他地址线被强制为高电平,所以方括号中的地址就是0xfffffff0,此处是一条跳转指令jmp far f000:e05b ,这个地址指向了ROM-BIOS.

此时,Bochs停了下来,在等我们的调试命令。

我们输入c(表示continue),回车

注意看Bochs的窗口,可以看到Linux-0.11启动了!最后的画面是:



哈哈,是不是很惊喜?!

今天的学习就到这里,下回见:)

Ubuntu环境下安装Bochs的更多相关文章

  1. 【转载】Ubuntu环境下安装QT(转)

    Ubuntu 安装 Qt 开发环境 简单实现是本文要介绍的内容,内容很短,取其精华,详细介绍Qt 类库的说明,先来看内容. 一.Ubuntu下安装Qt $ sudo apt-get install q ...

  2. 在Ubuntu环境下安装eclipse

    Eclipse运行需要Java环境,java环境的安装见https://www.cnblogs.com/Sabre/p/10349320.html,本文不再赘述. 1.下载eclipse eclips ...

  3. Ubuntu环境下安装TinyOS系统

    1.输入下面命令会弹出source list窗口   1 sudo gedit /etc.apt/sources.list 在尾部添加以下地址:   1 2 deb http://tinyos.sta ...

  4. Ubuntu环境下安装CUDA9.0

    前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): ...

  5. Ubuntu 环境下安装 Docker

    系统要求 Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过低的内核版本容易造成功能不稳定. 用户可以通过如下命令检查自己的内核版本详细信息: $ unam ...

  6. [python] Ubuntu 环境下安装 python3.5 + pip

    一般情况下先添加PPA,但是我添加PPA会报错: sudo add-apt-repository ppa:fkrull/deadsnakes ubuntu add-apt-repository: co ...

  7. ubuntu环境下安装docker遇到的坑

    ubuntu安装docker的前提条件是: 1. Linux 的内核版本在 3.10 或以上: 2. linux 内核要开启 cgroup 和 namespace 功能 可以执行命令:uname –a ...

  8. ubuntu 环境下 安装虚拟环境

    sudo pip3 install virtualenv 安装虚拟环境 sudo pip3 instal virtualenvwrapper #安装虚拟环境扩展包 编辑home目录下面的.bashrc ...

  9. Ubuntu环境下安装Scala以及安装IntelliJ Scala插件(Plugin)

    一.Scala介绍 1.结合Spark处理大数据 这是Scala的一个主要应用,而且Spark也是那Scala写的. 2.Java的脚本语言版  可以直接写Scala的脚本,也可以在.sh直接使用Sc ...

随机推荐

  1. 处理器(也就是执行流程图上面的controller)执行逻辑(十)

    处理器继承自:AbstractController,MultiActionController   一.AbstractController 如上图,可以分析出AbstractController用的 ...

  2. 【转,整理】C# 非托管代码

    .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能..NET的大部分特性----垃圾收集,版本控制,线程管理等,都使用了C ...

  3. 人工智能热门图书(深度学习、TensorFlow)免费送!

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 这个双十一,人工智能市场火爆,从智能音箱到智能分拣机器人,人工智能已逐渐渗透到我们的生活的方方面面.网易云社区联合博文视点为大家带来人工智能热门图书 ...

  4. 如何在Linux上使用x2go设置远程桌面

    Until ACS supports Spice, if ever,you're better off with "on-VM" softare such RDP for Wind ...

  5. 编译 ambari 2.7.3

    官方给的教程比较简单,需要事先安装的工具也是这里列一点,那里列一点.在此记录一下编译要点(在 centos 7 下). 1. 事先需要安装的工具 yum install -y git svn node ...

  6. Sum of LCM (lcmsum)

    题目 [题目描述] 对于 $ A_1, A_2, \ldots, A_N $ ,求$\sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j)$ 的值. ...

  7. Linux的重要子目录

    1:  网卡的配置文件 [ :0C::::BD #MAC地址 TYPE=Ethernet #以太网 UUID=e982e20a-e7ef--8e44-a7c0c474c708 #Linux系统内部的标 ...

  8. Node JS爬虫:爬取瀑布流网页高清图

    原文链接:Node JS爬虫:爬取瀑布流网页高清图 静态为主的网页往往用get方法就能获取页面所有内容.动态网页即异步请求数据的网页则需要用浏览器加载完成后再进行抓取.本文介绍了如何连续爬取瀑布流网页 ...

  9. BZOJ 3028: 食物

    \(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...

  10. linux系统安全加固--账号相关

    linux系统安全加固 一.账号相关 1.禁用或删除无用账号 减少系统无用账号,降低安全风险. 当我们的系统安装完毕后,系统默认自带了一些虚拟账户,比如bin.adm.lp.games.postfix ...