news 2026/2/14 15:34:17

22、Linux系统启动与模块管理全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
22、Linux系统启动与模块管理全解析

Linux系统启动与模块管理全解析

一、系统启动流程

1.1 BIOS阶段

计算机开机后,由于RAM中包含随机数据且没有操作系统运行,此时计算机几乎无法使用。为了启动,一个特殊的硬件电路会拉高CPU的RESET引脚的逻辑值。RESET被触发后,处理器的一些寄存器(包括cs和eip)会被设置为固定值,然后执行物理地址0xfffffff0处的代码。这个地址被硬件映射到一个通常称为只读存储器(ROM)的只读、持久存储芯片上。存储在ROM中的一组程序传统上被称为基本输入/输出系统(BIOS),因为它包含了一些由包括微软的MS - DOS在内的操作系统使用的中断驱动的低级程序,用于处理构成计算机的硬件设备。

Linux在初始化后不使用BIOS,而是为计算机上的每个硬件设备提供自己的设备驱动程序。实际上,BIOS程序必须在实模式下执行,而内核在保护模式下执行,所以即使这样做有好处,它们也不能共享功能。

BIOS使用实模式地址,因为这是计算机开机时唯一可用的地址。实模式地址由段(seg)和偏移量(off)组成,对应的物理地址由seg * 16 + off给出。因此,CPU寻址电路在将逻辑地址转换为物理地址时不需要全局描述符表(GDT)、局部描述符表(LDT)或页表。显然,初始化GDT、LDT和页表的代码必须在实模式下运行。

Linux在引导阶段不得不使用BIOS,因为它必须从磁盘或其他外部设备中获取内核映像。BIOS引导过程主要执行以下四个操作:
1. 对计算机硬件执行一系列测试,以确定哪些设备存在以及它们是否正常工作。这个阶段通常称为加电自检(POST)。在此阶段,会显示一些消息,如BIOS版本横幅。
2. 初始化硬件设备。在基

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!