UEFI Multi-System: Win + Linux + BSD + macOS(Hackintosh)

本文讲述如何在UEFI环境中安装Win+Linux+BSD+macOS(Hackintosh)多系统。具体版本为:
Windows 11 Pro 英文版 OS Build 22621.1992
Xubuntu 22.04
FreeBSD 13.2
macOS Big Sur 11.5.2 20G95 with Clover5138 and OC 0.7.2 MF
以上均为x64版本

写在前面

在UEFI环境中安装多系统难度并不大,但是Hackintosh黑苹果不是任何PC都能成功安装的,目前Hackintosh还不支持Intel 11代或更新的CPU。关于哪些机型支持黑苹果,有诸多网站可以参考。比较知名的有:
黑苹果动力 – https://www.mfpud.com/
黑果小兵的部落阁 – https://blog.daliansky.net/
黑苹果 – https://heipg.cn/
黑果魏叔 – https://www.imacosx.cn/
老吴黑苹果工作室 – https://hpglw.com/

本文直接使用支持黑苹果的Lenovo ThinkPad T14 Gen1以避免麻烦。
2020年8月27日出厂的T14G1(型号20S1S1C21Z)内置SSD是Samsung PM981a 256GB / MZVLB256HBHQ-000L7,PM981/PM981a不支持黑苹果,会卡在16分钟,且目前没有解决办法。正巧有台T14G1的SSD发生故障,于2023年9月7日保修更换成了UMIS忆联 RPIRJ256VME2MWD,这个SSD支持黑苹果。

为方便截图,本文混合使用实体电脑和虚拟电脑截图。

硬件环境

Lenovo ThinkPad T14 Gen1 20S1S1C21Z: Intel i5-10310U + DDR4 16GB + NVMe 256GB (UMIS RPIRJ256VME2MWD)

硬盘分区规划

分区1 – EFI分区,300MB
分区2 – Windows分区,61GB
分区3 – Linux分区,60GB
分区4 – FreeBSD分区,59GB
分区5 – macOS分区,58GB

手动划分EFI分区

使用DiskGenius在WinPE下创建EFI分区,或是在Win11安装过程中按Shift-F10进入CMD命令行界面用Diskpart工具创建EFI分区均可。如不手动划分EFI分区,Win11安装程序默认划分100MB的EFI分区,Hackintosh安装程序默认划分200MB的EFI分区。建议手工划分300MB的EFI分区。下图是使用DiskGenius在WinPE下创建300MB的EFI/ESP分区。

手动划分Win11分区

下图是使用DiskGenius在WinPE下创建61GB的NTFS格式Win11分区。

安装Win11后设置硬件时钟为UTC

Windows默认将硬件时钟(RTC, Real Time Clock / CMOS Clock / HW Clock, Hardware Clock)视为本地时间。比如北京的时区是UTC+8,Windows就会将RTC时间视为UTC+8的时间,认为RTC比UTC早8个小时。Windows显示的时间和CMOS时间是相同的。
BSD/macOS默认将RTC视为UTC。北京时区的BSD/macOS显示的时间是用CMOS时间+8h。
Linux各发行版行为不同。Ubuntu 17.04和更早的版本默认将RTC视为UTC,从Ubuntu 17.10开始与Windows系统相同,将RTC视为本地时间。
为避免多系统切换后时钟混乱,统一设置为将RTC当作UTC。
在Windows中以管理员权限打开CMD命令行,运行
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
然后将系统时间与Internet同步一下。再进入BIOS和Windows分别看一下时间,现在CMOS时间比Windows时间慢8h了。

手动划分Xubuntu 22.04分区

为简化操作,使用DiskGenius在WinPE下将剩余的177GB空闲硬盘空间划分为一个60GB和一个117GB的分区,然后再将位置靠前的60GB分区删除。这样就得到了一个在硬盘中间位置的60GB空闲空间,用于安装Xubuntu 22.04。

安装Xubuntu 22.04并修改时区

