64位UEFI下的OpenCore和Clover引导多启动移动硬盘(MacOS + Win10 + Win11 + Ubuntu + Fedora + OpenSUSE + Archlinux + Gentoo + Debian + RHEL + SLES)

64位UEFI下的OpenCore和Clover引导多启动移动硬盘(MacOS + Win10 + Win11 + Ubuntu + Fedora + OpenSUSE + Archlinux + Gentoo + Debian + RHEL + SLES)

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