9、Linux内核加载与启动流程详解

Linux内核加载与启动流程详解

1. 内核加载概述

在系统启动流程中,到特定阶段时,GRUB 2需将控制权交给内核。为实现这一交接,引导加载程序要完成两项主要任务:
- 将内核加载到内存中。
- 根据引导协议设置内核的一些字段。

引导协议规定了引导加载程序需传递或设置内核头的部分字段,如根设备名、挂载选项(ro 或 rw)、initramfs 名称、initramfs 大小等,这些字段被称为内核命令行参数,由 GRUB 或引导加载程序传递给内核。

GRUB 不会随意加载内核(/boot/vmlinuz),而是会将其加载到特定位置,该位置会因所使用的 Linux 发行版、版本以及系统的 CPU 架构而异。vmlinuz 是一个存档文件,由三部分组成:
| 部分 | 说明 |
| ---- | ---- |
| Header(第 1 部分) | 包含负责内核初始化设置的代码 |
| 内核设置代码(第 2 部分) | 用于内核的初始化配置 |
| vmlinux(第 3 部分) | 实际的压缩内核 |

2. 内核加载到内存后的初始步骤

当 GRUB 2 将内核加载到内存的特定位置后,内核存档文件 vmlinuz 会执行以下初始步骤:
1. 引导加载程序将内核加载到内存的特定位置后,由 arch/x86/boot/header.S 文件生成的二进制文件开始运行。
2. 可能会产生疑问:vmlinuz 是存档文件,引导加载程序尚未提取它,为何存档文件内的代码能运行?
- 简短答案是:由 arch/x86/boot/header.S 文件生成的二进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值