如何将 Mac BIOS 启动转换为 EFI 启动?

如何将 Mac BIOS 启动转换为 EFI 启动?

我在 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

尝试这个:

  1. 安装重新索引在 OS X 中。您可以使用install.sh脚本来执行此操作。
  2. sudo mkdir /EFI/refind/drivers_x64在 OS X 终端窗口中输入。(如果使用--esp选项install.sh,则需要调整路径以在 ESP 上创建此目录。)
  3. 安装rEFInd EFI 驱动程序适用于您用于存储 Linux 内核的任何文件系统(通常是 ext4fs,但有时不是)。要安装驱动程序,您需要将其复制到rEFInd 安装目录的drivers或子目录中(在 OS X 中默认)。drivers_x64/EFI/refind
  4. 在 Linux 中(即使从 BIOS 模式启动),运行mkrlconf.shrEFInd 附带的脚本。这将生成一个/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 分区。

这是分步指南:

  1. 进入 Linux 后,按照你喜欢的方式下载并安装软件包mactel 引导赫夫斯普罗格斯
  2. 例如,使用 GParted 调整现有分区模式的大小,并为新的小分区(例如 100MB 或更小)腾出空间,然后将其格式化为 HFS+ 文件系统。如果您安装了 hfsprogs,则可以使用 GParted 的 GUI 轻松完成此操作,或者使用命令,mkfs.hfsplus /dev/sdaX其中 X 是新创建的分区的编号(我假设是 7,在您的例子中,即 /dev/sda7)。
  3. 将新的 HFS+ 分区挂载到您希望的任何挂载点。这根本不重要。在过程结束时,您甚至可以编辑 fstab 文件以防止 Linux 在登录时自动挂载此分区。
  4. 将活动内核复制到此分区。您不需要复制所有内容,只需复制 vmlinuz-xyz-whatever.efi.signed 和 initrd-xyz-whatever.img。重要!内核必须重命名为以“efi”结尾的名称,否则 Apple 的固件将拒绝执行其代码。您可以将其重命名为 vmlinuz-xyz-whatever.efi 或甚至简单地重命名为 vmlinuz.efi
  5. 现在在 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 等)
  6. 使用命令来祝福新复制的内核hfs-bless "<MountPoint of your HFS+ partition>\vmlinuz.efi"(例如hfs-bless "/mnt/pureEfiBoot/vmlinuz.efi"
  7. 完成。重启并享受。

这种方法的主要优点是启动速度极快。您可以在几秒钟内进入登录屏幕,具体取决于硬件的速度。您甚至可以使用消除默认的 5 秒延迟。sudo efibootmgr -T

另一方面,一个主要缺点是每次更新内核时,您都需要手动更新(此时隐藏的)HFS+ 分区。如果不这样做,也不会造成太大损害,因为您将使用旧内核启动。尽管如此,更新是明智的,可以使用某种形式的 shell 脚本自动完成。

另一个(潜在的)缺点是,在某些机器上,直接启动内核时,X 可能无法正确检测到您的显卡。

相关内容