linux 开机启动过程
封面图
•
2025-11-03
•
Linux
324
0
0
0
Linux 开机启动过程是一个从硬件初始化到操作系统完全加载并运行的复杂流程。整个过程可以分为以下几个主要阶段: --- ## 一、BIOS/UEFI 初始化(固件阶段) 1. **加电自检(POST)** - 计算机通电后,主板上的 **BIOS(Basic Input/Output System)** 或 **UEFI(Unified Extensible Firmware Interface)** 会执行开机自检。 - 检查系统硬件(如内存、硬盘、CPU 等)是否正常。 2. **查找启动设备** - BIOS/UEFI 根据设置的启动顺序(Boot Order)查找可启动设备(如硬盘、U 盘、光盘等)。 - 找到第一个可启动设备后,读取其 **引导扇区(Boot Sector)**。 --- ## 二、引导程序加载(Bootloader 阶段) 引导程序(Bootloader)是负责加载操作系统内核的程序。常见的 Bootloader 有: - **GRUB(Grand Unified Bootloader)**(用于大多数 Linux 发行版) - **LILO(Linux Loader)** - **rEFInd**(用于 UEFI 系统) ### GRUB 的工作流程: 1. **GRUB Stage 1**:位于 MBR(主引导记录)或分区引导扇区,负责加载 Stage 2。 2. **GRUB Stage 2**:加载 GRUB 的配置文件(`/boot/grub/grub.cfg`),显示启动菜单。 3. **选择内核**:用户选择要启动的内核版本和配置(如恢复模式)。 4. **加载内核和 initramfs**: - 加载内核镜像(`vmlinuz` 或 `bzImage`)。 - 加载初始 RAM 文件系统(`initramfs` 或 `initrd`),它包含启动时所需的模块和驱动。 --- ## 三、内核初始化(Kernel Initialization) 1. **内核解压并加载** - 内核被加载到内存中并开始执行。 - 内核会初始化硬件设备(如 CPU、内存、磁盘控制器等)。 2. **挂载根文件系统(Root Filesystem)** - 内核尝试挂载根文件系统(`/`)。 - 如果使用了 initramfs,内核会先加载这个临时根文件系统,然后从其中启动 `/init` 脚本,进一步挂载真正的根文件系统。 --- ## 四、init 进程启动(System Initialization) Linux 使用不同的初始化系统,常见的是: - **SysVinit**(传统 init 系统) - **systemd**(现代主流发行版使用的 init 系统) ### systemd 启动流程(以 systemd 为例): 1. **启动 init 进程** - 内核启动的第一个进程是 `init`,在 systemd 中就是 `/sbin/init`。 2. **加载 systemd 系统和服务管理器** - systemd 是一个系统和服务管理器,负责启动其他服务和进程。 3. **执行默认目标(Target)** - 默认目标通常是 `multi-user.target`(多用户模式,无图形界面)或 `graphical.target`(带图形界面)。 4. **启动系统服务** - systemd 会按照依赖关系依次启动各种服务(如网络、日志、用户登录等)。 5. **启动 getty / login** - 启动终端登录界面(`getty`),等待用户登录。 --- ## 五、用户登录与系统就绪 1. **用户登录** - 用户通过终端或图形界面(如 GNOME、KDE)登录系统。 2. **系统完成启动** - 系统进入正常运行状态,等待用户操作。 --- ## 六、关机过程(简要) 1. **发送 shutdown 信号给 systemd** 2. **停止所有服务** 3. **卸载文件系统** 4. **关闭内核** 5. **关闭电源** --- ## 总结图示(简化版): ``` [加电] → [BIOS/UEFI] → [Bootloader (GRUB)] → [内核加载] → [initramfs] → [init (systemd)] → [系统服务启动] → [用户登录] ``` --- 如果你对某个具体步骤(如 GRUB 配置、systemd 服务、initramfs 制作等)感兴趣,我可以进一步详细说明。
上一篇:
Linux如何修改文件和文件夹的权限?
下一篇:
php序列化类的属性保存到 session 中
标题录入,一次不能超过6条
留言
评论