本节内容摘自《操作系统真象还原》,请大家支持正版

Bochs下载安装

在完成了linux发行版的安装后,现在到了安装bochs的环节,这是我们的操作系统最终的宿主机。

由于我的工作是运维,所以练就了任何软件包都要从源码安装的“陋习”,从来不信任任何软件包。因为只有从源码安装的版本才会在其配置和编译过程中根据所在的平台的特性去优化,这些是其它形式的软件包不可比拟的。举个例子,将别人的windows系统直接ghost到自己的机器上和从光盘安装windows比,哪个装的windows系统用的更稳定,哪个安装方法能让windows坚持到半年才重装一次……我不能再说了,我做为linux粉丝的事实已表露无遗。虽然我个人偏爱linux,但绝对不能否认,是windows把我带入计算机世界的,既然有母校一说,它就相当于是我的母操作系统…没有人呕吐吧?抱歉我没有考虑您的感受^_^。这个世界若没有windows将暗淡70%的光芒。其实原先我写的是90%,我怕有人问我这个数是怎么来的,其实这是我一拍脑门随口说出来的,所以我稳妥起见,改为了70%,总之不能无视windows的伟大功绩,从这么谨慎的一点大家可以看出,我是个公正的人…哈哈,不要打扰鄙视我的同学,咱们继续。

bochs的安装相对要麻烦一些,不光是装上去就行了,还需要配置一下。废话不多说,安装走起。

等等,出大事了,软件包得传到虚拟机上才能安装到虚拟机里,如何传上去呢。下面建议3个方案:

  1. 1.给虚拟机装个ftp,通过ftp上传。
  2. 2.让虚拟机连网,直接下载。
  3. 3.虚拟机支持usb,通过u盘上传软件包。

第1个方案需要配置下ftp服务器,我用的是proftpd,相对来说有点麻烦,也是需要单独配置的。而且默认linux的iptables会有一些规则,需要手动将其关闭。

第2个方案较简单,在您的宿主系统可以连网的情况下,需要您自己配置一下virtualBox的网卡,将网卡部分改为NAT可以通过宿主系统连网,将网卡改为桥接可以直接连网。由于大家的版本不统一,虽然不知道界面是否接近,但菜单名称总该是一样的。我用的是mac版virtualBox,给大家截个图看看。见图1-1。

图1-1 virtual box

将网卡模式改为NAT后,虚拟机就可以连网了。

第3个方式最方便了,大家自己试下吧。

好了,下面就假设大家能够把安装包上传到虚拟机中,安装走起。

  1. 1.下载bochs

官方地址是http://sourceforge.net/projects/bochs/files/bochs/,我安装的版本是2.6.2,下载后的文件是bochs-2.6.2.tar.gz。

  1. 2.解压压缩包 tar zxvf bochs-2.6.2.tar.gz
  2. 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

注意各行结尾的’’字符前面有个空格。下面简要说明一下configure的参数:

--prefix=/your_path/bochs是用来指定bochs的安装目录,根据个人实际情况将your_path替换为自己待安装的路径。

--enable-debugger 打开bochs自己的调试器

--enable-disasm使bochs支持反汇编

--enable-iodebug 启用io接口调试器

--enable-x86-debugger 支持x86调试器

--with-x 使用x windows

--with-x11 使用x11图形用户接口

上面的编译参数是不支持gdb远程调试的,如果想用gdb调试,就要将参数--enable-debugger替换为--enable-gdb-stub。

--enable-gdb-stub是用来打开对gdb的支持,这样我们就可以用gdb来远程调试了。

不过,需要注意的是,不能同时打开这两个开关,否则bochs会报错:configure: error: --enable-debugger and --enable-gdb-stub are mutually exclusive。

也就是说,bochs本身是支持调试的,要么用本身的调试功能,要么用gdb的调试功能,鱼和熊掌在一台模拟器上不可兼得。我说的是一台模拟器上不可兼得,所以,如果您愿意的话,可以用这两个参数各编译一版,只要--prefix指向不同的路径就行了,想用哪个就启用哪个。

不过我在开发过程中,只用过不超过5次的gdb调试,还是习惯bochs自己的调试功能,个人觉得它更强大,调试粒度更细微,反而更灵活。个人建议,直接用给出的configure参数就行,不要打开--enable-gdb-stub。

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

make

若编译时没有问题,就直接执行下面这句:

make install

完成安装

补充一下,我在编译用bochs自己调试功能的版本时(用--enable-debugger),曾经安装失败过,如果您也在安装过程中失败了,恰好出现类似下面的报错:

undefined reference to 'pthread_create'

undefined reference to 'pthread_join'

您可以按照下面的方法解决。如果不是这个报错,亲,您可能要辛苦一下自行解决啦。

上面报错的原因:

pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。

解决方案:

在编译中要加 -lpthread参数。用vim编译makefile,vim是linux下功能最为强大的文本编辑器。vim Makefile回车:

编辑第92行,将thread库加入,将其放在行末尾就行了。

IBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 –lpthread

重新编译,make 回车,看问题是否解决,成功解决后直接make install回车。

【再续】

