我必须将 vmlinuz-* 和 initrd.img-* 放在哪个分区中?

我必须将 vmlinuz-* 和 initrd.img-* 放在哪个分区中?

我正在尝试设置 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

答案1

如果将它们安装到 Ubuntu 的 /boot 分区,这对您来说是最简单的。即使您将它们安装到 Android 分区,GRUB 也会为您工作并启动 Ubuntu,但您会丢失一些 Ubuntu 脚本。另一个解决方案是将内核和 initrd 保留在 Android 的 /boot 中,并将 Android 的 /boot 符号链接到 Ubuntu 的 /boot。两者都有效。

一般来说,内核和 initrd 可以位于任何 GRUB 可访问的分区上。 GRUB 将它们读取到内存中,您将root=UUID=xxxxxxxxx命令行传递给内核,让内核知道根目录在哪里,然后内核从那里获取它。 GRUB 可以读取绝大多数文件系统,但有些文件系统可能需要以模块预加载的形式进行调整。我首先想到的是 LVM 或全磁盘加密 (LUKS)。拱门维基这是一篇关于 GRUB 配置的非常好的文章(就像大多数其他 GNU/Linux 一样)。

编辑:

看到你的编辑。看来您正在运行 GRUB Legacy 而不是 GRUB2。在这种情况下,维基页面是

编辑 2:澄清了第二个建议的解决方案实际保存内核/initrd 的位置。

相关内容