Linux系统启动流程与配置全解析
1. 内核启动
当引导加载程序将内核映像(如 /vmlinuz )从活动分区加载到主内存后,内核首先需要进行解压缩。虽然这会让 CPU 承担额外的工作,但在这个阶段,CPU 大部分时间处于空闲状态,主要在等待磁盘 I/O 数据,因此整体上加载压缩数据的速度更快。不过,如果系统中 CPU 成为瓶颈,使用未压缩的数据则更为有利,但目前总线和硬盘技术的发展,在可预见的未来不太可能出现这种情况。此外,压缩内核还能节省磁盘空间。
使用压缩内核是因为未压缩的内核大小超过了 704 KB(640 KB 的传统 DOS 内存加上 64 KB 的 DOS 下显卡未使用的数据区域),而此时处理器仍处于实模式,只能使用低于 1 MB 的内存地址。引入压缩内核只是掩盖了问题,由于可以集成到内核中的驱动程序众多,现在又面临实模式的限制,因为内核必须先加载到低于 1 MB 的内存中。未来,引导加载程序将在保护模式下运行,这样内核的大小将仅受实际主内存的限制。
为了突破这些限制,引入了 bzImage 和初始 RAM 磁盘 initrd 。如果内核变得非常大且无法使用模块,可以在 ./Documentation/initrd.txt 文件或 lilo 文档中找到相关信息。
引导加载程序的最后一步是将程序控制权交给解压缩的“前缀”(该前缀在编译系统时通过 /usr/src/linux/arch/i386/boot/compressed 目录下的 xtract
超级会员免费看
订阅专栏 解锁全文
2644

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



