之路教程 https://onitr oad .com
重新安装 GRUB 加载程序
假设启动盘是 sda ,/分区是 sda2 , /boot 分区是 sda1 。
- 启动服务器进入救援模式,并自动挂载文件系统。
查看我们的教程:在CentOS/RHEL 6中如何启动进入救援模式
- 根分区 / 会自动挂载在 /mnt/sysimage 下。
如果没有,请手动挂载:
# mount /dev/sda2 /mnt/sysimage
- 手动挂载/boot分区和/dev,准备chroot环境:
# mount /dev/sda1 /mnt/sysimage/boot # mount -o bind /dev /mnt/sysimage/dev # chroot /mnt/sysimage
- 重新安装GRUB加载器
# grub-install /dev/sda
重新启动服务器,我们应该能够看到 GRUB 菜单。
# reboot
在极少数情况下,我们可能会遇到 GRUB 加载程序损坏。
这篇文章说明了如何在 CentOS/RHEL 5 或者 6 上重新安装 GRUB 加载程序。
在多路径设备上重新安装 grub
当配置为使用多路径设备从存储区域网络 (SAN) 引导的服务器需要重新安装 grub 时,请按照以下步骤操作。
只要引导设备上的主引导记录 (MBR) 损坏或者被其他引导加载程序覆盖,Grub 就需要重新安装。
在安装后引导设备发生更改的情况下,例如在安装服务器后启用从 SAN 配置引导或者将单路径 SAN 引导设备重新配置为多路径时,也需要使用此选项。
- 在救援模式下启动服务器并使用“linux 救援 mpath”启动选项启用多路径。
要查看当前的多路径配置,我们可以在救援环境中运行以下命令:
# multipath -ll
编辑 /etc/fstab 以使用多路径设备名称 (/dev/mapper/mpathX) 而不是普通名称 (/dev/sdY) 来装载 /boot。
我们建议使用 /boot 的 UUID 使设备识别更可靠。将包含 /boot 的多路径设备添加到 grub 并使用以下命令安装引导加载程序:
# grub grub> device (hd0) /dev/mapper/mpatha grub> root (hd0,0) grub> setup (hd0) grub> quit
注意:grub-install 命令不适用于多路径设备。
- 参考我们的教程,重新生成初始 ramdisk。
CentOS/RHEL 6:如何重建初始 Ramdisk 镜像
CentOS/RHEL 5:如何重建初始 Ramdisk 镜像
如何知道 GRUB 是否已损坏
以下是当 GRUB 加载程序损坏时我们会看到的一些症状。
- 启动服务器时不显示GRUB菜单
- 使用安装 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