Bochs 是一个硬件模拟器,咱们写的内核将运行在上面,后续全部的开发调试工做也将在这上面进行,因此第一步就是安装它。个人开发环境是 Linux Mint 系统,你用 Ubuntu 也同样,能够直接安装:git
sudo apt install bochs
要是这种方法不行的话,能够直接去官网下载源码包编译安装,这种方法我也试过是 ok 的。不过在安装过程当中会遇到一些第三方依赖的库不全的问题,那就逢山开路遇水搭桥,把依赖都安装上就行,在这里我就不细说了,须要你本身动手想一想办法,不会很难的,网上也有一些教程能够参考。shell
至于其它系统我没试过,可是编译源码包安装的方式确定是行得通的。bash
首先你需一个 Bochs 运行的配置文件 bochsrc.txt
,这是我用的:多线程
# RAM size megs: 32 # Change to your Bochs installation path romimage: file=/usr/share/bochs/BIOS-bochs-latest vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest # Disk boot: disk ata0: enabled=1, ioaddr1=0x01f0, ioaddr2=0x03f0, irq=14 ata0-master: type=disk, path="scroll.img", mode=flat, cylinders=6, heads=16, spt=63 log: bochsout.txt mouse: enabled=0 keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map clock: sync=realtime cpu: ips=1000000
这里最重要的部分就是 Disk 相关配置,咱们这里用到了一个磁盘,这也是后面的 boot loader 和内核镜像盘,系统就是用该盘启动。固然这不是真的磁盘。就是一个镜像文件。app
其中 path="scroll.img"
就是镜像文件,这里和配置文件 bochsrc.txt
在同一路径下,因此就很简单。名字你随便起,个人叫 scroll
,至于为何后面再说。固然如今咱们尚未内核镜像文件,你能够随便找个空文件。工具
后面的 cylinders
,heads
,spt
几个都是硬盘硬件相关的一些参数了,什么柱面柱头之类的没必要深究。Bochs 有一个命令行工具 bximage,能够帮你肯定这个参数,你只须要告诉它你的镜像文件会有多大。gitlab
一切就绪,能够运行 Bochs 了:spa
bochs -f bochsrc.txt
话说目前为止咱们的项目还没建起来,因此先去 Git 建一个吧。我先给出个人 Git 项目地址,你能够先参考下,也能够下载下来运行里面的 ./start.sh
脚本,看下运行效果。命令行
我给这个项目起的名字叫 scroll
,中文意思就是卷轴,就是这东西:线程
卷轴,就是一张纸,一幅画卷。在咱们这里就是内存,磁盘,从一片空白开始,而那支画笔就是 CPU。整个内核的启动,运行,本质上就是 CPU 和内存之间的一场对话,CPU 在内存上来回跳跃,翻转腾挪,勾画出一个庞大复杂的工程系统,这就是 OS。
下一篇开始,咱们将正式进入 OS 的启动:BIOS 到实模式运行。