CentOS系统损坏后如何重新安装GRUB引导?

在CentOS系统中,GRUB(GRand Unified Bootloader)是负责加载操作系统内核的关键引导程序,无论是新硬盘的安装、系统崩溃后的修复,还是多系统环境的配置,正确安装GRUB都是确保系统能够正常启动的核心环节,本文将详细介绍在CentOS环境下,尤其是在不同固件模式(BIOS与UEFI)中安装和修复GRUB2的完整流程与注意事项。

CentOS系统损坏后如何重新安装GRUB引导?

什么是GRUB2

GRUB2是目前大多数Linux发行版,包括CentOS 7及更高版本所使用的默认引导加载器,它取代了早期的GRUB Legacy,提供了更强的功能、更灵活的配置和更好的模块化支持,GRUB2的主要任务是在计算机启动时,将控制权从固件(BIOS或UEFI)手中接管过来,然后根据其配置文件加载指定的Linux内核(或其他操作系统内核)以及初始内存盘,最终将系统启动权交予内核。

准备工作:启动救援环境

在大多数需要手动安装GRUB的场景下,系统本身是无法正常启动的,第一步是准备一个可引导的救援环境,最常用且推荐的方法是使用CentOS的官方安装介质(DVD或USB)。

  1. 将CentOS安装光盘或U盘插入计算机。
  2. 重启计算机,并进入BIOS/UEFI设置界面,将启动顺序调整为首先从该安装介质启动。
  3. 从安装介质启动后,在欢迎界面选择“Troubleshooting”(故障排除)。
  4. 接着选择“Rescue a CentOS system”(救援CentOS系统)。
  5. 系统会尝试查找并挂载你硬盘上的CentOS安装,如果成功,它会提示你系统已被挂载在/mnt/sysimage目录下,选择“1”继续,并进入一个shell提示符,如果查找失败,你也需要进入shell,然后手动进行挂载,这个救援环境就是我们进行GRUB修复工作的平台。

核心步骤:在传统BIOS模式下安装GRUB2

对于使用传统BIOS和MBR(主引导记录)分区表的硬盘,GRUB2的安装过程相对直接,以下是在救援环境中的详细操作步骤。

识别根文件系统分区

你需要确定CentOS系统的根分区()是哪个设备,可以使用lsblkfdisk -l命令来查看。

lsblk

输出结果可能类似这样,你需要根据分区大小和类型来判断哪个是根分区(和引导分区(如果单独分出来了,例如/boot)。

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 49.5G  0 part /

在这个例子中,是/dev/sda2/boot/dev/sda1

挂载系统文件系统

将你的CentOS系统挂载到救援环境的/mnt目录下,如果/boot是独立分区,也需要一并挂载。

# 挂载根分区
mount /dev/sda2 /mnt
# boot是独立分区,挂载它
mount /dev/sda1 /mnt/boot

挂载必要的虚拟文件系统

为了让后续的chroot操作正常工作,需要将一些虚拟文件系统也挂载进去。

CentOS系统损坏后如何重新安装GRUB引导?

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

切换到系统根目录

使用chroot命令,将当前环境的根目录切换到你硬盘上的CentOS系统。

chroot /mnt /bin/bash

你所有的操作都像是在你本地的CentOS系统中进行一样。

安装GRUB2到主引导记录(MBR)

这是最关键的一步,使用grub2-install命令将GRUB2写入硬盘的主引导记录。目标是整个硬盘设备(如/dev/sda),而不是某个分区(如/dev/sda1)。

grub2-install /dev/sda

如果命令执行成功,你会看到“Installation finished. No error reported.”的提示。

生成GRUB2配置文件

安装完引导程序后,还需要生成一个配置文件,它定义了启动菜单的内容。

grub2-mkconfig -o /boot/grub2/grub.cfg

这个命令会自动扫描系统中的内核和其他可引导的操作系统(如Windows,前提是安装了os-prober包),并生成相应的菜单项。

清理并重启

完成以上步骤后,退出chroot环境,卸载所有文件系统,然后重启计算机。

CentOS系统损坏后如何重新安装GRUB引导?

exit
umount -R /mnt
reboot

记得在重启前移除安装介质,并恢复BIOS的启动顺序。

重要区别:UEFI模式下的安装

对于使用UEFI固件和GPT分区表的现代计算机,GRUB2的安装方式有所不同,它不再写入MBR,而是以一个特殊的EFI应用程序文件的形式存储在EFI系统分区(ESP)中。

安装流程的前几步(识别分区、挂载)与BIOS模式类似,但有以下关键区别:

  • EFI系统分区(ESP):你需要额外识别并挂载ESP,它通常是一个小的(100-500MB)、FAT32格式的分区,并带有bootesp标志。
  • 挂载ESP:在chroot之前,需要将ESP挂载到/mnt/boot/efi
# 假设 /dev/sda1 是ESP
mount /dev/sda1 /mnt/boot/efi
  • 安装命令:在chroot后,grub2-install命令需要指定目标为x86_64-efi,并指明ESP的路径。
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --recheck
  • 生成配置文件:这一步与BIOS模式完全相同。
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

注意,在UEFI模式下,配置文件通常位于/boot/efi/EFI/centos/目录下,具体路径可能因发行版而异,但grub2-mkconfig通常会自动处理。

常用命令参考表

命令 用途 关键参数/示例
lsblk / fdisk -l 查看磁盘和分区结构 用于识别根分区和引导分区
mount 挂载文件系统 mount /dev/sda2 /mnt
chroot 切换根目录环境 chroot /mnt /bin/bash
grub2-install 将GRUB引导程序写入磁盘 BIOS: grub2-install /dev/sda
UEFI: grub2-install --target=x86_64-efi --efi-directory=/boot/efi
grub2-mkconfig 生成GRUB启动菜单配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg

相关问答FAQs

我按照步骤重装了GRUB2,但是启动菜单里只有CentOS,找不到Windows系统了,怎么办?

解答: 这个问题通常是因为GRUB2的配置生成工具没有检测到Windows系统,请确保你的系统中已经安装了os-prober这个包,在chroot到你的CentOS系统后,可以运行以下命令安装它:

yum install os-prober

安装完成后,再次运行grub2-mkconfig命令来重新生成配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg

这次,os-prober会扫描其他分区,如果找到Windows,就会将其添加到启动菜单中。

我在执行grub2-install时,不小心写成了分区名(如/dev/sda1)而不是磁盘名(如/dev/sda),现在电脑无法启动了,该如何修复?

解答: 这是一个非常常见的错误,将GRUB安装到分区而不是磁盘的MBR或EFI区域,会导致固件找不到引导程序,修复方法很简单,就是重新走一遍正确的安装流程,你需要再次使用CentOS救援介质启动,进入救援环境,然后严格按照本文“在传统BIOS模式下安装GRUB2”或“重要区别:UEFI模式下的安装”章节的步骤操作,确保在执行grub2-install命令时,目标设备是整个硬盘(例如/dev/sda),而不是任何分区,只要正确地重新安装一次,系统就能恢复正常启动。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-26 15:22
下一篇 2025-10-26 16:01

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信