我必須將 vmlinuz-* 和 initrd.img-* 放在哪個分區?
我正在嘗試使用 Android 和 Ubuntu 設置雙啟動。引導載入程序是 GRUB。GRUB 安裝在 android 分區中。
當 GRUB 啟動時,Android 菜單工作,並且 Android 正確執行。
當我選擇 Ubuntu 啟動時,它給出了錯誤
Error 15: File not found.
如果我將 更改為
root (hd0,2)
指向交換的另一個值,則會引發“無法掛載分區”的錯誤。所以我有理由相信這個root
參數是正確的。我的疑問如下:
Ubuntu
vmlinuz-*
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=xxxxxxxxx
cmdline 傳遞給核心以讓核心知道根在哪裡,然後核心從那裡獲取它。GRUB 可以讀取絕大多數文件系統,但有些可能需要以模組預載入的形式進行調整。LVM 或全盤加密 (LUKS) 浮現在腦海中。Arch Wiki是關於 GRUB 配置的非常好的文章(就像大多數其他 GNU/Linux 一樣)。編輯:
看到你的編輯。似乎您正在執行 GRUB Legacy 而不是 GRUB2。在這種情況下,wiki 頁面是this。
編輯 2:闡明了第二個建議的解決方案實際保留核心/initrd 的位置。