Grub

我必須將 vmlinuz-* 和 initrd.img-* 放在哪個分區?

  • May 14, 2015

我正在嘗試使用 Android 和 Ubuntu 設置雙啟動。引導載入程序是 GRUB。GRUB 安裝在 android 分區中。

當 GRUB 啟動時,Android 菜單工作,並且 Android 正確執行。

當我選擇 Ubuntu 啟動時,它給出了錯誤Error 15: File not found.

如果我將 更改為root (hd0,2)指向交換的另一個值,則會引發“無法掛載分區”的錯誤。所以我有理由相信這個root參數是正確的。

我的疑問如下:

Ubuntuvmlinuz-* initrd.img-*文件位於 Ubuntu 分區的路徑/boot/. 由於 Grub 在 Android 分區中,我是否應該將這些文件也放在 Android 分區中?

所以,我不明白 GRUB 應該如何訪問映像文件,因為據我所知,此時還沒有掛載的分區。

謝謝。

這是我的menu.lst

default=0
timeout=60
splashimage=/grub/android-x86.xpm.gz

title Android-x86 4.4-r2
   kernel /android-4.4-r2/kernel quiet root=/dev/ram0 androidboot.hardware=android_x86 SRC=/android-4.4-r2
   initrd /android-4.4-r2/initrd.img

title       Ubuntu 14.04 Hd0,2
root (hd0,2)
kernel      /boot/vmlinuz-3.16.0-30-generic root=UUID=69c67260-525d-4f53-b924-e6489dc22942 ro quiet splash 
initrd      /boot/initrd.img-3.16.0-30-generic

如果您將它們安裝到 Ubuntu 的 /boot 分區,這對您來說是最簡單的。即使您將 GRUB 安裝到 Android 分區,GRUB 也會為您工作並啟動 Ubuntu,但您會在 Ubuntu 的腳本上失去一點點。另一種解決方案是將核心和 initrd 保留在 Android 的 /boot 中,並將 Android 的 /boot 符號連結到 Ubuntu 的 /boot。兩者都有效。

通常,核心和 initrd 可以位於任何 GRUB 可訪問的分區上。GRUB 將它們讀取到記憶體中,您將root=UUID=xxxxxxxxxcmdline 傳遞給核心以讓核心知道根在哪裡,然後核心從那裡獲取它。GRUB 可以讀取絕大多數文件系統,但有些可能需要以模組預載入的形式進行調整。LVM 或全盤加密 (LUKS) 浮現在腦海中。Arch Wiki是關於 GRUB 配置的非常好的文章(就像大多數其他 GNU/Linux 一樣)。

編輯:

看到你的編輯。似乎您正在執行 GRUB Legacy 而不是 GRUB2。在這種情況下,wiki 頁面是this

編輯 2:闡明了第二個建議的解決方案實際保留核心/initrd 的位置。

引用自:https://unix.stackexchange.com/questions/203477