Linux

GRUB2 未檢測到 RAID 分區上的作業系統

  • September 28, 2011

我最近向系統添加了一個驅動器,並成功地對分區進行了突襲(RAID-1),但引導分區除外。我已經準備好並進行了鏡像,但無法讓 GRUB2 (update-grub) 找到它。

系統:Ubuntu 11.04 突襲元數據: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

謝謝!

Grub2 現在對md設備有了一些了解。它應該根據需要通過可載入模組提供。

確保您的系統了解它需要這些md設備才能啟動。確保列出所有陣列/etc/mdadm/mdadm.conf並執行:

# dpkg-reconfigure mdadm

(注意:我最近在我的 Debian 系統上也有類似的東西,但它也應該適用於 Ubuntu)

在 grub 菜單中,按“e”編輯菜單條目並手動更改 root= kernel 參數以指向 raid 陣列並手動從它啟動。然後執行 update-grub,它會看到你目前正在從 RAID 陣列啟動,並配置它自己在將來這樣做。

此外,您不需要單獨的 /boot 分區。

引用自:https://serverfault.com/questions/285978