linux命令 grub2?
掌控 Linux 启动核心:GRUB2 命令详解与实战指南
作为现代 Linux 系统的启动核心引擎,GRUB2(GRand Unified Bootloader 2)是主流发行版的默认引导加载程序,它在计算机启动时率先接管控制权,核心职责是精准加载 Linux 内核与初始化内存盘(initramfs),GRUB2 凭借其模块化架构、多系统引导能力以及对 BIOS/UEFI 的全面兼容性,成为系统管理员的核心工具,深入掌握其配置与命令,意味着获得对系统启动链的绝对控制权。
GRUB2 核心配置文件:/boot/grub/grub.cfg
-
生成逻辑:
严禁直接编辑此文件!它由三部分动态生成:- 全局配置
/etc/default/grub
(定义超时时间、默认启动项等) - 脚本模板
/etc/grub.d/*
(按数字顺序执行) - 核心命令
sudo grub2-mkconfig -o /boot/grub/grub.cfg
(生成最终配置)
此机制确保内核更新或参数调整时配置的一致性与安全性。
- 全局配置
-
核心功能:
- 启动菜单控制:定义菜单项、默认选项、超时时间及主题(如背景图)
- 内核精准加载:指定
vmlinuz-xxx
内核镜像与匹配的initramfs-xxx.img
- 内核参数传递:
linux /vmlinuz root=UUID=abcd ro quiet # BIOS linuxefi /vmlinuz root=UUID=abcd ro # UEFI
关键参数包括:
root=
(根分区)、single
(单用户模式)、rd.break
(调试Shell) - 多系统引导:
menuentry "Windows" { chainloader (hd0,gpt1)/EFI/Microsoft/Boot/bootmgfw.efi }
- 模块动态扩展:
insmod ext2 # 磁盘文件系统支持 insmod gcry_sha256 # 加密模块 insmod gfxterm # 图形终端
GRUB2 四大核心命令实战
配置生成命令:grub2-mkconfig
-
作用:整合
/etc/default/grub
与/etc/grub.d/
脚本生成最终配置 -
典型场景:
# BIOS/Legacy 系统 sudo grub2-mkconfig -o /boot/grub/grub.cfg # UEFI 系统(以Fedora为例) sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
-
触发时机:
- 修改内核参数(如
/etc/default/grub
中的GRUB_CMDLINE_LINUX="ipv6.disable=1"
) - 增删内核或操作系统(如安装 Windows 后需更新菜单)
- 自定义脚本变更(如修改
/etc/grub.d/40_custom
)
- 修改内核参数(如
引导修复命令:grub2-install
-
核心作用:
- BIOS 系统:向磁盘 MBR 写入 Stage1 引导代码
- UEFI 系统:安装
grubx64.efi
到 ESP 分区并注册到固件
-
操作示例:
# BIOS 系统安装到 sda sudo grub2-install /dev/sda # UEFI 系统修复(需提前挂载 ESP 分区) sudo grub2-install --target=x86_64-efi \ --efi-directory=/boot/efi \ --bootloader-id=Fedora_Linux
-
救急场景:
- 通过 Live CD 挂载原系统:
mount /dev/sda2 /mnt # 挂载根分区 mount /dev/sda1 /mnt/boot/efi # 挂载 ESP 分区 chroot /mnt
- 执行双重修复:
grub2-install /dev/sda grub2-mkconfig -o /boot/grub/grub.cfg
- 通过 Live CD 挂载原系统:
GRUB 命令行:终极故障排除工具
-
进入方式:启动时按
c
键进入grub>
提示符 -
核心命令:
| 命令 | 作用 |
|------------------------------|----------------------------------|
|ls
| 列出所有存储设备(如(hd0,gpt2)
) |
|set root=(hd0,gpt2)
| 设置/boot
所在分区 |
|linux /vmlinuz root=UUID=xxx
| 指定内核及根分区参数 |
|initrd /initramfs.img
| 加载初始化内存盘 |
|insmod btrfs
| 动态加载 Btrfs 文件系统模块 |
|search --fs-uuid --set=root xxxx
| 按 UUID 自动定位分区 | -
实战案例(配置文件损坏修复):
grub> ls # 识别分区 grub> set root=(hd0,gpt2) grub> linux /vmlinuz-5.15.0 root=/dev/mapper/vg0-root ro grub> initrd /initramfs-5.15.0.img grub> boot # 手动引导系统
进入系统后立即执行:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
安全加固:GRUB2 密码防护
- 核心目的:阻止通过编辑启动参数(如
init=/bin/bash
)绕过系统认证 - 实施步骤:
- 生成 PBKDF2 加密密码:
grub2-mkpasswd-pbkdf2 # 输出:grub.pbkdf2.sha512.10000.2F3A...
- 在
/etc/grub.d/40_custom
添加:set superusers="admin" password_pbkdf2 admin grub.pbkdf2.sha512.10000.2F3A...
- 按需限制菜单项:
menuentry "Ubuntu" --users admin { ... } # 仅admin可启动
- 使配置生效:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
- 生成 PBKDF2 加密密码:
关键总结:
- 修改配置永远通过
/etc/default/grub
和/etc/grub.d/
,拒绝直编辑 grub.cfg- 任何配置更新后必须执行
grub2-mkconfig
生成新配置- 磁盘更换/引导损坏时,
grub2-install
+grub2-mkconfig
双剑合璧- GRUB 命令行是系统无法启动时的终极救赎工具
优化说明:
- 重构技术逻辑链,明确“配置生成-安装修复-命令行急救”工作流
- 补充 UEFI/BIOS 双模式操作差异说明
- 增加命令输出示例及救急场景代码块
- 强化安全防护实操步骤(PBKDF2密码+菜单项权限)
- 使用表格对比命令行关键操作,提升信息密度