GRUB界面详解
2026-02-14
运维
00
请注意,本文编写于 49 天前,最后修改于 5 天前,其中某些信息可能已经过时。

目录

一、GRUB 基础概念
1.1 什么是 GRUB?
1.2 GRUB 版本对比
二、GRUB 界面详解
2.1 启动菜单界面
2.2 编辑界面(按 e 进入)
2.3 命令行模式(按 c 进入)
三、GRUB 配置定制
3.1 配置文件结构
3.2 常用配置修改
修改 /etc/default/grub
应用配置
3.3 添加自定义启动项
3.4 启动菜单美化
四、GRUB 故障修复
4.1 常见故障场景
4.2 紧急修复:GRUB 命令行启动系统
4.3 Live CD 完整修复
4.4 重置 root 密码
五、UEFI 与 Legacy BIOS 差异
六、GRUB 安全加固
6.1 设置启动密码
6.2 禁用恢复模式

一、GRUB 基础概念

1.1 什么是 GRUB?

GRUB 是 Linux 系统最常用的启动引导程序,负责:

阶段功能存储位置
Stage 1BIOS/UEFI 加载 GRUB 核心MBR(主引导记录)或 EFI 分区
Stage 1.5文件系统驱动,加载 Stage 2/boot/grub 附近
Stage 2完整功能:菜单、命令行、加载内核/boot/grub/

1.2 GRUB 版本对比

特性GRUB Legacy (GRUB 0.97)GRUB 2 (推荐)
配置文件/boot/grub/menu.lst/boot/grub/grub.cfg(自动生成)
配置源直接编辑/etc/default/grub + /etc/grub.d/
脚本支持有限完整 Bash-like 语法
UEFI 支持
模块化强(按需加载驱动)

现代发行版(Ubuntu 20.04+、RHEL 8+、Debian 11+)全部使用 GRUB 2


二、GRUB 界面详解

2.1 启动菜单界面

展开代码
┌─────────────────────────────────────────────────────────┐ │ GNU GRUB version 2.06 │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ * Ubuntu │ │ │ │ Advanced options for Ubuntu │ │ │ │ Windows Boot Manager (on /dev/nvme0n1p1) │ │ │ │ UEFI Firmware Settings │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ Use the ↑ and ↓ keys to select which entry is │ │ highlighted. Press enter to boot the selected OS, │ │ 'e' to edit the commands before booting or 'c' for │ │ a command-line. │ │ │ │ The highlighted entry will be executed automatically │ │ in 10s. │ │ │ └─────────────────────────────────────────────────────────┘

按键功能

按键功能
/ 选择启动项
Enter启动选中项
e编辑当前启动项(临时修改,不保存)
c进入命令行模式(GRUB Shell)
Esc返回上一级菜单
F10 / Ctrl+X编辑后启动(在编辑界面)

2.2 编辑界面(按 e 进入)

展开代码
┌─────────────────────────────────────────────────────────┐ │ setparams 'Ubuntu' │ │ │ │ recordfail │ │ load_video │ │ gfxmode $linux_gfx_mode │ │ insmod gzio │ │ if [ x$grub_platform = xxen ]; then insmod xzio; fi │ │ insmod part_gpt │ │ insmod ext2 │ │ search --no-floppy --fs-uuid --set=root 1234-5678 │ │ linux /vmlinuz-5.15.0-76-generic root=UUID=xxx ro │ │ initrd /initrd.img-5.15.0-76-generic │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ Ctrl+X or F10: boot Ctrl+C or F2: command │ │ │ │ ESC: discard edits │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘

关键行解析

作用
linux /vmlinuz-...指定内核镜像路径和启动参数
root=UUID=xxx根文件系统位置
ro以只读方式挂载根(后续 initramfs 会 remount rw)
initrd /initrd.img-...指定初始化内存盘
quiet splash静默启动+显示动画(删除可看到详细启动日志)

2.3 命令行模式(按 c 进入)

