GRUB2 和 EFI - 未找到文件?

GRUB2 和 EFI - 未找到文件?

我在 8,3 2011 MacBook Pro 上运行 Linux。它使用 EFI/rEFIt 启动。

我能够安装 GRUB2 EFI 支持,并且它在 rEFIt 启动菜单中显示得很好。一切似乎都在那里进行。

我所做的是这样的:

apt-get source grub2
sudo apt-get build-dep grub2
cd grub2-1.99
export EFI_ARCH=x86_64
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix ""
make

这构建了所需的一切。然后,是时候安装编译好的grub.efi镜像了:

cd grub-core
../grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot
sudo mount -t vfat -o rw /dev/sda1 /mnt
sudo mkdir -p /mnt/EFI/grub
sudo cp grub.efi *.mod *.lst /mnt/EFI/grub
sudo touch /mnt/EFI/grub/grub.cfg

到目前为止一切看起来都很好。当我重新启动到 rEFIt 时,我可以在 rEFIt 中看到 EFI GRUB 菜单项,并且能够启动它。由于我没有配置任何内容,所以我看不到任何内容,但如果我愿意的话,我可以输入 GRUB 命令。

然后我尝试像这样定义我的 GRUB 配置文件:

menuentry "Linux (BIOS)" {
    search --file --no-floppy --set=root /vmlinuz
    loadbios /boot/vbios.bin /boot/int10.bin
    linux /vmlinuz root=/dev/sda4 video=efifb
    initrd /initrd.img
}

menuentry "Linux (BIOS + Fix Video)" {
    search --file --no-floppy --set=root /vmlinuz
    fix_video
    loadbios /boot/vbios.bin /boot/int10.bin
    linux /vmlinuz root=/dev/sda4 video=efifb
    initrd /initrd.img
}

menuentry "Linux (No BIOS)" {
    search --file --no-floppy --set=root /vmlinuz
    fakebios
    linux /vmlinuz root=/dev/sda4 video=efifb
    initrd /initrd.img
}

然后,当我从 rEFIt 启动到 GRUB 时,我肯定可以看到这些菜单项。问题是每个人都会产生这样的消息:

error: file not found

我认为这是指它找不到/vmlinuz/boot/*/initrd.img,因为它们不存在于 EFI 分区中。

我从哪里获取这些文件以及如何将它们复制到 EFI 分区以使引导正常工作?

另外,如何指定要加载哪个内核?这个 GRUB 加载程序会/dev/sda4在 EFI 启动后加载我的主 GRUB 菜单吗?

相关内容