当前位置:首页>Linux>Linux 运维必学(十七)| 开机流程彻底吃透

Linux 运维必学(十七)| 开机流程彻底吃透

  • 2026-09-08 05:37:35
Linux 运维必学(十七)| 开机流程彻底吃透
很多运维朋友日常只会重启服务、开关机,一旦遇到开机故障直接束手无策。
开机黑屏、内核报错、GRUB引导损坏、忘记Root密码、文件系统挂载失败,这些高频问题,本质都是不懂 Linux 开机底层逻辑。
本文用轻量化阅读逻辑,从流程→内核→配置→引导→排障层层拆解。只留核心考点和生产实操,无废话、无冗余晦涩理论,看完就能用、面试就能答。

一、Linux开机完整流程(极简总览)

Linux 开机不是随机启动,是一套固定顺序、层层依赖的流水线。
标准开机链路:BIOS自检 → BootLoader引导 → 系统内核初始化 → 系统启动完成

BootLoader(开机引导程序)三大核心作用

它是硬件与系统内核的“中间桥梁”,是多系统、开机内核加载的核心:
✅ 提供开机菜单:支持 Windows+Linux 多系统切换
✅ 载入内核文件:精准调用系统内核,启动操作系统
✅ 转交引导权限:可移交引导功能,适配复杂多系统兼容场景

二、系统内核与模块(开机真正核心)

内核是 Linux 的灵魂,硬件驱动、设备调度、开机初始化,全部依赖内核和内核模块支撑。绝大多数开机驱动异常,都出在这一层。

1、核心文件路径(必记)

● 系统内核主体:/boot/vmlinuz
● 开机临时驱动文件:/boot/initramfs(开机必备,缺失直接无法启动)
● 内核模块目录:/lib/modules/$(uname -r)/kernel
● 内核源码目录:/usr/src/linux(需手动安装,默认无)

2、实操:dracut 修复/重建 initramfs

很多开机卡死、驱动加载失败,都是 initramfs 损坏或驱动不全导致。
核心作用:重新生成开机临时文件,补充缺失驱动、修复损坏文件。
常用参数(生产够用版)
● -f:强制覆盖旧文件
● -v:显示执行过程,方便排错
● --add-drivers:额外添加指定硬件驱动
万能实操命令(直接复制可用)
dracut -fv /boot/initramfs-$(uname -r).img $(uname -r)

3、内核模块依赖管理 depmod

系统所有模块的依赖关系,统一记录在:/lib/modules/$(uname -r)/modules.dep
简单理解:告诉系统「加载这个模块需要先加载哪些依赖」。
常用参数
● 无参数:全量刷新所有模块依赖
● -A:增量更新,只刷新新增/修改模块
● -e:检查并列出无效、异常模块

4、查看内核模块常用命令

● lsmod:查看已加载模块,展示模块大小、依赖数量
● modinfo 模块名:查看模块详情(作者、说明、协议、路径)

5、模块加载与卸载(3种方式区别)

① insmod:需写完整路径,不自动处理依赖,新手不推荐
② rmmod:卸载模块,-f 可强制卸载正在使用的模块
③ modprobe(生产首选):自动识别、自动补全依赖,无需完整路径

6、模块参数永久配置

