Linux 命令速查
系统管理 man grub-install

grub-install

把 GRUB 引导程序安装到磁盘或 EFI 分区

返回

补充说明

grub-install 负责把 GRUB 的核心镜像写入引导位置:BIOS 系统写入磁盘的 MBR 引导区与 /boot/grub 目录,UEFI 系统则把 grubx64.efi 等文件安装到 EFI 系统分区(ESP),并注册 NVRAM 启动项。

安装位置取决于启动方式。传统 BIOS 需要指定磁盘设备(如 /dev/sda,注意不是分区);UEFI 需要用 --target 与 --efi-directory 指明 ESP 挂载点,通常不需要设备参数。装错目标可能导致系统无法启动,操作前应确认当前启动模式:[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS。

常见场景包括新装系统、更换硬盘后恢复引导、修复被 Windows 覆盖的 MBR。安装完成后还需要生成配置文件(grub-mkconfig -o /boot/grub/grub.cfg),两者职责不同。RHEL 系中对应命令名为 grub2-install。

语法

grub-install [选项] [设备]

选项

  • --target=目标:安装平台,如 i386-pc(BIOS)、x86_64-efi、arm64-efi
  • --efi-directory=目录:ESP 挂载点,常见 /boot/efi
  • --boot-directory=目录:GRUB 文件所在目录,默认 /boot
  • --bootloader-id=名称:EFI 启动项名称,默认 GRUB(Debian 为 debian)
  • --recheck:重新探测设备,设备名变化后使用
  • --removable:按可移动介质方式安装到 EFI/BOOT/BOOTX64.EFI
  • --no-nvram:不写入主板 NVRAM 启动项
  • --modules=模块:额外预加载 GRUB 模块
  • --force:强制安装,即使存在风险提示
  • --disable-shim-lock:禁用 shim 锁(启用 Secure Boot 时需谨慎)

实例

# 确认当前是 BIOS 还是 UEFI 启动
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

# BIOS 系统:安装到第一块磁盘
sudo grub-install /dev/sda

# UEFI 系统:安装到 ESP,并指定启动项名称
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi \
  --bootloader-id=GRUB

# 可移动 U 盘:使用 removable 方式
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable

# 安装后重新生成配置文件
sudo grub-mkconfig -o /boot/grub/grub.cfg

# 查看已注册的 EFI 启动项
sudo efibootmgr -v

在 chroot 救援环境中修复引导时,应先挂载根分区与 ESP,并绑定 /dev、/proc、/sys,再执行 grub-install。

参考链接