Run Linux with Bochs | Bochs运行Linux操作系统

Albert Wang / 2022-10-04 / 200 Words/has been Read   Times


操作系统是一个神奇的软件,它管理了各种硬件,所以它本身足够复杂。同样也是这个原因导致我们要对操作系统的代码进行调试变得非常困难。

本文是一篇介绍怎样用 Bochs 来运行和调试 Linux 0.11 的博客。选择 Bochs 而不是 VM Ware 的原因是 Bochs 仿真了 X86 的硬件环境和外设,而VM Ware 则是仿真了一些 I/O 功能,其他是依靠 X86实时硬件执行的。这样虽然 Bochs 在速度上不如 VM Ware,但是因为它具备更加精确的状态和时序,所以更适合开发底层系统软件。 Linux 选择 0.11 的原因则是当前的 Linux 版本太过于庞大,基本不可能完全阅读完它的代码。相比之前 0.11 版本的代码总共也就几万行,而且是一个相对完整的操作系统,所以用它是比较适合的。

Bochs安装和运行Linux #

我们之前认为 Bochs 更适合操作系统,幸运的是大家都是这么想的,所以我们已经有完善的软件包可以帮助我们完成这一步了。点击这里 可以下载Linux 0.11 的软件包,解压缩之后可以看到下面的内容。

上图中第一个.exe的文件就是Windows 下 Bochs 的安装文件,.rpm 是 Linux 下的安装文件。本文以 Windows 下为例,双击按照常规安装应用软件的方式安装即可。

上图中 .bxrc 文件是 Bochs 的配置文件,它们的参数各不相同。这里简单介绍一下 bochsrc-hd.bxrc。这个配置文件从启动软盘(A盘)加载内核映像文件 booting-0.11-hd,使用硬盘映像文件 hdc-0.11-new.img 第一个分区中的跟文件系统。

在安装完 Bochs 后直接点击 bochsrc-hd.bxrc 就能进入模拟环境,如下图所示。我们看到当前目录下有 hello 的可执行文件,我们可以直接运行它,会在控制台打印出 hello world!

Linux 代码调试 #

调试代码要用到的是 Bochs 的 debug 功能,类似于 GDB。首先我们要修改 debug.bat 配置文件,如果您的目录下没有这个文件也可以自己新增一个。

文件内只有一行指令,前面是指出了 Bochs 的 bochsdbg 文件位置, 后面则是和我们的 bochsrc-hd.bxrc 配置文件进行关联。

"D:\ertraSoft2\Bochs\Bochs\Bochs-2.2.pre4\bochsdbg" -q -f bochsrc-hd.bxrc

然后在 cmd 运行这个文件查看效果如下

我们可以可以使用 help 查看帮助,也可以在程序最开始执行的位置——神奇的 0x7c00 位置处打个断点,观察它的效果。这时程序的主窗口就会显示处 Boot from floop…的信息。

然后我们可以用 n 进行单步调试,一步步观察程序的启动过程了。

Last modified on 2022-10-04