想要开机永久生效自定义模块参数,直接配置:/etc/modprobe.d/*.conf

三、开机配套配置 + 运行级别

内核负责底层支撑,这些配置文件负责定义「开机怎么运行、运行什么状态、开启什么服务」。

1、开机核心配置文件分类

模块开机配置
● /etc/modules-load.d/*.conf:单纯开机自动加载模块,无自定义参数
● /etc/modprobe.d/*.conf:可自定义模块运行参数
系统功能配置(/etc/sysconfig/)
● authconfig:账号认证权限配置
● cpupower:CPU性能、功耗调度
● 各类防火墙配置:firewalld、iptables、ebtables
● network-scripts:网卡、网络启动配置目录

2、运行级别 SystemV → systemd 对应表

配置存放路径:/usr/lib/systemd/system/runlevel*.target
● 0 关机 | init 0 → systemctl poweroff
● 1 单用户救援 | init 1 → systemctl rescue
● 2/3/4 多用户字符模式 | init 234 → systemctl isolate multi-user.target
● 5 图形桌面模式 | init 5 → systemctl isolate graphical.target
● 6 重启 | init 6 → systemctl reboot

四、Grub2 开机引导(故障重灾区)

Grub2 是 CentOS7+ 默认引导程序,所有开机菜单、内核参数、多系统引导、单用户救援,全部依赖它。

1、Grub2 核心优势

✅ 兼容 MBR/GPT 分区、多种文件系统
✅ 开机可手动编辑内核参数,是故障救援核心入口
✅ 改配置无需重装,只需重建即可生效

2、两大启动阶段

● Stage1:写入 MBR 引导扇区,完成基础硬件引导
● Stage2:加载配置、内核、文件系统,生成开机菜单

3、核心配置规范(重点避坑)

❌ 不要直接改:/boot/grub2/grub.cfg(重建会覆盖)
✅ 正确修改位置:/etc/default/grub、/etc/grub.d/

4、Grub2 磁盘分区命名规则

硬盘按 BIOS 扫描顺序编号,分区从 0 开始:
● 通用写法:(hd0,1)
● MBR 磁盘:(hd0,msdos1)
● GPT 磁盘:(hd0,gpt1)

5、grub.cfg 核心字段释义

● set root:指定引导所在磁盘分区
● linux16:加载系统内核及开机参数
● initrd16:加载开机临时驱动文件

6、自定义配置标准流程

1、修改 /etc/default/grub 全局参数(超时、默认内核、内核参数)
2、修改 /etc/grub.d/ 脚本(自定义菜单、识别多系统)
3、执行重建命令(必做)
grub2-mkconfig -o /boot/grub2/grub.cfg

7、实操:添加 Windows 开机菜单

在 /etc/grub.d/40_custom 写入以下内容,重建配置即可生效:
menuentry "Windows" {
insmod chain
insmod ntfs
set root=(hd0,1)
chainloader +1
}

8、Grub2 安全加固:开机密码管控

生产环境建议设置开机密码,防止恶意人员进入单用户、篡改内核参数。
● 角色:superusers超级管理员、普通users普通用户
● 安全密码:使用 grub2-mkpasswd-pbkdf2 生成加密密码
● 最佳实践:修改 01_users 文件配置,安全性最高

五、生产高频实操:两种方法重置 Root 密码

忘记 Root 密码不用重装系统!下面两种方法适配 CentOS7+,100% 可行。

方法一:rd.break 救援法(推荐、稳定)

1、开机 Grub 界面,选中内核按e编辑参数
2、内核参数末尾添加:rd.break
3、按Ctrl+x进入救援模式
4、重新挂载可读写:mount -o remount,rw /sysroot
5、切换真实系统:chroot /sysroot
6、重置密码:echo "新密码" | passwd --stdin root
7、创建 SELinux 标签(必做):touch /.autorelabel
8、两次 exit 退出,自动重启生效

方法二:init=/bin/bash 单用户法

1、Grub 编辑内核参数,添加:init=/bin/bash
2、Ctrl+x 进入单用户 shell
3、挂载可读写:mount -o remount,rw /
4、重置密码、创建 SELinux 标签
5、强制物理重启(该模式 reboot 无效)

六、开机故障修复:XFS 文件系统损坏

异常断电、磁盘坏道,极易导致 XFS 文件系统损坏、无法开机挂载。
修复核心命令:xfs_repair 磁盘分区路径
标准流程:进入救援模式 → 卸载故障分区 → 执行 xfs_repair 修复 → 重启恢复正常开机

七、全文核心总结(速读版)

💡开机流程:BIOS→引导程序→内核初始化,全程逐级依赖
💡内核模块:系统底层核心,dracut 修开机文件,modprobe 智能管理模块依赖
💡开机配置:模块配置、系统服务配置、运行级别,定义系统开机状态
💡Grub2引导:开机入口,不改 grub.cfg,改完配置必须重建,支持多系统与安全加固
💡故障排障:两种 Root 密码重置方案 + XFS 文件系统修复,覆盖绝大多数开机故障
吃透这套 Linux 开机底层逻辑,日常排障、面试答题、服务器急救都能直接落地!

最新文章

随机文章