知方号

知方号

动手编写操作系统(1):初识Bochs

动手编写操作系统(1):初识Bochs

  下面正式进入实操环节,也就是动手搭建操作系统。看着眼前的Windows/Linux/Mac OS/etc,相信绝大多数同学都会感到兴奋和迷茫:这么大个操作系统,从哪里开始呢?古人有云:“工欲善其事,必先利其器。”我们得以发挥自己聪明才智,进行学习研究创造的前提,是拥有一个好的工具。它能让我们在巨人的肩膀上欣赏与创造。在这里,我想表达对所有在相关领域为后人的方便贡献自己汗水的前辈的衷心的感谢与钦佩。

  话不多说,接下来我们正式切入正题:配置调试操作系统所需的环境。

C/C++编译器,这里采用gcc/g++方案汇编器,我们将使用较新的NASM作为我们的汇编器虚拟机/模拟器:接下来就欢迎我们今天的主角——Bochs! 简介

  Bochs(发音同"Box"),是一款开源,使用C++编写的,高度便携的 IA-32(X86)架构PC模拟器,它包含了对Intel x86架构各种CPU,常见的IO设备以及定制化BIOS的模拟。支持对早期的386处理器到最新的x86-64架构Intel和AMD处理器,甚至包含未上市的处理器版本。1

上面特别强调了模拟器,这和我们平时使用的VMware或是Virtual Box这类虚拟机有何不同呢?虽然表面上看起来,都是在一台宿主机上运行一个客户机系统,但它们两个的运行原理和适用场景却有着天差地别。

虚拟机:指采用虚拟化技术,在已有主机的硬件设施的基础上,虚拟出的一套独立的硬件设施。从原理上看,简单来说(不太严谨),虚拟机中的计算机指令仍然是交由宿主机中的物理核心执行的。因此,它的执行速度相对较快,适用于在物理机上运行一套完整操作系统并使用的场景。模拟器:指使用软件模拟出各个计算机硬件及其功能,包括CPU、内设、外接设备、BIOS等,其底层执行完全是由软件模拟的。因此相较虚拟机而言,模拟器的运行速度慢得多。但由于其操作系统的指令并没有真正让物理机的核心执行,其安全性与崩溃后整个系统的稳定性也好得多。常见于操作系统开发。

所以,将要手动编写操作系统的我们,自然也采用Bochs作为运行/调试我们操作系统的工具。

安装

我们的环境搭建在VMware Workstation中创建的Ubuntu 16.04LTS虚拟机里。(比较绕XD)当然,Bochs支持Windows和Mac OS平台,如果没有或没有兴趣配置虚拟机的话,读者可以装在自己喜欢的平台上。

在Ubuntu上,安装有apt支持的软件真是一件十分令人享受的事情。

sudo apt install bochs-x

一行命令即可结束战斗,接下来就可以愉快的玩耍啦!(我们安装的是带有x11图形化插件的版本,它会自动安装主程序,如果你的计算机没有安装x11,在接下来的运行过程中可能会报错,安装一下即可)

默认的软件安装位置在/usr/share/bochs下,所有软件的可执行文件都在其中,系统还为我们配置好了“快捷方式”,直接输入命令bochs,就能启动Bochs模拟器。

启动后会出现一个菜单,默认选项为2,也就是我们后面要讲的内容:从配置文件读取模拟机器的配置。

配置文件

类似于VMware中虚拟机的配置文件,需要Bochs模拟的机器(下面我也称为虚拟机)的各项硬件配置也需要一个配置文件指定。只不过VMWare有一个比较方便的图形化界面而已。

系统给出的样例文件位于/usr/share/doc/bochs/examples/bochsrc,为一个文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。