展开代码
grub> ls # 列出所有设备和分区 grub> ls (hd0,gpt1)/ # 查看 (hd0,gpt1) 分区的根目录 grub> ls (hd0,gpt1)/boot/ # 查看 /boot 目录 grub> set root=(hd0,gpt2) # 设置根分区 grub> linux /vmlinuz-5.15.0-76-generic root=/dev/nvme0n1p2 ro grub> initrd /initrd.img-5.15.0-76-generic grub> boot # 启动

常用命令

命令功能
ls列出设备、分区、文件
set root=(hdX,gptY)设置根分区
linux /path/to/vmlinuz ...加载内核
initrd /path/to/initrd加载初始化内存盘
boot启动系统
cat /etc/fstab查看文件内容
help查看帮助
reboot重启
halt关机

三、GRUB 配置定制

3.1 配置文件结构

展开代码
/etc/grub.d/ # 配置脚本目录(按数字顺序执行) ├── 00_header # 头部信息、环境设置 ├── 05_debian_theme # 主题/背景图(Ubuntu) ├── 10_linux # Linux 内核启动项(自动生成) ├── 20_linux_xen # Xen 虚拟化支持 ├── 30_os-prober # 探测其他操作系统(Windows) ├── 30_uefi-firmware # UEFI 固件设置入口 ├── 40_custom # 用户自定义项(推荐在此添加) └── 41_custom # 自定义项备份 /etc/default/grub # 主配置文件(修改后需 update-grub) /boot/grub/grub.cfg # 生成的最终配置(不要直接编辑!)

3.2 常用配置修改

修改 /etc/default/grub

展开代码
sudo nano /etc/default/grub # 关键配置项: GRUB_DEFAULT=0 # 默认启动项(0=第一个) GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-76-generic" # 指定内核 GRUB_TIMEOUT=10 # 菜单显示时间(秒),-1=无限等待 GRUB_TIMEOUT_STYLE=menu # menu/countdown/hidden GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" # 默认启动参数 GRUB_CMDLINE_LINUX="" # 附加到所有启动项的参数 # 显示/隐藏菜单 GRUB_HIDDEN_TIMEOUT=0 # 隐藏菜单,直接启动 GRUB_HIDDEN_TIMEOUT_QUIET=true # 图形界面 GRUB_GFXMODE=1920x1080 # 分辨率 GRUB_GFXPAYLOAD_LINUX=keep # 保持图形模式 # 主题 GRUB_THEME="/boot/grub/themes/starfield/theme.txt" # 密码保护(生产环境推荐) GRUB_PASSWORD="grub.pbkdf2.sha512.10000.xxx"

应用配置

展开代码
# Debian/Ubuntu sudo update-grub # 或完整命令 sudo grub-mkconfig -o /boot/grub/grub.cfg # RHEL/CentOS/Fedora sudo grub2-mkconfig -o /boot/grub2/grub.cfg # UEFI 系统 sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

3.3 添加自定义启动项

编辑 /etc/grub.d/40_custom

展开代码
#!/bin/sh exec tail -n +3 $0 # 启动 Windows(手动指定) menuentry "Windows 10" { insmod part_gpt insmod fat insmod chain search --fs-uuid --set=root 1234-5678 chainloader /EFI/Microsoft/Boot/bootmgfw.efi } # 启动 ISO 镜像(Live CD) menuentry "Ubuntu Live ISO" { set isofile="/iso/ubuntu-22.04.iso" loopback loop (hd0,1)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet initrd (loop)/casper/initrd } # 内存测试 menuentry "Memory Test (Memtest86+)" { linux16 /boot/memtest86+.bin }

然后执行 sudo update-grub

3.4 启动菜单美化

展开代码
# 安装主题 sudo add-apt-repository ppa:daniruiz/flat-remix sudo apt install flat-remix-grub # 或手动安装 sudo git clone https://github.com/vinceliuice/grub2-themes.git /tmp/grub2-themes cd /tmp/grub2-themes sudo ./install.sh -t vimix -s 1080p # 修改配置启用 sudo nano /etc/default/grub GRUB_THEME="/boot/grub/themes/vimix/theme.txt" sudo update-grub

四、GRUB 故障修复

4.1 常见故障场景

