【完整代码已经归档到 https://github.com/linzhanglong/mini_bootloader 】
现在我们完成我们第一个主要的功能:引导Linux内核。
首先我们要准备一个Linux内核文件 bzImag。如何引导Linux内核呢?需要做几件事情:
1. 设置GDT,设置访问内存权限;
2. 开启A20地址线(原因:http://blog.youkuaiyun.com/ruyanhai/article/details/7181842,是为了兼容历史CPU产生的坑)
3. 进入保护模式
4.把内核加载到内存去;
5.设置启动参数,然后调到内核代码执行。
首先我们先设置CPU进入保护模式,需要做两件事情,第一件事情就是设置GDT。我们看GDT的格式:
GDT用来做什么呢?第一,就是设置我们代码的权限;第二就是设置代码处于CPU哪个级别。其中Type字段决定了类型(数据段还是代码段)以及权限,而DPL决定了属于哪个CPU级别(ring0,还是ring3)。而Base address和Lim
引导Linux内核:从实模式到保护模式

本文介绍了如何引导Linux内核并进入保护模式。内容包括设置GDT以控制内存访问权限,开启A20地址线,加载内核到内存,设置启动参数,并调用内核代码。此外,还提供了初始化GDT、启用A20地址线、进入保护模式的代码示例,以及在保护模式下实现打印字符串和显示寄存器值的方法。
最低0.47元/天 解锁文章
4256

被折叠的 条评论
为什么被折叠?



