EFI在没有rEFInd的Mac上启动Ubuntu 14.04

我希望从我的Mac中完全删除OS X并单独安装Ubuntu 14.04 LTS。

虽然我希望使用较新的EFI启动方法而不是传统的BIOS启动,但我不想使用rEFInd或任何其他第三方启动加载程序,而是希望使用Mac的默认启动加载程序。

这样做的原因是我希望消除由其他已知方法引起的大约30秒延迟,并且还希望能够访问各种与EFI相关的实用程序。

您能否提供详细而循序渐进的方法来实现这一目标?

此过程将擦除OS X和计算机上的任何其他数据。 请确保在继续之前备份您的系统。

您可能希望创建一个恢复磁盘,以便您可以在以后恢复OSX(如果需要)。

使用Ubuntu创建Live USB

有关详细说明,请参阅此页面 。 建议使用UNetbootin ,因为它是交叉平台并提供图形用户界面(GUI)。

– 请勿使用+mac版本,因为它不支持EFI启动。

从Live USB启动

在Mac上从USB启动的技巧是在打开设备电源后立即按住option键。 从此菜单中选择EFI Boot

在此处输入图像描述

Ubuntu现在应该从USB启动。 使用Erase安装Ubuntu 并使用Entire Disk选项。

在此处输入图像描述

首先,当您重新启动/启动Mac时,您将看到Mac启动加载程序的灰色屏幕大约30秒,然后是一个带有“?”的轻轻闪烁文件夹 内。 如果您现在插入安装程序USB,它应该启动。 如果没有,请尝试按住电源按钮强制关闭电源,然后按照USB启动说明启动它。

从硬盘驱动器手动启动

此时系统无法启动,因为Mac引导加载程序希望将EFI分区格式化为典型的Mac文件系统HFS +,而Ubuntu安装程序实际上将其格式化为VFAT。

在这一步中,我们将指示Live USB上的GRUB过于启动硬盘驱动器上新安装的Ubuntu。 – 这需要一些严肃的打字,但在以这种方式启动后,我们将准备好在下一步中设置自动启动。

如果您正在使用桌面安装程序,请按住shift键以显示GRUB引导加载程序菜单。

当您看到GRUB引导菜单时,请不要选择任何条目。 而是按C键调出GRUB控制台。

在grub控制台,键入ls

 grub> ls (memdisk) (hd0) (hd0,msdos) (hd1) (hd2) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1) 

你可能得不到与此完全相同的结果,但你会有一些类似的选择。

现在,找到包含用户主目录的分区。

 grub> ls (hd2,gpt2)/home rohith/ 

继续尝试直到找到它。

最后一步的结果有两部分: (hdX,gptY) 。 您需要保留hdX部分,但需要查看所有gptY选项以查找/ boot / grub目录。

 grub> ls (hd2,gpt2)/boot/grub unicode.pf2 [...] grub.cfg 

现在,您要将此设置为进一步命令的根目录。

 grub> set root=(hd2,gpt2) 

正确启动的唯一方法是使用驱动器的UUID。

 grub> ls -l (hd2,gpt2) 

记下UUID。 您必须在下一步中手动键入它。

 grub> linux /boot/vmlinuz〈Tab here!〉.efi.signed root=UUID=〈the UUID from above〉 

GRUB控制台可以完成标签,所以如果你只输入vmlinuz部分并点击tab ,然后点击。 再次选中,您不必输入整个文件名。 确保efi.signed部分存在。

现在,设置初始RAM磁盘

 grub> initrd /boot/initrd〈Tab here!〉 

您应该能够启动硬盘驱动器命令

 grub> boot 

在此处输入图像描述

设置自动启动

您现在已经启动了新安装的Ubuntu。 下一步是通过将/boot/efi分区重新格式化为Mac期望的HFS +文件系统,并允许您直接启动它,使启动自动且无痛。

1.安装额外包

现在,打开一个终端并输入

 sudo add-apt-repository ppa:detly/mactel-utils sudo apt-get update sudo apt-get install mactel-boot hfsprogs gdisk grub-efi-amd64 

2.重新格式化EFI分区

运行mount以获取已安装文件系统的列表,并查找在/ boot / efi上安装的任何内容。 卸下它。

 sudo umount /dev/sda1 

我们现在使用gdisk删除VFAT分区并创建一个HFS +

 sudo gdisk /dev/sda 

(请注意,该磁盘名称末尾没有数字!)

p

确认第一个分区的类型为EF00 。 现在我们删除那个EF00分区。

d

取而代之的是创建一个新的HFS +。

n

按Enter键输入第一个和最后一个扇区选项。

输入AF00作为文件系统代码。

使用p命令仔细检查更改,然后写入。

现在我们有一个未格式化的HFS +分区。 格式化为:

 sudo mkfs.hfsplus /dev/sda1 -v ubuntu 

3.更新文件系统表

编辑/ etc / fstab

 sudoedit /etc/fstab 

使用Ctrl+K删除引用/boot/efi的行。

现在,键入以下命令 –

 sudo bash -c 'echo $(blkid -o export -s UUID /dev/sda1) /boot/efi auto defaults 0 0 >> /etc/fstab' mount /boot/efi 

4.在HFS分区上安装GRUB

 sudo bash -c 'echo "This file is required for booting" > /boot/efi/mach_kernel' 

安装GRUB并“祝福”文件系统。

 sudo grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi sudo hfs-bless "/boot/efi/System/Library/CoreServices/boot.efi" 

编辑一些故障排除:当在Ubuntu 14.04 Trusty Tahr上遵循这些说明时,我从grub-install收到以下错误消息

 Installing for x86_64-efi platform.grub-install error: Can't create file: No such file or directory. 

strace再次运行后我确定它没有查找名为/boot/efi/mach_kernel的文件,而是查找名为/boot/efi/EFI/ubuntu/mach_kernel文件,并在创建该文件后重新运行grub-install一切似乎工作。 结束编辑

5.删除引导延迟

要设置默认EFI引导条目,请运行

 sudo efibootmgr 

摆脱额外的条目 –

 sudo efibootmgr -b xxxx -B 

其中xxxx是从sudo efibootmgr获得的引导号

现在,设置默认条目 –

 sudo efibootmgr -o xxxx 

系统现在应该可以启动了!

学分

Jason Heeris – 对于他的原始post,使用了PPA。

Rohith Madhavan – 关于Ask Ubuntu的post,稍加修改。