本文将详细解析Linux内核的启动顺序,带领读者深入理解这一过程中的各个环节
一、启动前的准备 在计算机启动之前,电源按下之前,仅有两个关键组件在RTC(实时时钟)电源供电的情况下保持工作:RTC和CMOS
RTC芯片保持机器内部的时钟,确保计算机在关机后重新启动时时间仍然准确
CMOS则是一块可读写的RAM芯片,用于保存BIOS设置计算机硬件参数后的数据
当外部ATX电源接入后,ATX电源使用+5VSB(Stand-By)电源唤醒一部分硬件,如南桥(系统IO芯片)和EC(嵌入式控制器、单片机)
这些组件为开机做好准备,等待用户按下电源键
二、BIOS/UEFI阶段 按下电源键后,EC接收到PWRSW信号,并向南桥发送PM_PWRBTN#信号
南桥回应EC三个信号:SLP_S5#(退出S5关机状态)、SLP_S4#(退出S4休眠状态)、SLP_S3#(退出S3待机状态)
ATX电源收到信号后开始工作,发出各路基本电压给主板上的各个元件
BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)是计算机按下电源后最先被执行的程序
它们位于主板上的ROM(只读存储器)中,负责进行硬件的初始化和自检(POST)
BIOS阶段可用的内存地址空间非常有限,在x86系统中仅有1MB
CPU执行的第一条指令位于ROM的地址范围内,该指令跳转到BIOS代码真正开始的地方,进行初始化工作
三、Bootloader阶段 BIOS/UEFI自检成功后,将磁盘相对0道0扇区上的Bootloader装入内存
在x86系统中,Bootloader通常位于磁盘的主扇区(MBR),负责从活动分区加载并运行系统引导程序
Linux系统中常见的Bootloader有GRUB(GRand Unified Bootloader)、LILO(Linux Loader)和Syslinux等
这些Bootloader根据配置文件(如GRUB的grub.cfg)加载压缩的内核映像(如vmlinuz)和可选的initrd/initramfs文件,并设置内核启动参数
四、内核加载与解压 Bootloader将压缩的内核映像加载到内存中,并准备好内核启动所需的环境
内核映像通常是一个gzip或其他格式压缩的二进制文件
在内核映像的开头,有一个小的解压缩程序,负责解压内核的主体部分
一旦内核映像被加载到内存,解压缩程序会运行并将压缩的内核映像解压到适当的内存位置
解压完成后,
Linux 640系统:性能优化全解析
揭秘Linux内核启动顺序全过程
Vim分屏技巧:高效管理Linux编辑器多窗口的秘诀
Hyper-V无响应,故障排查指南
Linux ch命令详解与使用技巧
Linux系统下快速安装Automake指南
Linux系统:是否支持设备树解析?
Linux 640系统:性能优化全解析
Vim分屏技巧:高效管理Linux编辑器多窗口的秘诀
Linux ch命令详解与使用技巧
Linux系统下快速安装Automake指南
Linux系统:是否支持设备树解析?
Linux环境下石器时代服务器架设全攻略
Linux Qt教程:入门实战指南
Linux vprintf:高效格式化输出技巧
Linux动态目录管理技巧揭秘
Linux编程实战:打造你的专属ATM管理系统
Linux系统轻松进入图形界面指南
Linux下.o文件调用技巧揭秘