
我處於一個特殊的情況。我有一台沒有內建 CD 驅動器的 MacBook Pro,並且安裝了 MacOS X(最小設定)和 Linux(我的主系統)。在交叉升級到 Ubuntu 12.04 期間,我弄亂了 grub,所以我的 /boot/grub 目錄基本上是空的。這意味著我無法再在筆記型電腦上啟動 Linux,而只能進入 grub rescue。
通常這不是問題,因為你只需從救援CD 或USB 記憶棒啟動,但不幸的是,對於MacBook Pro,這是不可能的(我安裝了reFIT,它嘗試啟動,但失敗了,手冊上說Apple的EFI韌體無法處理這種情況)。
然而,在 MacOS X 中,我仍然具有對 Linux 分割區的寫入存取權限。我現在一直在嘗試找出如何使用必要的文件填充 /boot/grub 資料夾,但到目前為止都沒有成功。 Ubuntu 12.04 的 ISO 映像包含一個 EFI 資料夾,這不是我想要的,而是我需要 Ubuntu 12.04 的 grub 版本的 normal.mod 檔案。我沒有任何其他機器來設定 Ubuntu 12.04 的虛擬機器來在 grub 安裝後從中提取它,所以我在這裡尋求如何解決這個混亂的想法。
PS:我之前安裝了 Linux,當時我還有一個可用的內建 CD 光碟機。現在這個已經消失了。
答案1
了解您正在執行的 Grub 版本會有所幫助。 Grub1 與 Grub2 實際上有大量(通常令人討厭的)差異。這裡主要相關的是您是否有 /boot/grub/menu.lst 檔案 (grub1) 還是 /boot/grub/grub.cfg (grub2)。
這些檔案控制您第一次開啟電腦時在 Grub 選單中看到的內容。在正常情況下,您不應手動編輯這些內容,因為更新腳本會為您處理這些內容,但正如您所說,在這種情況下這是不可能的。因此,請備份這些文件,然後手動編輯它們以適合您的核心版本。如果僅僅修復這些檔案之一還不夠(因為正如你所說,/boot/grub 大部分是空的),我會在另一台機器或驅動器上安裝相同版本的 ubuntu,然後複製內容。希望配置足夠相似,以便您能夠啟動,但不能保證這會起作用。
無論您做什麼,請在編輯或替換所有文件之前備份它們!
答案2
如果您可以使用另一台具有可用 CD 驅動器的計算機,則可以使用某些 Linux 發行版(例如 knoppix)製作可啟動 USB。然後你可以從 CD 啟動機器並修復 grub。