在Linux系统中,GRUB(Grand Unified Bootloader)是广泛使用的引导加载程序,负责在系统启动时加载内核和初始化内存盘(initrd),正确安装和配置GRUB对于系统的稳定启动至关重要,本文将详细介绍在Linux系统中安装GRUB的命令、步骤及相关注意事项,帮助用户顺利完成引导加载程序的安装。

安装GRUB前的准备工作
在安装GRUB之前,需要确保系统满足以下条件:
- 确认当前系统环境:通过终端输入
uname -a查看系统内核版本和架构,确保与GRUB兼容。 - 备份重要数据:安装GRUB涉及磁盘操作,建议提前备份重要数据以防意外。
- 检查磁盘分区:使用
fdisk -l或lsblk命令查看磁盘分区表,确认引导分区(通常为/boot或根分区)的挂载点和设备名(如/dev/sda1或/dev/nvme0n1p2)。 - 安装GRUB包:根据发行版不同,使用包管理器安装GRUB,在基于Debian的系统上运行
sudo apt install grub2,在基于RHEL的系统上运行sudo yum install grub2或sudo dnf install grub2。
安装GRUB的核心命令
安装GRUB的主要命令是grub-install,其基本语法为:
sudo grub-install --target=x86_64-efi --boot-directory=/boot/efi --efi-directory=/boot/efi --removable
或
sudo grub-install --target=i386-pc --boot-directory=/boot /dev/sdX
--target指定目标架构(如x86_64-efi用于UEFI系统,i386-pc用于传统BIOS系统),--boot-directory或--efi-directory指定引导文件目录,/dev/sdX为磁盘设备名(如/dev/sda)。

UEFI系统安装GRUB
对于支持UEFI的系统,需确保已安装efibootmgr工具,并按以下步骤操作:
- 挂载EFI系统分区(ESP)到
/boot/efi(若未挂载)。 - 运行安装命令:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
参数说明:
--target=x86_64-efi:指定UEFI架构。--efi-directory=/boot/efi:ESP的挂载点。--bootloader-id:指定引导菜单名称(如ubuntu、fedora)。
- 安装后生成
grubx64.efi文件到ESP的EFI/BOOT/或EFI/<bootloader-id>/目录下。
BIOS系统安装GRUB
对于传统BIOS系统,需确保引导分区为MBR格式:
- 确认磁盘设备名(如
/dev/sda)。 - 运行安装命令:
sudo grub-install --target=i386-pc /dev/sda
参数说明:
(图片来源网络,侵删)--target=i386-pc:指定BIOS架构。/dev/sda:目标磁盘设备名(而非分区名)。
- 安装后会在磁盘的MBR区域写入GRUB第一阶段代码。
特殊场景安装
- LVM或加密分区:需先解锁LVM卷或加密分区,再指定正确的设备路径。
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot /dev/mapper/vg-root
- 双系统配置:若与Windows共存,需确保GRUB能识别NTFS分区,安装后运行
sudo update-grub更新配置。
配置GRUB
安装GRUB后,需生成或编辑配置文件:
- 自动生成配置:
sudo update-grub
该命令会扫描内核和可启动系统,生成
/boot/grub/grub.cfg文件。 - 手动编辑配置(高级用户):
- 备份原配置:
sudo cp /etc/default/grub /etc/default/grub.bak - 编辑
/etc/default/grub,修改参数如GRUB_DEFAULT、GRUB_TIMEOUT等。 - 重新生成配置:
sudo update-grub
- 备份原配置:
常见问题及解决方法
-
安装失败提示“error: file '/boot/grub/x86_64-efi/core.efi' not found”
原因:ESP分区未正确挂载或路径错误。
解决:检查/boot/efi挂载状态,确保--efi-directory参数正确。 -
启动后进入GRUB rescue模式
原因:GRUB配置文件损坏或引导分区未正确标识。
解决:- 进入救援模式后,手动指定挂载点:
set prefix=(hd0,gpt1)/boot/grub,set root=(hd0,gpt1)。 - 重新安装GRUB:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot /dev/sda。 - 生成配置:
update-grub。
- 进入救援模式后,手动指定挂载点:
相关问答FAQs
问题1:如何在安装GRUB后修改默认启动项?
解答:编辑/etc/default/grub文件,修改GRUB_DEFAULT参数,设置默认启动第二项为GRUB_DEFAULT=1,或通过名称指定如GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-76-generic",保存后运行sudo update-grub生效。
问题2:如何为GRUB添加自定义启动菜单项?
解答:在/etc/grub.d/目录下创建自定义脚本(如/etc/grub.d/40_custom),添加以下内容:
menuentry "Custom OS" {
set root=(hd0,gpt1)
linux /boot/vmlinuz-custom root=/dev/sda2
initrd /boot/initrd.img-custom
}
保存后执行sudo update-grub,新菜单项将出现在GRUB启动列表中。
