在RAID + LVM上挽救grub

我有一个双SATA驱动器安装文件存储/通用盒,这是安排如此:

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

/ dev / sda2 + / dev / sdb2 = / dev / md1 RAID1 – >具有VG和LV的LVM,用于/,/ usr,/ var等分区。

我在Ubuntu安装过程中select了这个设置,并且工作得很好,直到一些最新的更新显然包含了内核更新或类似的东西,这需要GRUB来修改。

之后,我现在有内核恐慌,无法在启动时安装FS。

我从Live CD启动,得到mdadm和lvm2后,检查文件系统是否正常,我可以组装MDarrays,LVM扫描产生正确的VG / LV列表。

如果你能告诉我(或者指点好资源),我将不胜感激,现在如何在Ubuntu更新的过程中从硬盘恢复启动。 我一直在做LILO bootloader的恢复工作,据我所知,这个工具几乎已经绝迹了,实际上我没有GRUB的经验(看起来比LILO更复杂)。

编辑:我尝试了https://help.ubuntu.com/community/Grub2#ChRoot程序,这似乎工作的一些,也就是从现场光盘chroot到现有的服务器configuration,然后尝试更新grub,grub -install / dev / sdXX,但不起作用。

具体来说,我试图做“grub-install / dev / sda”,但重启后我遇到了和以前一样的错误。

编辑(2):

根据cstamas的回答,你可以使用Chroot过程来卸载和重新安装dev服务,如ubuntu社区链接中所描述的那样,然后一旦进入chroot,update-initramfs(对于-k指定内核版本名称与你的/ lib / modules /)和update-grub2,不需要grub-install。

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

首先最重要的是得到一个与i386 / amd64一样的$ arch。

  • 你启动cd并组装raid / lvms。
  • 只装载根fs
  • chroot进入根fs
  • 在rootfs之外停止udevd
  • 在rootfs里面启动udevd
  • 在chroot里面组装/扫描/挂载丢失的文件系统(最重要的是usr和boot)
  • 重buildinitramfs
    • 在Debian上(我认为这是相同的Ubuntu的)运行:
    • update-initramfs -uv -k $ yourkernelversion
    • update-grub或update-grub2

如果其他的东西是错误的,如意外卸载lvm2或类似的东西,你可以重新安装在chroot。 如果您提供确切的错误信息,我们试着去看看。