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

运行bochs

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

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

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

 

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

 

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

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

继续回车,马上就有效果了,不过是报错了,哎哟,不错哦,果然没白测试,报的这是个PANIC级别的错误,BIOS说:“你摊上大事了,没有启动设备”。

 

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

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

 

-fd是创建软盘

-hd创建硬盘

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

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

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

按照上面的帮助,那咱们就开工啦。见图

 

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行,保存。如图

 

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

bin/bochs –f bochsrc.disk 回车,观察效果,如图

 

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

不要灰心,这正是我们要在下一章要讲的内容,什么才算启动盘,真正的启动盘上有什么。本章到此结束,下章咱们再见。

【再续】

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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…

Ubuntu系统中使用搜狗输入法

今天介绍如何在Ubuntu中使用搜狗输入法。(Ubuntu版本为16.04) 1)登陆搜狗官网选择对应系统的搜狗输入法:http://pinyin.sogou.com/linux。 2)打开下载目录,命令行输入以下命令: sudo dpkg -i …

2.1)深度学习笔记:深度学习的实践层面

目录 1)Train/Dev/Test sets 2)Bias/Variance 3)Regularization(重点) 4)Why regularization reduces overfitting(理解) 5)Dropout Regularization(重点…

一步步编写操作系统 12 代码段、数据段、栈和cpu寄存器的关系

先说下什么是寄存器。 寄存器是一种物理存储元件,只不过它是比一般的存储介质要快,能够跟上cpu的步伐,所以在cpu内部有好多这样的寄存器用来给cpu存取数据。 先简短说这一两句,暂时离开一下主题,咱们先看看相对熟悉一…

【2019牛客暑期多校训练营(第三场)- F】Planting Trees(单调队列,尺取)

题干: 链接:https://ac.nowcoder.com/acm/contest/883/F 来源:牛客网 The semester is finally over and the summer holiday is coming. However, as part of your universitys graduation requirement, you have to take part in some …

Apollo进阶课程⑯丨Apollo感知之旅——感知概貌

原文链接:进阶课程⑯丨Apollo感知之旅——感知概貌 上周阿波君为大家详细介绍了「进阶课程⑮| Apollo无人车自定位技术入门」。 我们人类天生就配备多种传感器,眼睛可以看到周围的环境,耳朵可以用来听,鼻子可以用来嗅,…

一步步编写操作系统 13 栈

栈到底是什么玩意 cpu中有栈段SS寄存器和栈指针SP寄存器,它们是用来指定当前使用的栈的物理地址。换句话说,要想让cpu运行,必须得有栈。栈是什么?干吗用的?本节将给大家一个交待。 还记得数据结构中的栈吗?那是逻辑…

【2019牛客暑期多校训练营(第二场)- E】MAZE(线段树优化dp,dp转矩阵乘法,线段树维护矩阵乘法)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/E?&headNavacm 来源:牛客网 Given a maze with N rows and M columns, where bijb_{ij}bij​ represents the cell on the i-row, j-th column. If bi,j"1"b_{i, j} …

Apollo进阶课程⑰丨Apollo感知之旅——传感器选择和安装

目录 1.激光雷达 2.相机 3.Radar毫米波 4.安装传感器 原文链接:进阶课程⑰丨Apollo感知之旅——传感器选择和安装 上周阿波君为大家详细介绍了「进阶课程⑯ Apollo感知之旅——感知概况」。 传感器是一种检测装置,能感受到被测量的信息,…

2.2)深度学习笔记:优化算法

目录 1)Mini-batch gradient descent(重点) 2)Understanding mini-batch gradient descent 3)Exponentially weighted averages 4)Understanding exponetially weighted averages 5)Bias c…

Apollo进阶课程⑱丨Apollo感知之旅——传感器标定

目录 传感器标定 标定的目的 传感器标定算法 标定案例解析 3D标定间制作 Cmaera-to-Camera外参标定 Lidar-to-Camera外参标定 Lidar-to-Lidar外参标定 Lidar内参标定 Lidar-to-GPS外参标定 自然场景的Lidar-to-Camera外参标定 自然场景的Bifocal Camera外参标定 C…