《操作系统真象还原》——1.5 运行bochs-阿里云开发者社区

开发者社区> 开发与运维> 正文

《操作系统真象还原》——1.5 运行bochs

简介: 我们键入的是上面长方形框框中的部分:bochsrc.disk。由于我们刚刚把此文件放到了bochs的安装路径下,bochs找到了它并加载成功。紧接着下面给出的默认选项变成了[6],也就是Begin simulation选项,开始模拟x86硬件平台。

本节书摘来自异步社区《操作系统真象还原》一书中的第1章,第1.5节,作者:郑钢著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 运行bochs

终于安装完成了,虽然这过程中有可能会出现各种各样的问题,但还是值得庆祝的,对Linux不熟的朋友第一次就搞定了这么个硬货,我理解您此时的喜大普奔之情,哈哈,给大家点赞。顺便说一句,其实平时我们的运维人员为开发环境付出了远比这更多的努力,所有奋战在一线的系统工程师和运维工程师,您们辛苦了。

不过好奇心让我们按捺不住想一探bochs容貌,说实在的,我现在就想先运行一下看看,失败又能怎样,无非是报错退出呗,又不会造成实质性的损失。我非常理解大家的心情,虽然现在还差点东西没完成,但作为求知欲强的技术人必须得获得理解和支持,那现在咱们先运行一下bochs试试,至少检测下是不是安装正确了,反正不会破坏咱们的电脑,缺什么的时候咱们再创建也不迟。

怕被读者埋怨我太啰嗦,赶紧在bochs安装路径下键入bin/bochs并赶紧按下了回车,运行效果如图1-2所示。

screenshot

看,bochs界面中给出的提示符默认选项是[2],Read options from…,这是bochs要读取选项的节奏啊,也就是说要读取配置文件,直接按回车键。运行结果如图1-3所示。

screenshot

我们键入的是上面长方形框框中的部分:bochsrc.disk。由于我们刚刚把此文件放到了bochs的安装路径下,bochs找到了它并加载成功。紧接着下面给出的默认选项变成了[6],也就是Begin simulation选项,开始模拟x86硬件平台。

再多说一句,bochs如果加载不到配置,它是不会向下运行的,所以在图1-3中,白色方框中若不键入配置文件名而直接回车,还是会回到图1-2所示的界面,必须给出配置让bochs知道您想模拟的硬件是什么才行。

继续回车,马上就有效果了,不过是报错了,如图1-4所示。

screenshot

哎哟,不错哦,果然没白测试,报的这是个PANIC级别的错误,BIOS说:“没有启动设备”。

缺什么我们就创建什么,提示没有的这个“bootable device”就是启动盘,现在就创建启动盘吧。

bochs先生说:“作为一个负责任的模拟器,既然干的就是模拟硬件的工作,那就要把硬件都模拟全了”,所以bochs给咱们提供了创建虚拟硬盘的工具bin/bximage。我们先看下这个命令的帮助,如图1-5所示。

screenshot

-fd创建软盘。

-hd创建硬盘。

-mode创建硬盘的类型,有flat、sparse、growing三种。

-size指创建多大的硬盘,以MB为单位。

-q以静默模式创建,创建过程中不会和用户交互。

按照上面的帮助,那咱们就开工啦,如图1-6所示。

bin/bximage -hd -mode="flat" -size=60 -q hd60M.img
这个命令串中最后一个hd60M.img是咱们创建的虚拟硬盘的名称。

screenshot

如果大家觉得以上键入命令繁琐,不想用命令行的话,可以直接键入bin/bximage回车,后面的提示很清楚,很容易帮助大家创建硬盘。

硬盘创建好了,该如何安装到虚拟机中呢?

看图1-6下面的白色方框中的内容,bochs说:“The following line should appear in your bochsrc:下面的内容应该出现在你的配置文件中”。可见bochs的良苦用心,连硬盘的配置都给我们写好了,我们要做的就是复制这些到我们的bochsrc.disk中。可见,在bochs中有哪些硬件,就是通过配置文件来反映出来的。

事不宜迟,赶紧更新bochsrc.disk,找到第33行注释部分,将内容添加到35行,保存,如图1-7所示。

screenshot

此刻的我已经迫不及待地想看看bochs现在的运行情况,不过如果每次启动bochs后都要通过Read options from选项读取配置文件,这就太麻烦了,其实启动bochs的时候,有个更简便的方法,我们用-f来指定其配置文件便可。

bin/bochs –f bochsrc.disk 回车,观察效果,如图1-8所示。
screenshot

看上去和图1-4报错一样,都是提示没有启动盘。这是怎么回事呢?仔细看过之后,发现这里的报错和图1-4还是有些不同的,虽然结果是一样的错误,但原因是不同的。图1-4中的报错原因是boot failed: could not read the boot disk,这是无法读取启动盘。而现在这里的报错是boot failed: not a bootable disk,这不是一个启动盘。这两个原因明显不是一码事,就像某件衣服穿着不合适一样,原因是一个人是太胖了,另一个人是太瘦了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章