GRUB2 未检测到 raid 分区上的操作系统

GRUB2 未检测到 raid 分区上的操作系统

我最近在系统中添加了一个驱动器,并成功对分区进行了 RAID(RAID-1),但启动分区除外。我已经准备好并镜像了它,但无法让 GRUB2(update-grub)找到它。

系统:Ubuntu 11.04 Raid 元数据:1.2

如果我运行 update-grub,它会在 /dev/sda2 分区(当前根目录)上找到内核映像,但找不到 /dev/md127 上的映像。

/dev/md127 由“missing”和“/dev/sdb2”组成。

/dev/sdb 上的 fdisk 确认 sdb2 属于 fd 类型(raid 自动检测)并且标记为可启动。

我有两件事想做。

  1. 使 /dev/sdb2 上的 boot.cfg 有一个菜单选项,使根目录为 /dev/md127
  2. 将 grub 安装到 /dev/md127 上,以便使用那里的实际 boot.cfg。

磁盘分区:

$ sudo sfdisk -l /dev/sda

Disk /dev/sda: 30394 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1          0+     13      14-    112423+  de  Dell Utility
/dev/sda2   *     14    7837    7824   62846280   83  Linux
/dev/sda3       7838    8882    1045    8393962+  82  Linux swap / Solaris
/dev/sda4       8883   30393   21511  172787107+   5  Extended
/dev/sda5       8883+  30393   21511- 172787076   83  Linux

$ sudo sfdisk -l /dev/sdb

Disk /dev/sdb: 30394 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1          0+     13      14-    112423+  de  Dell Utility
/dev/sdb2   *     14    7837    7824   62846280   fd  Linux raid autodetect
/dev/sdb3       7838    8882    1045    8393962+  82  Linux swap / Solaris
/dev/sdb4       8883   30393   21511  172787107+   5  Extended
/dev/sdb5       8883+  30393   21511- 172787076   fd  Linux raid autodetect

这里要注意的是 /dev/sdb2 是 raid 的一部分,而 /dev/sda2 不是。/dev/sda2 是目前工作正常的非 raid 启动。我想切换到 raid 启动,当一切正常时,将 sda2 转换为 raid 并将其添加到“丢失”的 raid 驱动器。

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md5 : active raid1 sda5[2] sdb5[1]
      172785980 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sdb2[1]
      62846208 blocks [2/1] [_U]

mdadm.conf 的尾部。这是由 /usr/share/mdadm/mkconf 自动生成的

# This file was auto-generated on Thu, 30 Jun 2011 14:38:15 -0500
# by mkconf $Id$
ARRAY /dev/md127 UUID=352d87d1:23d5c92d:04cfec0a:0340cbb1
ARRAY /dev/md/5 metadata=1.2 UUID=7ea17a90:6cbf0816:feef74da:5fa4f88a name=ramuh:5

从 /dev/sda2 成功启动的 grub.cfg 文件

    menuentry 'Ubuntu, with Linux 2.6.38-11-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod part_msdos
        insmod ext2
        set root='(/dev/sda,msdos2)'
        search --no-floppy --fs-uuid --set=root 7bbe19ee-c62c-4674-b0ca-281d1cedac00
        linux   /boot/vmlinuz-2.6.38-11-generic-pae root=UUID=7bbe19ee-c62c-4674-b0ca-281d1cedac00 ro   quiet splash vt.handoff=7
        initrd  /boot/initrd.img-2.6.38-11-generic-pae

谢谢!

答案1

Grub2 现在对设备有了一些了解md。它应根据需要通过可加载模块提供。

确保您的系统知道它需要设备md才能启动。确保所有阵列都已列出/etc/mdadm/mdadm.conf并运行:

# dpkg-reconfigure mdadm

(注:我最近在我的 Debian 系统上做了类似的事情,但它也应该适用于 Ubuntu)

答案2

在 grub 菜单中,按“e”编辑菜单项并手动更改 root= kernel 参数以指向 raid 阵列并从中手动启动。然后运行 ​​update-grub,它将看到您当前正在从 raid 阵列启动并配置自身以便将来这样做。

此外,您不需要单独的 /boot 分区。

相关内容