Xubuntu 22.04安装进程能够识别硬盘上已经安装的Win11,询问Installation type时,选择默认的Install Xubuntu alongside Windows Boot Manager,就会安装到前面为Xubuntu保留的60GB空闲磁盘空间中。
如果想使用干净的英文界面Xubuntu,安装时地理位置选择默认的New York,而不要选上海,否则界面中英文混杂。安装完成后执行命令行timedatectl set-timezone Asia/Shanghai可以把系统时区改成上海,无参数直接执行命令行timedatectl显示Linux系统各项时间设置。
Local time: Sat 2023-09-09 14:42:32 CST
Universal time: Sat 2023-09-09 06:42:32 UTC
RTC time: Sat 2023-09-09 06:42:32
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

手动划分FreeBSD 13.2分区

与划分Xubuntu分区类似,使用DiskGenius将磁盘空间最靠后的117GB占位用的NTFS分区删除,得到的117GB空闲硬盘空间划分为一个59GB和一个58GB的分区,然后再将位置靠前的59GB分区删除。这样就得到了一个在硬盘中间位置的59GB空闲空间,用于安装FreeBSD。

安装FreeBSD 13.2

ZFS文件系统是FreeBSD的重要优点之一。FreeBSD独占整块磁盘安装的话,推荐使用ZFS,即在安装进程进行磁盘分区时选择Auto(ZFS) Guided Root-on-ZFS
但双系统或多系统安装时,Auto(ZFS)仍然只能占据整块硬盘,无法选择与其他OS共存。若使用ZFS必须手动分区,操作步骤比较复杂。在此我们选择Auto(UFS) Guided UFS Disk Setup,使用传统的UFS(Unix File System)安装FreeBSD。

选择安装到分区Partition,而不是整个硬盘Entire Disk

自动分区结果如下图(下图是虚拟机中的截图。T14G1物理机上的硬盘不是ada0,而是nvd0,各分区大小也不是32GB而是60GB左右。)
可以看到为macOS预留的最后一段硬盘空间因为是在安装FreeBSD之前就划出了分区的,占据了设备名/dev/ada0p4(T14G1物理机上是nvd0p4),FreeBSD的根分区设备名/dev/ada0p5(T14G1物理机上是nvd0p5),FreeBSD交换分区设备名/dev/ada0p6(T14G1物理机上是nvd0p6),设备名的顺序和磁盘分区的顺序不一致了。后面删除这段预留的磁盘空间安装macOS,会导致FreeBSD启动时不能正确地找到根分区和交换分区。为此,需要理顺设备名,使其与分区顺序一致。

理顺FreeBSD磁盘设备名使其与分区顺序一致

在FreeBSD中运行命令gpart show -p,或者用DiskGenius都可以看到FreeBSD使用Auto(UFS)方式安装后,划分出了56GB的根分区和3GB的交换分区,还留下了几十MB的空闲空间,位置排在为macOS预留的磁盘空间前面。

删除之前为macOS预留的最后一段磁盘分区,FreeBSD留下的几十MB空闲空间将与之合并,重新将剩余的全部58GB空闲空间划出分区,用于安装Hackintosh。

重新启动选择FreeBSD启动,会提示遇到错误:
Mounting from ufs:/dev/nvd0p5 failed with error 22: Invalid fstype.
屏幕提示需要手工指定供引导的根分区加载点。
发生错误的原因是修改了磁盘分区后,FreeBSD的根分区已经从/dev/nvd0p5变成/dev/nvd0p4,交换分区从/dev/nvd0p6变成/dev/nvd0p5了。
输入ufs:/dev/nvd0p4告知FreeBSD根分区加载点,FreeBSD成功启动(会提示交换分区加载点有误)。
登录FreeBSD,以root权限编辑/etc/fstab文件,vi /etc/fstab
将根分区加载点从错误的/dev/nvd0p5改为/dev/nvd0p4,将交换分区加载点从错误的/dev/nvd0p6改为/dev/nvd0p5。保存,退出,重启FreeBSD,成功。

安装macOS Big Sur 11.5.2 20G95 with Clover5138 and OC 0.7.2 MF

