实际上只要先安装macOS,调整好空白分区,然后通过U盘启动Fedora安装,将Fedora安装到空白分区就可以实现双启动。
虽然Grub 2启动macOS还不能正确实现(因为最新的macOS High Sierra采用了APFS文件系统),但是MacBook启动时候提供了一种切换磁盘分区的方法,即按住option
键再按电源键,提供了双操作系统磁盘分区切换的功能。所以,不需要第三方启动管理器也能够实现Dual boot。
此外,升级macOS会覆盖掉以前设置的Grub配置和默认启动分区信息,改为默认从macOS系统启动。但是没有关系,依然可以通过按住option
键再按电源来切换不同分区的Linux和macOS。
实际操作即采用此方法,后面文档是我的实践记录,提供一些参考。
在MacBook Pro上安装Linux是通过rEFInd来实现安装的。类似以前在MacBook上安装Gentoo,先在macOS中运行安装rEFInd,这样就可以控制启动从盘安装Fedora。
不过,Fedora安装似乎破坏了rEFInd配置,启动时候直接进入了Fedora Grub,导致无法启动到macOS,所以在Fedora中,再次安装rEFInd,运行:
sudo rpm -Uvh refind-0.11.2-1.x86_64.rpm
执行
refind-install
出现报错
ShimSource is none
Installing rEFInd on Linux....
The ESP doesn't seem to be mounted! Trying to find it....
Mounting ESP at //boot/efi
ESP was found at //boot/efi using vfat
Found rEFInd installation in //boot/efi/EFI/refind; upgrading it.
Installing driver for ext4 (ext4_x64.efi)
Copied rEFInd binary files
Notice: Backed up existing icons directory as icons-backup.
Existing refind.conf file found; copying sample file as refind.conf-sample
to avoid overwriting your customizations.
Could not identify ESP in AddBootEntry()!
Existing //boot/refind_linux.conf found; not overwriting.
检查磁盘分区fdisk -l
显示
Device Start End Sectors Size Type
/dev/sda1 40 409639 409600 200M EFI System
/dev/sda2 409640 500409639 500000000 238.4G unknown
/dev/sda3 500410368 500819967 409600 200M Apple HFS/HFS+
/dev/sda4 500819968 502917119 2097152 1G Linux filesystem
/dev/sda5 502917120 977104895 474187776 226.1G Linux LVM
这里可以看到EFI文件系统分区是/dev/sda1
,通过df
命令可以看到挂载
/dev/sda1 197M 25M 173M 13% /boot/efi
参考Archlinux: MacBookPro11,x是建议通过使用 systemd-boot或者Grub来完成双启动,并不需要使用第三方工具rEFInd。建议在UEFI系统使用System-boot。
参考Mac#Using the native Apple bootloader with GRUB
最初通过Fedora Live CD安装的操作系统之后,Grub自动接管了启动(覆盖了启动引导),替换了rEFInd,但是在Grub启动菜单中选择/dev/sda (macOS)
之后,终端提示信息:
error: can't find command 'xnu_uuid'.
error: can't find command 'xnu_kernel64'.
error: can't find command 'xnu_kextdir'.
Press any key to continue...
然后又返回到最初的Grub启动菜单选择。
这个问题在Bug 903937 - Mac OS X GRUB entries don't work提到了解决方法,即参考Grub error on Mb Air, dual boot F18+ Lion 执行以下步骤:
- 编辑
/etc/default/grub
添加GRUB_DISABLE_OS_PROBER=true
- 编辑
/etc/grub.d/40_custom
添加针对OS X的一个入口:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "macOS High Sierra" {
insmod hfsplus
set root=(hd1,gpt2)
chainloader /System/Library/CoreServices/boot.efi
boot
}
注意
/dev/sda2
是Mac分区,这里可以通过parted
工具显示分区信息的对应的编号
# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA APPLE SSD SM0512 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB fat32 EFI System Partition boot, esp
2 210MB 256GB 256GB
3 256GB 256GB 210MB hfs+ Linux HFS+ ESP
4 256GB 257GB 1074MB ext4
5 257GB 500GB 243GB lvm
然后运行grub2-mkconfig
更新grub.cfg
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
注意:在MacBook上使用的是EFI启动,所以不是常规的
grub2-mkconfig -o /boot/grub2/grub.cfg
指令输出启动配置。
详细的设置方法参考 Install Fedora 21 on MacAir 7,2
实际最后没有成功,每次启动macOS分区都会遇到无法加载kernel报错。这个问题我觉得是因为使用了最新的macOS High Sierra系统,使用了最新的APFS导致的,尚未得到支持。所以上述操作方法存档备用。
未尝试