网站搜索

如何在 CentOS 7 中恢复或挽救损坏的 Grub 引导加载程序


在本教程中,我们将介绍在 CentOS 7Red Hat Enterprise Linux 7 中拯救损坏的引导加载程序并恢复忘记的 root 密码的过程。

CentOS 中的 GRUB 引导加载程序有时可能会由于各种问题(例如与硬件或软件相关的故障)而被损坏、泄露或删除,或者有时在双引导的情况下可能会被其他操作系统替换。损坏的 Grub 引导加载程序会使 CentOS/RHEL 系统无法引导并将控制权进一步转移到 Linux 内核。

Grub 引导加载程序第一阶段安装在每个硬盘开头的前 448 字节上,该区域通常称为主引导记录 (MBR )。

另请阅读:如何在 Ubuntu 中拯救、修复和恢复 Grub 引导加载程序

MBR 最大大小为 512 字节长。如果由于某种原因前 448 字节被覆盖,则无法加载 CentOSRed Hat Enterprise Linux,除非您使用<在救援模式下或使用其他引导加载方法修复 CentOS ISO 映像,然后重新安装 MBR GRUB 引导加载程序。

要求

  1. 下载 CentOS 7 DVD ISO 映像

在 CentOS 7 中恢复 GRUB 引导加载程序

1. 第一步,下载最新版本的 CentOS 7 ISO 映像并将其刻录到 DVD 或创建可启动 USB 记忆棒。将可启动映像放入计算机相应的驱动器中并重新启动计算机。

BIOS执行POST测试时,按特殊键(Esc、F2、F11、F12、Del,具体取决于主板说明)以进入BIOS设置并修改引导顺序,以便在机器启动时首先引导可引导 DVD/USB 映像,如下图所示。

2.检测到CentOS 7可启动媒体后,第一个屏幕将出现在您的计算机监视器输出中。从第一个菜单中选择疑难解答选项,然后按[enter]键继续。

3. 在下一个屏幕上选择救援 CentOS 系统选项,然后按[enter]键继续操作。将出现一个新屏幕,并显示消息“按 Enter 键开始安装过程”。在这里,只需再次按[enter]键即可将CentOS系统加载到内存中。

4.安装程序软件加载到计算机 RAM 后,屏幕上将出现救援环境提示。在此提示符下,键入 1继续系统恢复过程,如下图所示。

5. 在下一个提示中,救援程序将通知您系统已安装在 /mnt/sysimage 目录下。在这里,按照救援程序的建议,输入 chroot /mnt/sysimage 以便将 Linux 树层次结构从 ISO 映像更改为磁盘下已安装的根分区。

6. 接下来,通过在救援提示符中发出以下命令来识别您的计算机硬盘驱动器。

ls /dev/sd*

如果您的计算机使用底层旧物理 RAID 控制器,则磁盘将具有其他名称,例如 /dev/cciss。另外,如果您的 CentOS 系统安装在虚拟机下,则硬盘可以命名为 /dev/vda/dev/xvda

但是,在识别了计算机硬盘后,您可以通过发出以下命令开始安装 GRUB 引导加载程序。

ls /sbin | grep grub2  # Identify GRUB installation command
/sbin/grub2-install /dev/sda  # Install the boot loader in the boot partition of the first hard disk

7.GRUB2引导装载程序成功安装到硬盘MBR区域后,输入exit返回到CentOS引导ISO映像树并在控制台中输入 init 6重新启动计算机,如下面的屏幕截图所示。

8.机器重新启动后,首先应进入BIOS设置并更改启动顺序菜单(将已安装MBR启动加载程序的硬盘放在第一个位置)启动菜单顺序)。

保存 BIOS 设置,然后再次重新启动计算机以应用新的启动顺序。重新启动后,机器应直接启动进入 GRUB 菜单,如下图所示。

恭喜!您已成功修复了 CentOS 7 系统损坏的 GRUB 引导加载程序。请注意,有时,恢复 GRUB 引导加载程序后,计算机将重新启动一两次以应用新的 grub 配置。

在 CentOS 7 中恢复 Root 密码

9.如果您忘记了root密码并且无法登录CentOS 7系统,您基本上可以通过在恢复模式下启动CentOS 7 ISO DVD映像来重置(空白)密码,然后按照与上面所示的步骤相同,直到到达第 6 步。当您进入 CentOS 安装文件系统时,请发出以下命令以编辑 Linux 帐户密码文件。

vi /etc/shadow

在影子文件中,识别 root 密码行(通常是第一行),按 i 键进入 vi 编辑模式,然后删除第一个冒号之间的整个字符串“: ” 和第二个冒号 ”: ”,如下面的屏幕截图所示。

完成后,按以下顺序按以下键保存文件 Esc -> : -> wq!

10. 最后,退出 chroot 控制台并输入 init 6重新启动机器。重启后,使用 root 帐户登录 CentOS 系统,此时 root 帐户尚未配置密码,并通过执行 passwd 命令为 root 用户设置新密码,如下图所示。

就这样!在恢复模式下启动具有 CentOS 7 DVD ISO 映像的物理机或虚拟机可以帮助系统管理员对损坏的系统执行各种故障排除任务,例如恢复数据或教程中描述的任务。