My Os - hello world
最近发现来一本日本人写的书,叫做《三十天自制操作系统》。这本书自制的操作系统十分简单,但是该有的功能都有,而且提供了完整的工具和代码十分值得学习。
Day01 - Hello World
第一天的主要工作是对现有的储存空间进行分区,我们打算先设计一个1.44M大小的操作系统。
我们先设计启动区,以下为启动区的汇编代码,文件命名为 helloos.nas
1 | ; hello-os |
FAT12文件系统为1.44M的软盘设计。其中包含有有2880个扇区,一个扇区有512个字节(也就是说FAT12文件系统的管理的空间大小就是2880 512 = 1474560个字节)。FAT12将2880个扇区分成5个部分:*MBR引导记录、FAT1表、FAT2表、根目录、数据区
MBR引导记录有512个字节,最后两个字节是0x55
和0xAA
,记录的其他信息如下。
根据上面这两张图我们就能很好理解前面的汇编代码了。在 0x55
和 0xaa
之前的部分就是 MBR
。后面引导区外的代码就是 FAT1
和 FAT2
。其中 FAT2
的作用就是修复 FAT1
,所以他们的内容完全一样。他们每1.5个字节为一个簇。其中FAT表的0号簇和1号簇不能使用,他们储存的是坏簇标记 0xFF0
(这里是第一个 0xF0
和后面 0xFF
的第一个 F
拼成 0xFF0
的)和结尾标志 0xFFF
。
编译运行
我们使用作者自己提供的工具链对这些代码进行编译。
1 | nask.exe helloos.nas helloos.img |
或者
1 | .\nask.exe helloos.nas helloos.img |
可以看到我们成功生成了1.44M的光盘文件。
接下来我们把这个“操作系统”部署到虚拟机上去
启动!就可以看到我们的hello world了
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.