Zenith Horizon

GRUB 安装配置详解

2026/03/20
loading

GRUB2 是 Debian 默认的引导加载程序,负责加载系统内核并启动系统,支持 BIOS(Legacy) 与 UEFI 两种启动模式,配置核心是安装到正确位置、修改主配置文件并生成引导菜单。

一、安装前准备

1. 确认启动模式

  • BIOS(Legacy):传统启动,GRUB 安装到硬盘 MBR(主引导记录),对应包 grub-pc​。

  • UEFI:现代启动,需 EFI 系统分区(ESP),GRUB 安装到 ESP,对应包 grub-efi-amd64​(x86_64 架构)。

2. 安装 GRUB 软件包

# 更新软件源
sudo apt update

# BIOS 模式安装
sudo apt install grub-pc

# UEFI 模式安装(x86_64)
sudo apt install grub-efi-amd64

3. 挂载必要分区(修复/重装场景)

若从 Live 系统修复 GRUB,需先挂载系统分区与 ESP(UEFI):

# 挂载根分区(替换为你的根分区,如 /dev/sda2)
sudo mount /dev/sda2 /mnt

# UEFI 模式:挂载 ESP 分区(替换为你的 ESP,如 /dev/sda1,挂载到 /boot/efi)
sudo mount /dev/sda1 /mnt/boot/efi

# 绑定系统目录(进入 chroot 环境)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt

二、GRUB 安装(核心步骤)

1. BIOS 模式安装

安装到硬盘 MBR(不是分区,如 /dev/sda​):

# 安装到硬盘 MBR(替换 /dev/sda 为你的目标硬盘)
grub-install /dev/sda

# 生成引导菜单(自动扫描内核与其他系统)
update-grub

2. UEFI 模式安装

需指定 ESP 挂载路径 与 启动项 ID:

# 安装到 ESP 分区(--efi-directory 为 ESP 挂载点,--bootloader-id 为启动项名称)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck

# 生成引导菜单
update-grub

# 可选:修复 UEFI 启动项(ESP 无默认引导时)
# 复制 GRUB EFI 文件到默认路径,确保主板可识别
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

三、GRUB 核心配置(/etc/default/grub)

⚠️ 切勿直接修改 /boot/grub/grub.cfg​,该文件由 update-grub​ 自动生成,修改会被覆盖。所有自定义需修改 /etc/default/grub​,修改后执行 update-grub​ 生效。

常用参数详解

# 编辑主配置文件
sudo nano /etc/default/grub

参数

作用

示例

​GRUB_DEFAULT​

默认启动项(从 0 开始计数;支持子菜单,如 1>2​)

​GRUB_DEFAULT=0​(默认第一项)

​GRUB_TIMEOUT​

菜单倒计时(秒;0 直接启动,-1 无限等待)

​GRUB_TIMEOUT=5​

​GRUB_TIMEOUT_STYLE​

菜单显示样式(menu/ hidden)

​GRUB_TIMEOUT_STYLE=menu​

​GRUB_CMDLINE_LINUX​

内核启动参数(所有内核生效)

​GRUB_CMDLINE_LINUX="nomodeset"​(解决显卡黑屏)

​GRUB_CMDLINE_LINUX_DEFAULT​

内核默认参数(仅默认内核生效)

​GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"​

​GRUB_DISABLE_OS_PROBER​

禁用/启用多系统探测(false 启用)

​GRUB_DISABLE_OS_PROBER=false​

​GRUB_TERMINAL_OUTPUT​

输出终端(gfxterm 图形,console 文本)

​GRUB_TERMINAL_OUTPUT="gfxterm"​

​GRUB_SAVEDEFAULT​

保存上次启动项为默认(需配合 GRUB_DEFAULT=saved​)

​GRUB_SAVEDEFAULT=true​

配置生效

# 更新 GRUB 配置,生成新的 grub.cfg
sudo update-grub

四、高级配置与优化

1. 自定义启动菜单项

通过 /etc/grub.d/40_custom​ 添加自定义菜单项(如启动 Windows、其他 Linux):

sudo nano /etc/grub.d/40_custom

示例(添加 Windows 启动项):

menuentry "Windows 11" {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'  # 替换为 Windows ESP 分区
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

修改后执行 update-grub​ 生效。

2. 加密 /boot 分区(安全场景)

# 启用加密磁盘支持
echo "GRUB_ENABLE_CRYPTODISK=y" | sudo tee -a /etc/default/grub

# 重新安装 GRUB 并更新配置
grub-install /dev/sda  # BIOS 模式
# 或 UEFI 模式安装命令
update-grub

3. 修复引导故障

  • BIOS 模式:从 Live 系统进入 chroot,重新执行 grub-install /dev/sda​ + update-grub​。

  • UEFI 模式:检查 ESP 分区是否挂载,重新执行 UEFI 安装命令,必要时复制 bootx64.efi​。

五、常见问题排查

  1. GRUB 菜单不显示:检查 GRUB_TIMEOUT​ 是否为 0,或按 Shift​/Esc​ 强制显示菜单。

  2. 找不到其他系统:确保 GRUB_DISABLE_OS_PROBER=false​,执行 os-prober​ 手动探测,再 update-grub​。

  3. UEFI 启动项丢失:进入主板 BIOS,添加 debian​ 启动项,或复制 bootx64.efi​ 到默认路径。

  4. 内核启动失败:在 GRUB 菜单编辑启动项,移除 quiet splash​,查看详细报错;修改 GRUB_CMDLINE_LINUX​ 添加修复参数。

Author: Max

Permalink: /archives/linux-grub

Published: 2026-03-20 18:23:24

Updated: 2026-03-20 18:22:45

License: 本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG