![我必须将 vmlinuz-* 和 initrd.img-* 放在哪个分区中?](https://linux22.com/image/65052/%E6%88%91%E5%BF%85%E9%A1%BB%E5%B0%86%20vmlinuz-*%20%E5%92%8C%20initrd.img-*%20%E6%94%BE%E5%9C%A8%E5%93%AA%E4%B8%AA%E5%88%86%E5%8C%BA%E4%B8%AD%EF%BC%9F.png)
我正在尝试设置 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 的位置。