在 Windows 7 删除软件 RAID 0 上的 GRUB2 后,使用 LiveCD 恢复它

在 Windows 7 删除软件 RAID 0 上的 GRUB2 后,使用 LiveCD 恢复它

我已经在系统上安装了 Ubuntu 10.10。但是,我需要重新安装 Windows 7,我预计它会改变 GRUB,结果确实如此。

现在,我的分区软件 RAID 0看起来像这样:

替代文本

nvidia_acajefec1 是 Ubuntu 10.10,nvidia_acajefec3 是 Windows 7。

我一直在遵循一些指南,但总是停留在 GRUB 上,无法检测到常见的 RAID 内容。

我尝试过跑步:

sudo grub

> root (hd0,0)

GRUB 提示找不到我的硬盘。因此我尝试:

find (hd0,0)

并且它抱怨说它什么也没找到。

所以我尝试了:

find /boot/grub/stage1

它说“未找到文件”。

以下是来自控制台的文本:

ubuntu@ubuntu:~$ grub
Probing devices to guess BIOS drives. This may take a long time.

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]
grub> root (hd0,0)
root (hd0,0)

Error 21: Selected disk does not exist
grub> find /boot/grub/stage1
find /boot/grub/stage1

Error 15: File not found

**幸运的是,有人建议我尝试的是 GRUB Legacy,而不是 GRUB2。所以我去了建议的网站,(http://grub.enbug.org/Grub2LiveCdInstallGuide)尝试环顾四周,并尝试:

ubuntu@ubuntu:~$ sudo fdisk -l

Unable to seek on /dev/sda

这只是http://grub.enbug.org/Grub2LiveCdInstallGuide我无法继续,因为它无法寻找 /dev/sda。

然而,

ubuntu@ubuntu:~$ sudo dmraid -r
/dev/sdb: nvidia, "nvidia_acajefec", stripe, ok, 488397166 sectors, data@ 0
/dev/sda: nvidia, "nvidia_acajefec", stripe, ok, 488397166 sectors, data@ 0

那么现在怎么办?您知道如何让 fdisk 在 live cd(Ubuntu 10.10)上看到我的 RAID 阵列吗?老实说,我现在很迷茫,不知道如何在这个软件 RAID 0 系统上恢复 GRUB2。

答案1

如果你通过恢复 CD 启动,你的根设备不是 / 而是 RAM 中的 ISO 表示。在这种情况下,我们必须安装真实的首先是根分区。

检查您的软件 RAID 是否处于活动状态:

$ cat /proc/分区

您必须期望您的sdasdbdm-0后跟dm-1dm-2等等代表您的分区表条目。

如果您没有看到这些dm-*条目,则必须手动激活软件 RAID:

$ sudo dmraid-激活

再次检查/proc/partitions并验证是否grub知道这一点:

$ sudo grub-mkdevicemap -m -

输出可能有所不同,但应该看起来像(其中 *ata-WDC_WD5001AALS-00L3B2_WD-WCASY5902194* 取决于您的硬件配置):

(hd0)/dev/磁盘/by-id/ata-WDC_WD5001AALS-00L3B2_WD-WCASY5902194
(hd1)/dev/磁盘/by-id/ata-WDC_WD5001AALS-00L3B2_WD-WCASY5867648
(hd2)/dev/mapper/nvidia_acajefec

你的真实的根分区现在应该/dev/mapper/nvidia_acajefec1正确了。我们现在挂载此分区以供将来测试:

$ sudo mount /dev/mapper/nvidia_acajefec1 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys

检查是否grub能够将设备映射到您的分区:

$ sudo grub-mkdevicemap -m - | sudo grub-probe --device-map=/proc/self/fd/0 --target=device /mnt

您应该会看到类似的内容/dev/mapper/nvidia_acajefec1

将分区的名称标识为 GRUB 设备:

$ sudo grub-mkdevicemap -m - | sudo grub-probe --device-map=/proc/self/fd/0 --target=drive /mnt

输出应类似于(hd2,msdos1)

到目前为止一切顺利。为了安装/更新 GRUB,我们准备切换到真实的根分区并更新引导块:

$ sudo chroot /mnt /bin/bash
$ sudo update-grub
正在生成 grub.cfg ...
找到背景图像:/usr/share/images/desktop-base/desktop-grub.png
找到 linux 图像:/boot/vmlinuz-2.6.32-5-686-bigmem
找到 initrd 图像:/boot/initrd.img-2.6.32-5-686-bigmem
在 /dev/mapper/nvidia_acajefec1 上找到 Linux 在
/dev/mapper/nvidia_acajefec3 上找到 Windows
完成
$ sudo grub-install /dev/mapper/nvidia_acajefec
安装完成。未报告任何错误。
$ exit

您已准备好重新启动系统。

答案2

您需要安装的设备是/dev/nvidia_acajefec1,您需要安装到的设备是/dev/nvidia_acajefec。因此,大致按照 http://grub.enbug.org/Grub2LiveCdInstallGuide你会运行:

sudo mount /dev/nvidia_acajefec1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-mkconfig -o /boot/grub/grub.cfg
grub-install /dev/nvidia_acajefec # Note that there is *not* a '1' at the end

相关内容