来自http://blog.youkuaiyun.com/huangkangying/article/details/44312757
Table of Contents
- 1. BIOS启动的原理
- 2. BIOS对boot操作系统最至关重要的工作:
- 3. Linux Boot的过程:
3 Linux Boot的过程:
- BIOS执行INT 19h, 加载磁盘的第一个扇区(512 B)到
0x7C00
处. - 第一个扇区的程序为引导程序,它接下来会负责第二步和第三步的程序加载
- bootsect会先把自己加载到
0x90000
, 然后调用INT 13h加载setup.s对应的程序到0x90200
(SETUPSEG)处。最后再次调用INT 13h将kernel加载到0x10000
处。 - 加载完成后, SETUP开始执行,它调用INT 41h和INT 46h获取硬盘参数表1和硬盘参数表2.
- 关中断,EFLAGS的IF位置0,然后将system kernel(0x10000)拷贝到0x0000处。
- 此时,BIOS所留下的中断向量表和数据全部被覆盖,在操作系统设好IDT之前,不能再响应中断。
- 设置好GDT和IDT, 打开A20, 进入保护模式(CR0, PE置1),实现32位寻址。