我已经在系统上安装了 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/分区
您必须期望您的sda
,sdb
,dm-0
后跟dm-1
,dm-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