《操作系统真象还原》——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,这不是一个启动盘。这两个原因明显不是一码事,就像某件衣服穿着不合适一样,原因是一个人是太胖了,另一个人是太瘦了。

相关文章
|
6天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
21 0
|
6天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
16 0
|
7月前
|
Java Linux Windows
在Windows操作系统上运行Java程序
在Windows操作系统上运行Java程序
74 2
|
1月前
|
Go 调度
|
5月前
|
Web App开发 缓存 安全
让你的win10/win11系统变得不再卡顿,优雅草伊凡整理-长期更新-如何让windows操作系统不用老是重装依然保持流畅运行
如题:让你的win10/win11系统变得不再卡顿,优雅草伊凡整理-长期更新-如何让windows操作系统不用老是重装在不断的更新中依然保持流畅运行 本文长期更新,本次更新2023年11月8日! 很多时候 我们的win10win11系统不管再怎么关闭更新,都会莫名又被打开,莫名的关机和自动更新,总是在你不注意的时候就更新,因此大家也明白微软的厉害了,扯远了,但是频繁的更新会让系统特别卡,传统办法就是重装系统,因而还衍生了很多一件重装工具,但是每一次重装的代价都是巨大的我相信每个同学都明白。
|
5月前
|
存储
【OS Pintos】用户程序是如何工作的 | Pintos 运行原理 | 虚拟内存 | 页函数 | 系统调用
【OS Pintos】用户程序是如何工作的 | Pintos 运行原理 | 虚拟内存 | 页函数 | 系统调用
158 0
|
5月前
|
测试技术 KVM 开发工具
【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
73 0
|
8月前
|
测试技术 虚拟化
在同一物理服务器上同时运行多个独立的操作系统实例
在同一物理服务器上同时运行多个独立的操作系统实例
231 1
|
12月前
|
消息中间件 Dubbo 中间件
在 Docker 中运行 Mac OS 是什么样的体验?
在 Docker 中运行 Mac OS 是什么样的体验?
|
6月前
|
存储 算法 Linux
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
114 0