OpenCore最终效果如下图:。Clover其实效果差不多,不过由于后续可能不再支持了,所以主推OpenCore。另外,由于OpenCore自身开发不是用来做多系统引导的,所以,附上我个人魔改的OpenCore启动器教程: https://github.com/alexanderzjs/OpenCore-LiveUSB
移动硬盘的分区
这里我的移动硬盘大小是1TB(实际是931.5GB),具体GPT分区方案如图所示:
第一个分区EFI主要用来安装OpenCore,目录结构:
紧接着的两个分区是macOS Mojave和macOS Monterey的安装盘,这个安装盘的制作方法非常简单,下载好镜像,然后用镜像里面的createinstallmedia命令就可以了,注意分区不要选到其他分区了。分区大小只要比安装盘的略大一点就好了。
再下来的Buffer分区是一个空分区,这个分区主要是用来调整前后分区大小的,比如上一个macOS的后一个版本的安装镜像比现在的要大,那么就用这个空间来扩展。
接着两个windows的安装盘分区,一个是Win10,一个是Win11。
接着是我存放数据的分区,也是最大的分区。
最后的是LINUX分区,这个分区的格式一定要注意,EXT2是我试过比较合适的,因为有些镜像比较大,FAT32不能够很好的支持,这个分区放到最后也有利于从前面一个分区进行分区扩展。
注意:首先安装两个macOS系统,这个没什么好说的,然后把Win10和Win11的安装盘文件解压到各自对应的分区的根目录。
基于OpenCore的多启动移动硬盘的制作
OpenCore安装参考:OpenCore安装,这里只需要Drivers和Kexts就可以了,ACPI是为了黑苹果用的,我们用不到。这里唯一需要注意的就是Misc路径下面的Entries,我所有的系统都在Entries下定义,详细方式参考config.plist,我只贴出重点的部分,其余部分和sample.plist保持一致就好了。
Misc
Boot
...
HideAuxiliary # 这里一般来讲是true,省的有各种不想看到的图标
...
PickerAttributes # 这里的值是参考了https://dortania.github.io/OpenCanopy-Gallery/blackosx.html
145
...
PickerMode # 这个必须改成External,否则主题不起作用
External
PickerVariant # 这个要匹配Resources/Image下面的路径
customized\custom
...
ShowPicker # 这个要改为true
...
Debug # 如果需要debug,需要开启下面的内容
AppleDebug # 必须是true
ApplePanic # 一般是true
DisableWatchDog # 一般是true
DisplayDelay
0
DisplayLevel # 注意一下这个值
2147483714
LogModules
*
SysReport # 一般不需要
Target # 注意一下这个值
67
Entries
Arguments
Auxiliary # 如果上面的HideAuxiliary是true并且这个值也是true,那么Windows 10就不会显示了
Comment
Windows 10 Setup
Enabled
Flavour
Windows10:ExtWindows10 # 这个Windows10是匹配Resources/Image/customized/custom/Windows10.icns的,如果找不到则试着找ExtWindows10.icns
Name
Windows 10 Setup
Path
HD(5,GPT,F98442A8-A369-4BF0-BE54-E5AFDEFFA702,0x4FC6000,0xC00000)/\EFI\BOOT\BOOTX64.EFI # 这个UUID的找法下面会讲
TextMode
Arguments
Auxiliary
Comment
Windows 11 Setup
Enabled
Flavour
Windows11:ExtWindows11
Name
Windows 11 Setup
Path
HD(6,GPT,00EA184E-E885-43CF-8B48-46D9969C54D3,0x5BC6000,0xC00000)/\EFI\BOOT\BOOTX64.EFI
TextMode
Arguments
Auxiliary
Comment
Install macOS Mojave
Enabled
Flavour
OSX:ExtApple
Name
Install macOS Mojave
Path
HD(2,GPT,1927DEFE-19D4-44E1-A7C0-32A682239B56,0x64022,0xD09DC0)/\System\Library\CoreServices\boot.efi
TextMode
Arguments
Auxiliary
Comment
Install macOS Monterey
Enabled
Flavour
MacOS:ExtApple
Name
Install macOS Monterey
Path
HD(3,GPT,8A5E73A3-A04D-4B52-A7CE-283BAE9A6B6B,0xDADDE8,0x1A13B80)/\System\Library\CoreServices\boot.efi
TextMode
Arguments
iso-scan/filename=/ubuntu/jammy-desktop-amd64.iso file=/cdrom/preseed/ubuntu.seed quiet splash=silent initrd=/ubuntu/initrd
Auxiliary
Comment
Ubuntu 20.04 LTS
Enabled
Flavour
Ubuntu:Linux
Name
Ubuntu 20.04 LTS
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/\ubuntu\vmlinuz
TextMode
Arguments
iso-scan/filename=/fedora/Fedora-Workstation-Live-x86_64-35-1.2.iso root=live:CDLABEL=Fedora-WS-Live-35-1-2 rd.live.image nomodeset quiet rhgb initrd=/fedora/initrd.img
Auxiliary
Comment
Fedora Workstation 35
Enabled
Flavour
Fedora:Linux
Name
Fedora Workstation 35
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/fedora/vmlinuz
TextMode
Arguments
install=hd:/opensuse/openSUSE-Leap-15.3-3-DVD-x86_64-Media.iso splash=silent initrd=/opensuse/initrd
Auxiliary
Comment
OpenSUSE Leap 15.3.3
Enabled
Flavour
OpenSUSE:Linux
Name
OpenSUSE Leap 15.3.3
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/opensuse/linux
TextMode
Arguments
img_dev=/dev/disk/by-label/LINUX img_loop=archlinux/archlinux-2022.05.01-x86_64.iso initrd=/archlinux/initramfs-linux.img /archlinux/intel-ucode.img
Auxiliary
Comment
Arch Linux
Enabled
Flavour
Arch:Linux
Name
Arch Linux
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/archlinux/vmlinuz-linux
TextMode
Arguments
root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot isoboot=/gentoo/install-amd64-minimal-20220508T170538Z.iso initrd=/gentoo/gentoo.igz
Auxiliary
Comment
Gentoo Linux
Enabled
Flavour
Gentoo:Linux
Name
Gentoo Linux
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/gentoo/gentoo
TextMode
Arguments
findiso=/debian/debian-11.3.0-amd64-DVD-1.iso splash=silent initrd=/debian/initrd.gz
Auxiliary
Comment
Debian 11.3.0
Enabled
Flavour
Debian:Linux
Name
Debian 11.3.0
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/debian/vmlinuz
TextMode
Arguments
inst.repo=hd:LABEL=LINUX:/redhat/rhel-baseos-9.0-x86_64-dvd.iso quiet initrd=/redhat/initrd.img
Auxiliary
Comment
RHEL 9.0
Enabled
Flavour
RedHat:Linux
Name
RHEL 9.0
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/redhat/vmlinuz
TextMode
Arguments
splash=silent quiet nomodeset install=hd:/suse/SLE-15-SP4-Full-x86_64-PublicRC-202204-Media1.iso initrd=/suse/initrd
Auxiliary
Comment
SLES 15 SP4
Enabled
Flavour
SUSE:Linux
Name
SLES 15 SP4
Path
HD(8,GPT,48ACC8D0-F148-4CC7-B788-C8D0F2ABB422,0x6E2F67E0,0x63FFFFF)/suse/linux
TextMode
Security
...
ScanPolicy # 这个值无所谓,魔改版只会扫描外部设备的
0
SecureBootModel # 这个一定要关闭
Disabled
Vault # 这个一定要改成Optional
Optional
Tools # 根据需要启用或者不启用,这里略过
OpenCore主题参考:OpenCore主题,我这里做了一些修改,不过所有文件都放在Resources文件夹下面,所以不需要多费心(注意不要随意删除Image文件夹里面的图标,可以更换或者增加)。这里面比较重要的概念是Flavour,图标的名称是和Entries里面的Flavour匹配的。要注意的是icns文件的制作,这里制作的命令可以参考后面的内容。另外,音效支持也不太管用,其实可以删除AudioDxe.efi。
找硬盘分区UUID的方法
进入UEFI Shell,就是最后一个选项。
在Shell提示符下面会显示FS0,FS1等文件系统和BLK0,BLK1等分区。输入FS0:会进入第一个文件系统,然后用dir可以显示当前文件系统的内容。
输入map > table.txt就可以把当前的分区内容记录在第一个文件系统(也就是FS0)的根目录的table.txt下。
正常启动电脑上的系统就可以查看table.txt上面的内容。
注意,原来的HD(X,GPT,XXXX)前面有一个前缀类似PciRoot(0x0)/Pci(0x14,0x0)/USB(0x10,0x0)/,这个东西在魔改版不需要了。
如果你无法进入UEFI Shell,那么可以想办法找到你当前硬盘的如下信息:
HD(1, GPT, 4616168015-5166-1451-61619458, 0x568919, 0x581968)
HD(分区编号,分区类型(GPT,MBR),分区的UUID,分区起始地址,分区大小)
在Linux下可以用fdisk -l来显示,Windows下要找相应的软件去看了。
制作icns图标文件的方法
首先,打开终端并切换到桌面或者你想要的任何地方。然后在桌面(终端切换到的目录)准备一张你想用来做图标的png文件,命名为pic.png。接着继续在终端操作,新建一个目录(也可以直接右键新建,记得保留后缀)
mkdir tmp.iconset
上面我们就新建了一个名字为tmp.iconset的文件夹,下面的命令是用来生成不同分辨率下的图片的。为了能快速执行,创建一个名为makeicns的可执行文件,并贴入如下内容:
#!/bin/bash
sips -z 16 16 pic.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 pic.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 pic.png --out tmp.iconset/icon_32x32.png
sips -z 64 64 pic.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128 pic.png --out tmp.iconset/icon_128x128.png
sips -z 256 256 pic.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256 pic.png --out tmp.iconset/icon_256x256.png
sips -z 512 512 pic.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512 pic.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024 pic.png --out tmp.iconset/icon_512x512@2x.png
iconutil -c icns tmp.iconset -o Icon.icns
最后执行./makeicns就好了。
Clover的制作方法
和OpenCore基本一样,这里不多说了,附上config.plist:
GUI
#Mouse
Mirror
Speed
2
Enabled
DoubleClickTime
500
#TextOnly
ProvideConsoleGop
#ConsoleMode
0
Custom
Legacy
Entries
Hidden
Volume
F98442A8-A369-4BF0-BE54-E5AFDEFFA702
Disabled
Image
windows10
Path
\EFI\BOOT\BOOTX64.efi
Title
Windows 10 Setup
NoCaches
InjectKexts
Type
Windows
Hidden
Volume
00EA184E-E885-43CF-8B48-46D9969C54D3
Disabled
Image
windows11
Path
\EFI\BOOT\BOOTX64.efi
Title
Windows 11 Setup
NoCaches
InjectKexts
Type
Windows
Hidden
Volume
1927DEFE-19D4-44E1-A7C0-32A682239B56
Disabled
Image
mojave
Path
\System\Library\CoreServices\boot.efi
Title
Install macOS Mojave
NoCaches
InjectKexts
Type
OSXInstaller
Hidden
Volume
8A5E73A3-A04D-4B52-A7CE-283BAE9A6B6B
Disabled
Image
monterey
Path
\System\Library\CoreServices\boot.efi
Title
Install macOS Monterey
NoCaches
InjectKexts
Type
OSXInstaller
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
iso-scan/filename=/ubuntu/jammy-desktop-amd64.iso file=/cdrom/preseed/ubuntu.seed quiet splash=silent initrd=/ubuntu/initrd
Disabled
Image
ubuntu
Path
\ubuntu\vmlinuz
Title
Ubuntu 20.04 LTS
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
iso-scan/filename=/fedora/Fedora-Workstation-Live-x86_64-35-1.2.iso root=live:CDLABEL=Fedora-WS-Live-35-1-2 rd.live.image nomodeset quiet rhgb initrd=/fedora/initrd.img
Disabled
Image
fedora
Path
\fedora\vmlinuz
Title
Fedora Workstation 35
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
install=hd:/opensuse/openSUSE-Leap-15.3-3-DVD-x86_64-Media.iso splash=silent initrd=/opensuse/initrd
Disabled
Image
opensuse
Path
\opensuse\linux
Title
OpenSUSE Leap 15.3.3
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
img_dev=/dev/disk/by-label/LINUX img_loop=archlinux/archlinux-2022.05.01-x86_64.iso initrd=/archlinux/initramfs-linux.img /archlinux/intel-ucode.img
Disabled
Image
arch
Path
\archlinux\vmlinuz-linux
Title
Arch Linux
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot isoboot=/gentoo/install-amd64-minimal-20220508T170538Z.iso initrd=/gentoo/gentoo.igz
Disabled
Image
gentoo
Path
\gentoo\gentoo
Title
Gentoo Linux
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
findiso=/debian/debian-11.3.0-amd64-DVD-1.iso splash=silent initrd=/debian/initrd.gz
Disabled
Image
debian
Path
\debian\vmlinuz
Title
Debian 11.3.0
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
inst.repo=hd:LABEL=LINUX:/redhat/rhel-baseos-9.0-x86_64-dvd.iso quiet initrd=/redhat/initrd.img
Disabled
Image
redhat
Path
\redhat\vmlinuz
Title
RHEL 9.0
NoCaches
InjectKexts
Type
Linux
Hidden
Volume
48ACC8D0-F148-4CC7-B788-C8D0F2ABB422
Arguments
splash=silent quiet nomodeset install=hd:/suse/SLE-15-SP4-Full-x86_64-PublicRC-202204-Media1.iso initrd=/suse/initrd
Disabled
Image
suse
Path
\suse\linux
Title
SLES 15 SP4
NoCaches
InjectKexts
Type
Linux
Tool
Hidden
Volume
0F4984CD-5371-4BAE-B085-3CCA81A1EE46
Disabled
Path
\EFI\CLOVER\TOOLS\Shell64.efi
Title
Shell64
Hidden
Volume
0F4984CD-5371-4BAE-B085-3CCA81A1EE46
Disabled
Path
\EFI\CLOVER\TOOLS\ResetSystem.efi
Title
Shutdown
ScreenResolution
1280x1024
Hide
cdboot
Legacy HD
EFI
CustomIcons
#KbdPrevLang
#Language
ru:0
Scan
Legacy
Entries
Tool
ShowOptimus
Timezone
3
Theme
custom
EmbeddedThemeType
Daytime
PlayAsync
最终文件包:EFI-OC
最终文件包:EFI-clover