本节书摘来自异步社区《操作系统真象还原》一书中的第1章,第1.5节,作者:郑钢著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.5 运行bochs
终于安装完成了,虽然这过程中有可能会出现各种各样的问题,但还是值得庆祝的,对Linux不熟的朋友第一次就搞定了这么个硬货,我理解您此时的喜大普奔之情,哈哈,给大家点赞。顺便说一句,其实平时我们的运维人员为开发环境付出了远比这更多的努力,所有奋战在一线的系统工程师和运维工程师,您们辛苦了。
不过好奇心让我们按捺不住想一探bochs容貌,说实在的,我现在就想先运行一下看看,失败又能怎样,无非是报错退出呗,又不会造成实质性的损失。我非常理解大家的心情,虽然现在还差点东西没完成,但作为求知欲强的技术人必须得获得理解和支持,那现在咱们先运行一下bochs试试,至少检测下是不是安装正确了,反正不会破坏咱们的电脑,缺什么的时候咱们再创建也不迟。
怕被读者埋怨我太啰嗦,赶紧在bochs安装路径下键入bin/bochs并赶紧按下了回车,运行效果如图1-2所示。
看,bochs界面中给出的提示符默认选项是[2],Read options from…,这是bochs要读取选项的节奏啊,也就是说要读取配置文件,直接按回车键。运行结果如图1-3所示。
我们键入的是上面长方形框框中的部分:bochsrc.disk。由于我们刚刚把此文件放到了bochs的安装路径下,bochs找到了它并加载成功。紧接着下面给出的默认选项变成了[6],也就是Begin simulation选项,开始模拟x86硬件平台。
再多说一句,bochs如果加载不到配置,它是不会向下运行的,所以在图1-3中,白色方框中若不键入配置文件名而直接回车,还是会回到图1-2所示的界面,必须给出配置让bochs知道您想模拟的硬件是什么才行。
继续回车,马上就有效果了,不过是报错了,如图1-4所示。
哎哟,不错哦,果然没白测试,报的这是个PANIC级别的错误,BIOS说:“没有启动设备”。
缺什么我们就创建什么,提示没有的这个“bootable device”就是启动盘,现在就创建启动盘吧。
bochs先生说:“作为一个负责任的模拟器,既然干的就是模拟硬件的工作,那就要把硬件都模拟全了”,所以bochs给咱们提供了创建虚拟硬盘的工具bin/bximage。我们先看下这个命令的帮助,如图1-5所示。
-fd创建软盘。
-hd创建硬盘。
-mode创建硬盘的类型,有flat、sparse、growing三种。
-size指创建多大的硬盘,以MB为单位。
-q以静默模式创建,创建过程中不会和用户交互。
按照上面的帮助,那咱们就开工啦,如图1-6所示。
bin/bximage -hd -mode="flat" -size=60 -q hd60M.img
这个命令串中最后一个hd60M.img是咱们创建的虚拟硬盘的名称。
如果大家觉得以上键入命令繁琐,不想用命令行的话,可以直接键入bin/bximage回车,后面的提示很清楚,很容易帮助大家创建硬盘。
硬盘创建好了,该如何安装到虚拟机中呢?
看图1-6下面的白色方框中的内容,bochs说:“The following line should appear in your bochsrc:下面的内容应该出现在你的配置文件中”。可见bochs的良苦用心,连硬盘的配置都给我们写好了,我们要做的就是复制这些到我们的bochsrc.disk中。可见,在bochs中有哪些硬件,就是通过配置文件来反映出来的。
事不宜迟,赶紧更新bochsrc.disk,找到第33行注释部分,将内容添加到35行,保存,如图1-7所示。
此刻的我已经迫不及待地想看看bochs现在的运行情况,不过如果每次启动bochs后都要通过Read options from选项读取配置文件,这就太麻烦了,其实启动bochs的时候,有个更简便的方法,我们用-f来指定其配置文件便可。
bin/bochs –f bochsrc.disk 回车,观察效果,如图1-8所示。
看上去和图1-4报错一样,都是提示没有启动盘。这是怎么回事呢?仔细看过之后,发现这里的报错和图1-4还是有些不同的,虽然结果是一样的错误,但原因是不同的。图1-4中的报错原因是boot failed: could not read the boot disk,这是无法读取启动盘。而现在这里的报错是boot failed: not a bootable disk,这不是一个启动盘。这两个原因明显不是一码事,就像某件衣服穿着不合适一样,原因是一个人是太胖了,另一个人是太瘦了。