第四十九章:引导程序与内核加载
复习
- 固件从固定位置开始,负责寻找下一段可运行的软件。
TL;DR
- 引导程序把操作系统内核从持久存储读入内存并跳转过去。
- 启动被拆成阶段,是因为最早的代码只能使用很少的资源。
正文
磁盘中的操作系统内核很大,固件却很小,也未必懂所有磁盘格式。因此启动通常分阶段进行:固件找到一个小型引导程序;引导程序初始化更多硬件,读入更完整的引导器;最后由它把内核装到内存的合适位置,准备参数并跳转到内核入口。
上电 → 固件 → 引导程序 → 内核 → 普通程序
这个过程和第 45 章的装载相呼应,只是此刻还没有操作系统可帮忙。引导器必须自己读设备、安排内存。内核接管之后,才有一段长期驻留的软件来重复处理这些工作。
内核为何值得如此郑重地先启动?因为它将成为所有程序共享硬件时的管理者。
思考题
为什么不直接把完整内核写进固件?
小结
- 引导程序把内核从持久存储装入内存。
- 分阶段启动逐步获得更多硬件能力。
思考题答案(仅供参考)
内核较大且经常更新;放在磁盘等设备中更灵活,固件只需保留稳定的最小启动能力。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。