![如何将 Mac BIOS 启动转换为 EFI 启动?](https://linux22.com/image/841349/%E5%A6%82%E4%BD%95%E5%B0%86%20Mac%20BIOS%20%E5%90%AF%E5%8A%A8%E8%BD%AC%E6%8D%A2%E4%B8%BA%20EFI%20%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
我在 MacBook Pro (8,2) 上运行 Kubuntu 13.04,并将其设置为通过 Apple 的 BIOS 仿真启动。我想使用 Intel 显卡而不是 ATI 显卡。这意味着我需要让系统通过 EFI 启动。我不想进行全新安装。我能进入的最远的地方是 grub-efi,但我实际上无法从那里启动内核。
我的分区方案:
/dev/sda1 = EFI
/dev/sda2 = Mac OS
/dev/sda3 = root
/dev/sda4 = boot
/dev/sda5 = home
/dev/sda6 = swap
如何在不丢失现有操作系统安装的情况下在 BIOS 启动安装中实现 EFI 启动?
答案1
尝试这个:
- 安装重新索引在 OS X 中。您可以使用
install.sh
脚本来执行此操作。 sudo mkdir /EFI/refind/drivers_x64
在 OS X 终端窗口中输入。(如果使用--esp
选项install.sh
,则需要调整路径以在 ESP 上创建此目录。)- 安装rEFInd EFI 驱动程序适用于您用于存储 Linux 内核的任何文件系统(通常是 ext4fs,但有时不是)。要安装驱动程序,您需要将其复制到rEFInd 安装目录的
drivers
或子目录中(在 OS X 中默认)。drivers_x64
/EFI/refind
- 在 Linux 中(即使从 BIOS 模式启动),运行
mkrlconf.sh
rEFInd 附带的脚本。这将生成一个/boot/refind_linux.conf
文件,其中包含 rEFInd 传递给内核的内核选项。
理想情况下,这将使您能够以 EFI 模式直接启动 Linux,绕过 GRUB,如果自动脚本不正确,配置起来会很棘手。rEFInd 应该在您每次启动时检测您的内核,因此您在升级内核时无需更新任何内容。
如果此方法有效,并且您没有使用 Windows 进行三重启动,则可能需要:
- 编辑
/EFI/refind/refind.conf
,取消注释该scanfor
行,并确保hdbios
不存在。这将使旧的 BIOS 模式 GRUB 不会显示为 rEFInd 启动选项。 - 去除混合型MBR从硬盘中删除。您可以通过使用
parted
或 GParted 编辑分区表(只需进行任何微小更改)或安装软件包gdisk
、启动gdisk
磁盘、键入x
以进入专家菜单、键入n
以生成新的保护性 MBR,然后键入w
以保存更改来执行此操作。删除混合 MBR 将降低其将来导致问题的可能性。
答案2
这里你还有另一种可能性,即完全绕过两个都蛴螬和rEFInd。按照这些步骤,您将得到一个可以启动的系统天生地以纯 EFI 模式进入 Linux。
每当您需要重新启动 OsX 时,只需在听到提示音后立即按住 <alt> 键,您就会进入 Apple 的内置启动屏幕,您可以在其中选择要启动的 OsX 分区。
这是分步指南:
- 进入 Linux 后,按照你喜欢的方式下载并安装软件包mactel 引导和赫夫斯普罗格斯。
- 例如,使用 GParted 调整现有分区模式的大小,并为新的小分区(例如 100MB 或更小)腾出空间,然后将其格式化为 HFS+ 文件系统。如果您安装了 hfsprogs,则可以使用 GParted 的 GUI 轻松完成此操作,或者使用命令,
mkfs.hfsplus /dev/sdaX
其中 X 是新创建的分区的编号(我假设是 7,在您的例子中,即 /dev/sda7)。 - 将新的 HFS+ 分区挂载到您希望的任何挂载点。这根本不重要。在过程结束时,您甚至可以编辑 fstab 文件以防止 Linux 在登录时自动挂载此分区。
- 将活动内核复制到此分区。您不需要复制所有内容,只需复制 vmlinuz-xyz-whatever.efi.signed 和 initrd-xyz-whatever.img。重要!内核必须重命名为以“efi”结尾的名称,否则 Apple 的固件将拒绝执行其代码。您可以将其重命名为 vmlinuz-xyz-whatever.efi 或甚至简单地重命名为 vmlinuz.efi
- 现在在 EFI 固件中创建一个新的启动项,发出命令,
sudo efibootmgr -c -l '\vmlinuz-x.y.z-whatever.efi' -L 'Ubuntu' -p X -u "<kernel parameters> initrd=\initrd-x.y.z-whatever.img"
其中 X 是您的全新 HFS+ 分区的分区号,<内核参数> 是从与您当前启动相对应的菜单项中的 grub.cfg 获取的参数(例如 root=UUID=de4567fd-55aa-AND-SO-ON ro quiet splash 等) - 使用命令来祝福新复制的内核
hfs-bless "<MountPoint of your HFS+ partition>\vmlinuz.efi"
(例如hfs-bless "/mnt/pureEfiBoot/vmlinuz.efi"
- 完成。重启并享受。
这种方法的主要优点是启动速度极快。您可以在几秒钟内进入登录屏幕,具体取决于硬件的速度。您甚至可以使用消除默认的 5 秒延迟。sudo efibootmgr -T
另一方面,一个主要缺点是每次更新内核时,您都需要手动更新(此时隐藏的)HFS+ 分区。如果不这样做,也不会造成太大损害,因为您将使用旧内核启动。尽管如此,更新是明智的,可以使用某种形式的 shell 脚本自动完成。
另一个(潜在的)缺点是,在某些机器上,直接启动内核时,X 可能无法正确检测到您的显卡。