现象原因修复方法
error: file not found内核文件被删除或移动GRUB 命令行手动指定正确路径
error: unknown filesystemGRUB 不支持该文件系统安装对应 fs 模块,或重建 GRUB
grub> 提示符(无菜单)grub.cfg 损坏或丢失命令行手动启动,或 Live CD 修复
grub rescue> 提示符Stage 1.5/2 损坏使用 Live CD 完整重装 GRUB
直接进入 Windows,无 LinuxUEFI 启动顺序被覆盖调整 UEFI 启动项,或修复 GRUB
启动后黑屏显卡驱动问题编辑启动参数添加 nomodeset

4.2 紧急修复:GRUB 命令行启动系统

当 GRUB 菜单损坏,只剩 grub> 提示符时:

展开代码
# 步骤 1:找到根分区 grub> ls (hd0) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3) grub> ls (hd0,gpt2)/ # 看到 vmlinuz 和 initrd.img = 找到根分区 # 步骤 2:设置变量 grub> set root=(hd0,gpt2) grub> set prefix=(hd0,gpt2)/boot/grub # 步骤 3:加载内核(根据实际版本调整) grub> linux /vmlinuz-5.15.0-76-generic root=/dev/nvme0n1p2 ro # 或先用 UUID(更可靠) grub> linux /vmlinuz-5.15.0-76-generic root=UUID=xxxxx ro # 步骤 4:加载初始化内存盘 grub> initrd /initrd.img-5.15.0-76-generic # 步骤 5:启动 grub> boot

进入系统后,立即修复 GRUB

展开代码
sudo update-grub sudo grub-install /dev/nvme0n1 # 安装到磁盘,不是分区!

4.3 Live CD 完整修复

展开代码
# 1. 从 Ubuntu Live USB 启动,选择 "Try Ubuntu" # 2. 打开终端,查看磁盘 sudo fdisk -l # 找到 Linux 根分区,如 /dev/nvme0n1p2 # 3. 挂载根分区 sudo mount /dev/nvme0n1p2 /mnt # 4. 挂载其他必要文件系统 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # UEFI 系统 sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys # 5. chroot 进入系统 sudo chroot /mnt # 6. 重新安装 GRUB grub-install /dev/nvme0n1 update-grub # 7. 退出并重启 exit sudo reboot

4.4 重置 root 密码

展开代码
# 在 GRUB 菜单按 'e' 编辑启动项 # 找到 linux 开头的那行,在行末添加: init=/bin/bash # 按 Ctrl+X 或 F10 启动 # 进入 root shell(无密码!) # 根分区是只读的,重新挂载 mount -o remount,rw / # 修改密码 passwd root # 重启 exec /sbin/init

五、UEFI 与 Legacy BIOS 差异

特性Legacy BIOSUEFI
分区表MBRGPT
启动文件位置MBR 前 446 字节EFI 系统分区(ESP)
GRUB 安装目标/dev/sda(磁盘)/dev/sda1(ESP 分区)
安装命令grub-install /dev/sdagrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
配置文件路径/boot/grub/grub.cfg/boot/efi/EFI/ubuntu/grub.cfg
安全启动不支持支持(可能需关闭或 shim)

UEFI 专用修复

展开代码
# 重新安装 UEFI 版本的 GRUB sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck # 更新 NVRAM 启动项 sudo efibootmgr -v # 查看当前项 sudo update-grub

六、GRUB 安全加固

6.1 设置启动密码

展开代码
# 生成密码哈希 grub-mkpasswd-pbkdf2 # 输入密码,复制生成的哈希 sudo nano /etc/grub.d/40_custom set superusers="admin" password_pbkdf2 admin grub.pbkdf2.sha512.10000.xxxxxx # 限制普通用户编辑 sudo nano /etc/grub.d/10_linux # 在 menuentry 块中添加 --users '' 表示需要密码 menuentry 'Ubuntu' --users '' { ... } sudo update-grub

6.2 禁用恢复模式

展开代码
sudo nano /etc/default/grub GRUB_DISABLE_RECOVERY="true" sudo update-grub

本文作者:zzz

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!