📄 1
字号:
fairysky的第一个版本的引导是通过软盘引导的。
为了使fairysky尽可能的做到小巧,我们精简了引导过程,使整个引导过程只做了必须的工作。
引导包括两部分:在boot目录下的boot.asm和setup.asm
boot.asm编译后的目标代码占一个扇区(即512字节),将写在软盘的0面0道1扇区。boot的功能很简单,主要是加载硬件参数设置程序setup到0x9000:0x0000处,然后跳到setup处运行
setup.asm编译后的目标代码占两个扇区(即1024自己)(目前的大小,以后可能会改,因为探测实际物理内存大小的代码还没有加进去),将写在软盘的0面0道2、3扇区。setup的功能主要是读取各种参数,读取内核到0x1000:0x0000处,对8259重新编程,进入保护模式,打开A20,跳转到32位代码中,移动内核到1M处,建立页目录和页表,映射到线性的地址的0xC0000000处16M(因此物理地址和线性地址有3G的位移,一一对应),和0x00000000处4M,开启分页,最后跳转到0xC0100000处,即main函数中。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -