我在 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 菜单吗?