Grub

將 grub 0.97 安裝到新的 4TB 磁碟

  • July 30, 2018

彎腰的問題,但我不明白為什麼它不起作用。

我有 rhel 5.5 核心 2.18。我將作業系統從 750 GB 磁碟複製到另一個 4 TB 磁碟。

我將磁碟分成 2 個分區。

  1. 10GB SD1
  2. 40GB sda2

我通過 rsync 將數據從 750gb 磁碟複製到 4tb。

chroot到 4tb 磁碟並嘗試安裝 grub。

我通過兩種方法將 grub 安裝到 sda1

  1. grub-install /dev/sda1- 不行,它說什麼看不到第 1 階段和第 2 階段。
grub/device map is ok ( consist hd0 sda )
  1. echo -en 'root (hd0,0)\nsetup (hd0)'| grub --batch。它 grub 批處理模式。安裝過程結束正常,但在它沒有啟動之後(我在下一篇中寫過)。

我嘗試使用 gpt 和舊的 fdisk(msdos 表)製作表

,我知道與 gpt 分開會產生更多 2TB 的磁碟。

當我分手時,gparted它首先與id = 0xee. 如果我啟動系統,那麼 grub 會出現“未知類型的分區”錯誤。如果我在 grub (by parttype) 中選擇id=0x83grub 說 - “ unknown filesystem”。和更多。我用 livecd 啟動後 gparted 只能看到一個分區(只有 sda1 而看不到 sda2)為什麼?

當我通過 fdisk 分割 4TB 磁碟並通過 grub 批處理模式安裝時。然後我引導 grub 它在載入階段 1.5 後以“錯誤 5”結束

我解決了我的問題,dd if=/dev/sda of=/dev/sdb但它太愚蠢了。為什麼我不能分開 4TB 磁碟gparted,它不能工作?

引導我到正確的目標。

分區類型0xee是 MBR 分區表中的一個虛擬條目,告訴非 GPT 感知的事物磁碟被他們無法理解的事物佔用。

RHEL 5.5 中的 GRUB 版本無法理解 GPT 風格的分區:它只知道 MBR。

如果您需要支持這麼舊的系統,標準建議是盡可能將它們虛擬化。虛擬化通常會為您提供工具,以與實際物理磁碟大小無關的方式向 VM 提供磁碟空間。在這種情況下,您可以將 4 TB 磁碟呈現為多個虛擬設備,每個虛擬設備的大小為 2 TB 或更小。


如果您無法虛擬化此系統,則可能存在一種骯髒的黑客行為。**在確保您了解該程序及其效果之前,請勿嘗試此操作。**如果您將硬體升級到在韌體級別支持 GPT 的設備,則此設置可能會停止工作……但無論如何您將有新的方法來解決您的問題。

首先,用你想要的分區製作一個 GPT 分區表。包含您的/boot目錄的分區(通常是您的根文件系統或專用/boot文件系統)應完全位於磁碟的前 2 TB 內。記下此分區的確切開始和結束塊編號。在每個分區上將 GPT 分區類型設置為正常的“Linux 文件系統”。

在創建 GPT 分區表時,gparted還將創建一個“保護性”假 MBR 分區,該分區具有類型0xee並覆蓋從塊 #1 開始的整個磁碟,並以 MBR 的最大可能值結束,即 2 TB。

下一步是仔細編輯 MBR 分區表fdisk,使其具有一個具有 MBR 分區類型的分區,0x83並且其開始和結束塊值與GPT 分區表中指定的第一個分區**完全匹配。**您甚至可以將此 MBR 分區標記為活動的,這樣 BIOS 就會確保將磁碟檢測為可引導的。第二個分區條目應覆蓋磁碟的其餘部分(最多 2 TB)並且類型為0xee.

現在,您將擁有一個混合分區方案,其中第一個分區將被 MBR 和 GPT 分區方案辨識,但第二個分區(超過 2 TB 的分區)僅在 GPT 分區方案下有效。

在這樣的磁碟上安裝 GRUB 0.97 時,您必須記住不能將 GRUB stage1.5 嵌入到 MBR 之後和分區開始之前的區域中,因為該區域是 GPT 分區表所在的位置。你不想損壞它。為確保不會發生這種情況,您可能需要使用installGRUB shell 中的命令來安裝引導載入程序,而不是依賴 GRUB shell 提供的自動化grub-installsetup命令。

現在,當系統啟動時,BIOS 應該會看到一個有效的 MBR,它帶有一個有效的、可啟動的分區(0xee它可以忽略一件奇怪的事情)。BIOS 將讀取 MBR 並在其中執行引導程式碼,這將是 GRUB 0.97 的第一階段。

GRUB 現在將使用 BIOS 函式從第一個分區中的預記錄位置載入其第二階段,然後啟動其自己的文件系統支持(仍然使用 BIOS 函式進行低級磁碟訪問)並讀取menu.lst文件,然後 Linux 核心和 initrd 文件從指定的“GRUB 根分區”,並啟動 Linux 核心。至此,GRUB 的工作就完成了。

現在,Linux 核心啟動並從 initrd 載入自己的儲存驅動程序。與 BIOS 不同,Linux 現在可以處理磁碟的全部容量並了解 GPT 分區表(RHEL 從 RHEL 4 開始支持 GPT)。由於存在有效的 GPT 分區表,因此 MBR 是輔助的,將被忽略。Linux 將看到並能夠使用這兩個分區。

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