之路教程 https://onitr oad .com

重新安装 GRUB 加载程序

假设启动盘是 sda ,/分区是 sda2 , /boot 分区是 sda1 。

  1. 启动服务器进入救援模式,并自动挂载文件系统。

查看我们的教程:在CentOS/RHEL 6中如何启动进入救援模式

  1. 根分区 / 会自动挂载在 /mnt/sysimage 下。
    如果没有,请手动挂载:
# mount /dev/sda2 /mnt/sysimage
  1. 手动挂载/boot分区和/dev,准备chroot环境:
# mount /dev/sda1 /mnt/sysimage/boot
# mount -o bind /dev /mnt/sysimage/dev
# chroot /mnt/sysimage
  1. 重新安装GRUB加载器
# grub-install /dev/sda

重新启动服务器,我们应该能够看到 GRUB 菜单。

# reboot
CentOS/RHEL 5,6:如何从救援模式重新安装 GRUB 加载程序

在极少数情况下,我们可能会遇到 GRUB 加载程序损坏。
这篇文章说明了如何在 CentOS/RHEL 5 或者 6 上重新安装 GRUB 加载程序。

在多路径设备上重新安装 grub

当配置为使用多路径设备从存储区域网络 (SAN) 引导的服务器需要重新安装 grub 时,请按照以下步骤操作。
只要引导设备上的主引导记录 (MBR) 损坏或者被其他引导加载程序覆盖,Grub 就需要重新安装。
在安装后引导设备发生更改的情况下,例如在安装服务器后启用从 SAN 配置引导或者将单路径 SAN 引导设备重新配置为多路径时,也需要使用此选项。

  1. 在救援模式下启动服务器并使用“linux 救援 mpath”启动选项启用多路径。
    要查看当前的多路径配置,我们可以在救援环境中运行以下命令:
# multipath -ll
  1. 编辑 /etc/fstab 以使用多路径设备名称 (/dev/mapper/mpathX) 而不是普通名称 (/dev/sdY) 来装载 /boot。
    我们建议使用 /boot 的 UUID 使设备识别更可靠。

  2. 将包含 /boot 的多路径设备添加到 grub 并使用以下命令安装引导加载程序:

# grub
grub> device (hd0) /dev/mapper/mpatha
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

注意:grub-install 命令不适用于多路径设备。

  1. 参考我们的教程,重新生成初始 ramdisk。

CentOS/RHEL 6:如何重建初始 Ramdisk 镜像
CentOS/RHEL 5:如何重建初始 Ramdisk 镜像

如何知道 GRUB 是否已损坏

以下是当 GRUB 加载程序损坏时我们会看到的一些症状。

  1. 启动服务器时不显示GRUB菜单
  2. 使用安装 DVD 将服务器启动到救援模式,并检查启动盘的标题如果 GRUB 加载程序已损坏:
# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 64998927 sectors; partition 2: ID=0x82, starthead 254, startsector 64998990, 2104515 sectors

虽然一个好的看起来像:

# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 64998927 sectors; partition 2: ID=0x82, starthead 254, startsector 64998990, 2104515 sectors, code offset 0x48

不同版本的输出可能会有所不同,但关键是第一个输出缺少“代码偏移量 0x48”,这是 GRUB 阶段 1 代码的指示符。

日期:2020-09-17 00:12:36 来源:oir作者:oir