公司动态

Linux进阶篇04:GRUB2 深度配置与内核参数

📅 2026/7/23 23:32:26
Linux进阶篇04:GRUB2 深度配置与内核参数
实验环境VirtualBox 虚拟机Rocky Linux 9Legacy BIOS (非 UEFI)。前置知识已完成Rocky 9 启动流程学习理解 GRUB2 是启动流程的第二阶段。核心目标掌握 /etc/default/grub 配置文件的修改逻辑学会使用 grubby 调整内核参数重点net.ifnames0并熟练掌握 Rescue救援模式的实战排障。目录一、前言二、GRUB2 配置逻辑图解三、核心配置详解/etc/default/grub四、禁用可预测网卡名五、GRUB 救援模式Rescue / Emergency1.场景 A修改 root 密码rd.break2.场景 B文件系统损坏Emergency Mode六、Rocky 9 专属grubby 工具的使用七、小结一、前言在上一份笔记中我们知道了 GRUB2 是系统启动的“守门员”。但在实际运维中我们经常需要修改 GRUB 的行为改网卡名Rocky 9 默认网卡名叫 ens33、enp0s3很难记我们想改成传统的 eth0。进单用户忘记了 root 密码或者文件系统损坏需要进入单用户模式修东西。调内核调整内存、CPU 或安全相关的内核参数。这一章我们不背命令而是搞懂 GRUB 配置的生成逻辑为什么改完 /etc/default/grub 后必须执行 grub2-mkconfig为什么推荐用 grubby 而不是直接改 /boot/grub2/grub.cfg二、GRUB2 配置逻辑图解在动手改文件之前必须先看懂这张图这是 Rocky 9 的 GRUB 管理机制重要原则/boot/grub2/grub.cfg 是由工具生成的每次执行 grub2-mkconfig 都会覆盖它。因此所有手动修改都必须写在 /etc/default/grub 里。三、核心配置详解/etc/default/grub打开配置文件sudovim/etc/default/grub以下是 Rocky 9 中你必须掌握的几个核心变量1. GRUB_TIMEOUT5 含义启动菜单等待时间秒。 踩坑点VirtualBox 默认有时是 0导致你来不及按 e 进入编辑模式。建议改成 5。 2. GRUB_DEFAULTsaved 含义设定默认启动哪个内核。 配合命令grub2-set-default 或 grubby --set-default。 作用当你升级了新内核但新内核坏了可以用这个指定回旧内核启动。 3. GRUB_CMDLINE_LINUX... 含义这是最重要的变量。它定义了传递给内核的参数。 内容包含 rootUUID...根分区位置、crashkernelautokdump等。 修改原则不要删除原有内容在引号内追加参数。四、禁用可预测网卡名痛点Rocky 9 默认使用 systemd 的命名规则如 enp0s3但在写脚本时不如 eth0 方便。修改配置文件sudovim/etc/default/grub找到 GRUB_CMDLINE_LINUX在末尾追加 net.ifnames0 biosdevname0。 GRUB_CMDLINE_LINUX... rhgb quiet net.ifnames0 biosdevname0 #改成这样就行了生成新的 GRUB 配置⚠️ 关键一步不改这一步重启无效。sudogrub2-mkconfig-o/boot/grub2/grub.cfg重启验证bash reboot ip addr # 此时应该看到网卡名为 eth0原理net.ifnames0 告诉内核不要使用 systemd 的预测命名规则回退到传统的 ethX 命名。五、GRUB 救援模式Rescue / Emergency当系统起不来时比如 /etc/fstab 写错我们需要进入救援模式。1.场景 A修改 root 密码rd.break重启虚拟机在 GRUB 菜单界面等待 5 秒那个界面按 e。找到以 linux16 或 linux 开头的那一行在行末追加rd.break按 CtrlX 启动。此时系统会停在一个 switch_root:/# 的 shell。注意此时根目录是只读的且是临时的。重新挂载根目录为可读写mount-oremount, rw /sysroot切到真正的系统根目录chroot/sysroot修改密码passwdrootSELinux 特殊处理Rocky 9 必做 由于修改了 /etc/shadowSELinux 会阻止启动必须打标签 bash touch /.autorelabel 退出并重启 bash exit exit 系统会自动重启2.场景 B文件系统损坏Emergency Mode如果 /etc/fstab 写错了挂载点系统会直接卡在 Welcome to emergency mode。现象屏幕显示 You are in emergency mode。journalctl-xb# 查看日志找红色报错vim/etc/fstab# 修正错误的 UUID 或挂载点reboot六、Rocky 9 专属grubby 工具的使用Red Hat 系Rocky推荐使用 grubby 来修改内核参数因为它比直接改文件更安全且能感知到所有已安装的内核。查看当前内核参数grubby--infoALL|grepargs给当前启动内核追加参数sudogrubby --update-kernelALL--argsnet.ifnames0# 然后重启reboot删除参数sudogrubby --update-kernelALL --remove-argsnet.ifnames0设置默认内核# 查看所有内核grubby--infoALL# 设置默认sudogrubby --set-default/boot/vmlinuz-5.14.0-xxx.el9.x86_64七、排障速查表GRUB 篇七、小结配置分离永远只改 /etc/default/grub用 grub2-mkconfig 生成最终配置。参数传递GRUB_CMDLINE_LINUX 是内核参数的集合地net.ifnames0 是改变网卡名的关键。救援核心rd.break 是改密码的钥匙/.autorelabel 是 SELinux 的保命符。工具选择日常运维用 grubby底层修复用 grub2-install。