在 RAID+LVM 上拯救 grub

在 RAID+LVM 上拯救 grub

我有一个用于文件存储/通用盒的双 SATA 驱动器设置,其排列方式如下:

/dev/sda1 + /dev/sda1 = /dev/md0 RAID1 --> /boot

/dev/sda2 + /dev/sdb2 = /dev/md1 RAID1 --> LVM 带有用于 /、/usr、/var 等分区的 VG 和 LV。

我在安装 Ubuntu 期间选择了此设置,并且它运行良好,直到一些最新更新显然包括内核更新或类似的东西,这需要 GRUB 进行修改。

此后,我现在出现内核恐慌并且无法在启动时挂载 FS。

我从 Live CD 启动,在获取 mdadm 和 lvm2 后,检查文件系统没有问题,我可以组装 MD 阵列,并且 LVM 扫描可以生成正确的 VG/LV 列表。

如果您能告诉我(或指出好的资源)如何在 Ubuntu 更新过程中从硬盘恢复启动,我将不胜感激。我主要针对 LILO 引导加载程序进行恢复,据我所知,它几乎已经绝迹,而且我几乎没有 GRUB 经验(而且它看起来比 LILO 复杂得多)。

编辑:我尝试过https://help.ubuntu.com/community/Grub2#ChRoot该程序似乎对某些人有效,即从 live cd chroot 到现有服务器配置,然后尝试 update-grub、grub-install /dev/sdXX,但它不起作用。

具体来说,我尝试执行“grub-install /dev/sda”,但重启后遇到与之前相同的错误。

编辑(2):

根据 cstamas 的回答,您可以使用 Chroot 程序卸载并重新安装开发服务,如 ubuntu 社区链接中所述,然后进入 chroot 后,update-initramfs(对于 -k 指定与您的 /lib/modules/ 中的版本名称匹配的内核版本名称)和 update-grub2,无需 grub-install。

答案1

我个人更喜欢 grml.org 的救援 CD。

首先,最重要的是获取与您的 $arch 相匹配的 cd,例如 i386/amd64。

  • 您启动 CD 并组装 raid/lvms。
  • 仅挂载根文件系统
  • chroot 进入根文件系统
  • 在 rootfs 之外停止 udevd
  • 在 rootfs 中启动 udevd
  • 在 chroot 中组装/扫描/挂载丢失的文件系统(最重要的是 usr 和 boot)
  • 重建 initramfs
    • 在 debian 上(我认为在 ubuntu 上也是一样的)运行:
    • 更新 initramfs -uv -k $你的内核版本
    • update-grub 或 update-grub2

如果出现其他错误,例如意外卸载了 lvm2 或类似情况,您可以在 chroot 中重新安装它。如果您给出确切的错误消息,我们会尝试查看。

相关内容