ftp无法连接虚拟机_一步步编写操作系统4 安装x86虚拟机 bochs相关推荐

  1. 一步步编写操作系统4 安装x86虚拟机 bochs

    Bochs下载安装 在完成了linux发行版的安装后,现在到了安装bochs的环节,这是我们的操作系统最终的宿主机. 由于我的工作是运维,所以练就了任何软件包都要从源码安装的"陋习" ...

  2. 一步步编写操作系统 71 直接操作显卡,编写自己的打印函数71-74

    一直以来,我们在往屏幕上输出文本时,要么利用bios中断,要么利用系统调用,这些都是依赖别人的方法.咱们还用过一个稍微有点独立的方法,就是直接写显存,但这貌似又没什么含量.如今我们要写一个打印函数了, ...

  3. 一步步编写操作系统 69 汇编语言和c语言共同协作 70

    由于有了上一节的铺垫,本节的内容相对较少,这里给大家准备了两个小文件来实例演示汇编语言和c语言相互调用. 会两种不同语言的人,只是掌握了同一件事物的两种表达方式.人在学习一种新语言时,潜意识里是建立了 ...

  4. 一步步编写操作系统 62 函数调用约定

    由于我们要将c语言和汇编语言结合编程啦,所以一定会存在汇编代码和c代码相互调用的问题,有些事情还是要提前交待给大家的,本节就是要给大家说下函数调用规约中的那些事儿. 函数调用约定是什么? 调用约定,c ...

  5. 一步步编写操作系统3 部署工作环境 3

    盗梦空间般的开发环境,虚拟机中再装个虚拟机. 很多同学电脑的系统都是windows,个别的是mac os,还有的同学用的是linux.做为一名Linux粉丝,我的开发环境必然建立在Linux平台下.那 ...

  6. 系统无法执行指定的程序。_使用Rust编写操作系统(一):独立式可执行程序

    创建一个不连接标准库的Rust可执行文件,将是我们迈出的第一步.无需底层操作系统的支撑,这将能让在裸机(bare metal)上运行Rust代码成为现实. 简介 要编写一个操作系统内核,我们需要不基于 ...

  7. 一步步编写操作系统(1)

    为什么80%的码农都做不了架构师?>>>    平台:VMwave workstation 虚拟机,linux 5操作系统. 安装arm-elf-gcc 1.下载leeos_tool ...

  8. 一步步编写操作系统 20 x86虚拟bochs一般用法 上

    bochs一般用法 bochs是一个开源x86 虚拟机软件.在它的实现中定义了各种数据结构来模拟硬件,用软件模拟硬件缺点是速度比较慢,毕竟全是软件来模拟,您想,虚拟机还要在软件中模拟各种中断,能不慢吗 ...

  9. 一步步编写操作系统 6 启动bochs

    运行bochs 终于安装完成了,虽然这过程中有可能会出现各种各样的问题,但还是值得庆祝的,对Linux不熟的朋友第一次就搞定了这么个硬货,我理解您此时的喜大普奔之情,哈哈,给大家点赞.顺便说一句,其实 ...

最新文章

  1. 文件流能转换格式吗_amr转换mp3格式文件
  2. 【Java基础】集合
  3. 16、Event事件(定时任务)是什么?
  4. VLC播放器如何录制rtsp流生成视频文件?
  5. Vue源码解析之AST语法树(三)
  6. Kinect开发笔记之六Kinect Studio的应用
  7. 动态代码生成 静态代码生成_将速度提升到自己的个人代码生成器中
  8. tesseract-orc 合并识别结果
  9. AFNetWorking 之 网络请求的基本知识
  10. android恶意软件流量,基于流量分析的安卓恶意软件检测
  11. 孔浩java web视频教程_孔浩老师webservice视频教程(含CXF视频教程)
  12. 说长道短注册码、序列号
  13. 动软代码生成器-模板修改,模型修改
  14. Android对话框集合
  15. Struts2 通配符
  16. lora网关软件设计_Semtech发布用于LoRa网关的开源软件 实现安全通信管理
  17. 【利用python3和微信接口给女朋友做个公众号推送】
  18. 你知道嵌入式开发主要做什么吗?
  19. MiiX私享会 · 第六期: BCH姜家志100分钟深聊BCH硬分叉与算力战!
  20. 软件规模估算常用的5种方法及实用工具。

热门文章

  1. bzoj4709 [Jsoi2011]柠檬
  2. 匈牙利哦模板 二分匹配 完全匹配问题
  3. VMware vSphere克隆虚拟机
  4. [回归分析][10]--相关误差的问题
  5. 微软Team Foundation Service 的Scrum模板中的Feature和Backlog Items 的区别【转载】
  6. Fedora 20 配置
  7. 对上拉下拉电阻的作用作个总结(想了解的过来看看)(转载)
  8. java spark 读取json_apache-spark - 与aws-java-sdk链接时,在读取json文件时发生Spark崩溃 - 堆栈内存溢出...
  9. mssql导出数据到mysql_MSSQL数据导出到MYSQL
  10. 三年级计算机课画曲线,三年级上册信息技术曲线工具教案