从黑苹果动力下载macOS Big Sur 11.5.2 20G95 with Clover5138 and OC 0.7.2 MF.dmg,用balenaEtcher工具将其刻录到一个不小于16GB的U盘上,从U盘启动。默认会从OC 0.7.2启动,选择安装macOS。
进入macOS安装界面,先选择磁盘工具,将内置磁盘disk0s6(disk0是SSD,disk0s1是EFI分区,disk0s2是Win11分区,disk0s3是Xubuntu分区,disk0s4是FreeBSD根分区,disk0s5是FreeBSD交换分区)抹掉(即分区+格式化),名称设置为macOS,格式选择Apple分区格式APFS。Samsung PM981/PM981a有一定概率卡死在这步。
macOS分区格式化好之后,退出磁盘工具,返回macOS安装界面,选择安装macOS Big Sur。后续过程略。Samsung PM981/PM981a即使没有卡死在抹除分区的步骤,也必定会卡死在这步的剩余大约16分钟处。
初步安装完成后,系统会自动重启,还需从U盘启动进入OC,会多出一个条目macOS Installer,选择它以继续后续安装过程。之后还会自动重启,仍需从U盘启动进入OC选择macOS Installer继续后续安装过程。安装完成后,再从U盘启动进入OC,macOS Installer条目会变成macOS,选择它即可进入macOS系统。

向UEFI中添加OC启动项

Hackintosh安装完成后,T14G1的UEFI启动项中还是只有FreeBSDubuntuWindows Boot Manager,仍然依赖macOS Big Sur 11.5.2 20G95 with Clover5138 and OC 0.7.2 MF的安装U盘启动进入OC选择macOS条目。为脱离U盘启动macOS,需要把U盘上OC的EFI文件夹复制到T14G1的SSD的EFI分区,并在UEFI中添加OC启动项。操作步骤如下:

PE启动或在Win/Linux/BSD/macOS中挂载可读写EFI分区的软件,将黑苹果安装U盘EFI分区中的\EFI\OC目录复制到T14G1的SSD的EFI分区的\EFI目录。

启动到Xubuntu系统,以root权限在命令行运行efibootmgr编辑EFI启动条目。
列出当前EFI启动条目和启动顺序
efibootmgr
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0002,0000,0001,0010,0011,0012,0013,0014,0015,0019,001A,001B,001C,001D,001E,001F,0020,0021,0022,0023
Boot0000* ubuntu
Boot0001* Windows Boot Manager
Boot0002* FreeBSD
Boot0010 Setup
...
Boot0027* ATAPI CD

查看EFI分区设备名
fdisk -l
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 616447 614400 300M EFI System
/dev/nvme0n1p2 616448 128544767 127928320 61G Microsoft basic data
/dev/nvme0n1p3 128544768 254375935 125831168 60G Linux filesystem
/dev/nvme0n1p4 254375936 371816447 117440512 56G FreeBSD UFS
/dev/nvme0n1p5 371816448 378003455 6187008 3G FreeBSD swap
/dev/nvme0n1p6 378003456 500118151 122114696 58.2G Apple APFS
挂载EFI分区到/mnt目录
mount /dev/nvme0n1p1 /mnt
列出OC目录中的*.efi文件
ls /mnt/EFI/OC/*.efi
/mnt/EFI/OC/OpenCore.efi
添加UEFI启动条目
efibootmgr -c -w -L "OC" -d /dev/nvme0n1 -p 1 -l \\EFI\\OC\\OpenCore.efi
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0003,0002,0000,0001,0010,0011,0012,0013,0014,0015,0019,001A,001B,001C,001D,001E,001F,0020,0021,0022,0023
Boot0000* ubuntu
Boot0001* Windows Boot Manager
Boot0002* FreeBSD
Boot0010 Setup
...
Boot0027* ATAPI CD
Boot0003* OC

重启,测试成功,UEFI启动出现OC条目,可正常进入macOS。

用BOOTICE软件美化UEFI条目

PE启动后运行BOOTICE v1.3.4 x64 – by Pauly,切换到UEFI选项卡,点击【修改启动序列(B)】按钮。

选中OC条目,将其菜单标题改为OC 0.7.2 MF - macOS Big Sur 11.5.2 20G95,然后按【保存当前启动项设置(S)】按钮。

BOOTICE提示UEFI boot entry saved successfully!,点击【确定】按钮。

将FreeBSD启动条目的菜单标题改为FreeBSD 13.2;然后按【保存当前启动项设置(S)】按钮。
将ubuntu启动条目的菜单标题改为Xubuntu 22.04 LTS;然后按【保存当前启动项设置(S)】按钮。

Windows Boot Manager条目不要修改。如果修改,Win11启动后会自动在UEFI启动条目中加入Windows Boot Manager。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *