深入操作系统-01环境创建

要开发一个操作系统,搭建开发环境是必不可少的,本篇文章就介绍如何使用Linux、bochs搭建开发环境。

注意:本文章还没有涉及到C语言,所以环境搭建没有涉及到这部分,将会在后续进行补充。

开发流程

在不考虑其它的情况下,先要知道一个OS源码最后要怎么在机器上运行。

  1. 编写一个汇编源码文件(a.asm)
  2. 使用nasm把汇编文件a.asm编译成二进制文件a.bin
  3. 把二进制文件a.bin写入到磁盘中(在开发环境中即a.img)
  4. 在bochs使用已写入汇编源码的磁盘(a.img)进行测试运行

即源码文件经历了如下流程:.asm -> a.bin -> a.img

现在已经整个开发流程有了一个基本的认知了,下面逐一讲解需要用到的工具。

Linux

是基本的编译环境,其次把编译好的二进制文件写入到磁盘中也需要用到Linux中的指令,即源码的编译与文件的写入都离开不了Linux。

Nasm

是一个汇编指令的编译软件,能把汇编文件编译成二进制文件。

Bochs

已经写好的程序该放到哪里运行呢?放到自己的电脑上,程序有故障怎么办!所以最好的办法是使用虚拟机,可以随便折腾,有问题也不怕,但是我们需要调试程序,所以使用普通的虚拟机也不行。

因此使用bochs就是一个极好的选择,既是虚拟机又带有调试功能。

在这里省略bochs的安装过程,主要看看使用bochs时需要用到的配置文件(注意:文件后缀是bxrc的就是bochs用到的配置文件,例:bochsrc.bxrc)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 为虚拟机分配的内存(RAM)大小,默认单位是MB
megs: 32

# 这里还没研究
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

# 使用的磁盘列表
floppya: 1_44=boot.img, status=inserted

# 选择引导磁盘 cdroom即光驱 floppy即软驱 disk即硬盘
boot: floppy

# 输出的日志文件
log: bochsout.txt

# 是否启用鼠标
mouse: enabled=0

# 键盘布局
keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map

注意:上文中提到的$BXSHARE即为bochs的安装目录。

通过配置文件可以知道,要运行我们自己写的操作系统,只需要在配置文件中的磁盘列表加入我们创建的磁盘,并在以到磁盘项中选择我们的磁盘,然后运行bochs即可。

总结

以上便是开发一个操作系统需要的基本开发环境,目前涉及到的C语言部分将在后面完善。