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

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回车。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Python写Shell

环境 ubuntu: 18.04python: 3.6.9xnosh: 0.11.0 下载 pip3 install xonsh 简单使用 # 开启xonsh xonsh # 下载小工具(也可不下):高亮提示、智能补全 xpip install -U xonsh[full]# 随便下载一个包 pip3 install moneyimport money m1 money.Money(…

Apollo进阶课程⑪ | Apollo地图生产技术

目录 高精地图生产流程 数据采集 数据处理 元素识别 人工验证 全自动数据融合加工 基于深度学习的地图要素识别 人工验证生产 地图成果 原文链接:进阶课程⑪ | Apollo地图生产技术 高精地图是自动驾驶汽车的「千里眼」和「透视镜」。 摄像头、激光雷达、传…

一步步编写操作系统 5 配置bochs

配置bochs 安装完成后该配置bochs了,它是通过配置文件完成的。要说这个配置文件,它有点类似bios。我们在开机时按下的del、或者esc、或者F2键,各个机型进入bios方式有所不同,但差不多就那几种方式。Bios中会显示各种硬件的信息&a…

【HDU - 4417】Super Mario(查询区间小于K的数的个数,主席树)

题干: Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory. Now the poor princess is in trouble again and Mario needs to save his lover. We regard the road to the boss’s castle as a line (the l…

Jenkins初识

Jenkins是啥 官方文档 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。CI(Continuous integration,持续集成…

Apollo进阶课程 ⑫ | Apollo高精地图

目录 Apollo高精地图表征元素 Apollo车道模型 UTM坐标系 84坐标系 Track坐标系 Apollo opDRIVE规范 HDMAP引擎 高精地图在政策方面的挑战 原文链接:进阶课程 ⑫ | Apollo高精地图 高精地图与普通地图不同,高精地图主要服务于自动驾驶车辆&#…

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

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

Apollo技能图谱2.0焕新发布 更新7大能力91个知识点

阿波君 Apollo开发者社区 2月26日 过去的一年里,Apollo发展迅速,向智能交通不断渗透。从2.5到3.5版本,无论控制系统的升级、高清地图的泛用和车路协同技术服务的推进,无不在推动自动驾驶技术从开源向开辟商业化新格局位移。 在开…

【HDU - 4348】To the moon(主席树,区间更新)

题干: Background To The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker. The premise of To The Moon is based around a technology that allows us to permanently reconstruct the memo…

一步步编写操作系统 07 开机启动bios

bios是如何苏醒的 bios其实一直睡在某个地方,直到被唤醒……前面热火朝天的说了bios的功能和内存布局,似乎还没说到正题上,bios是如何启动的呢。因为bios是计算机上第一个运行的软件,所以它不可能自己加载自己,由此可…

0.《沉浸式线性代数》:前言

今天介绍一本新书《immersive linear algebra》:世界上第一本具有完全交互式图形的线性代数书。本书目前已经更新完毕。 作者是:JacobStrm,Kallestrm和Tomas Akenine-Mller,全文共包含11个部分:前言和10个正文章节。内…

【2019牛客暑期多校训练营(第二场) - D】Kth Minimum Clique(bfs,tricks)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/D 来源:牛客网 Given a vertex-weighted graph with N vertices, find out the K-th minimum weighted clique. A subset of vertices of an undirected graph is called clique if …

Apollo进阶课程 ⑬ | Apollo无人车自定位技术入门

目录 1.什么是无人车自定位系统 2.为什么无人车需要精确的定位系统 2.1 激光定位 2.2 视觉定位 2.3 惯性导航 2.4 多传感器融合定位 原文链接:进阶课程 ⑬ | Apollo无人车自定位技术入门 上周阿波君为大家详细介绍了「Apollo进阶课程⑫丨Apollo地图生产技术」…

一步步编写操作系统 08 bios跳转到神奇的内存地址0x7c00

为什么是0x7c00 计算机执行到这份上,bios也即将完成自己的历史使命了,完成之后,它又将睡去。想到这里,心中不免一丝忧伤,甚至有些许挽留它的想法。可是,这就是它的命,它生来被设计成这样&…

【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/H 来源:牛客网 题目描述 Given a NMN \times MNM binary matrix. Please output the size of second large rectangle containing all "1"\texttt{"1"}"1…

Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍

目录 1.三维几何变换---旋转 2.三维几何变换----平移 2.1刚体的位置和朝向 3. 坐标系 3.1 ECI地心惯性坐标系 3.2 ECFF地心地固坐标系 3.3当地水平坐标系 3.4 UTM坐标系 3.5 车体坐标系 3.6IMU坐标系 3.7 相机坐标系 3.8 激光雷达坐标系 3.9 无人车定位信息中涉及…

一步步编写操作系统 09 写个mbr

有点不好意思了,说了好久,才说到实质性的东西,好了,赶紧给客官上菜。 代码2-1(c2/a/boot/mbr.S)1 ;主引导程序2 ;------------------------------------------------------------3 SECTION MBR vstart0x7c…

【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of them into either red team or white team such that each team consists of exactly N people and the total competi…

Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术

目录 1.百度无人车定位进化历程 2.百度自动驾驶应用的定位技术 2.1GNSS定位技术 2.2载波定位技术 2.3激光点云定位技术 2.4视觉定位技术 原文链接:进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术 定位的目的是让自动驾驶汽车找到自身确切位置的方法…

一步步编写操作系统 10 cpu的实模式

cpu的实模式 由于mbr在实模式下工作……什么?什么是实模式?这时候有同学打断了我。我心想,这下好办了……哈哈,没有啦,开个玩笑而已。我们这里所说的实模式其实就是8086 cpu的工作环境、工作方式、工作状态&#xff0…