多米诺骨牌源
最快捷的苹果资讯

在 Proxmox 5.4 上安装 macOS High Sierra/Mojave

以下教程以 Mojave 为例,实际上安装 High Sierra 与其类似。

这篇安装 macOS Mojave 的教程改编自 Kholia 的 OSX-KVM 项目。那里有更详细的文档可以帮助我们启用一些额外功能并诊断问题。

必要条件

假设你已经安装好了 Proxmox 5.4。同时你也需要 Mac 系统用来从 App Store 下载 Mojave 并制作 ISO。

Proxmox 主机 CPU 必须支持 SSE 4.2,所以对于 Intel 来说,CPU 必须至少是 Nehalem 架构,即第一代 Core i5/i7,更老的 CPU 将会导致安装完成后 Finder 重复崩溃(图形代码中存在非法指令集)。

显然,现代 AMD CPU 也支持 SSE 4.2,同时可以不做任何修改的利用这个教程来安装(Bulldozer 应该可以,当然还有 Ryzen),但是我自己并没有测试过。

第一步:创建安装 ISO

1.先去http://dosdude1.com/mojave/  下载最新版macOS Mojave Patcher,

mac 13 14.4最新版本都可以运行 macOS Mojave Patcher
菜单栏-tools-download macOS-YES
然后选中 Downloads,右下角Select Save Location 确认

然后等待下载完成 就可以把macOS Mojave Patcher关了

2.终端依次输入

hdiutil create -o /tmp/Mojave -size 8000m -layout SPUD -fs HFS+J
hdiutil attach /tmp/Mojave.dmg -noverify -mountpoint /Volumes/install_build
sudo ~/Downloads/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/install_build

PS:这条命令,老外的连接里面有点小问题/Downloads/前面少了个~,原文运行会出错

然后把桌面上的install macos mojave的磁盘推出

hdiutil convert /tmp/Mojave.dmg -format UDTO -o ~/Downloads/Mojave
mv ~/Downloads/Mojave.cdr ~/Downloads/Mojave.iso

运行完在下载目录就是生成的最新的mojave安装光盘

准备一个 Clover 镜像

我们将使用 Clover 作为 Mojave 的启动器。

下载 这个 Clover 磁盘镜像(用 kholia 的编译脚本 从 Clover r4674 制得),解压并上传至 Proxmox 的 ISO 存储文件夹 /var/lib/vz/template/iso。尽管扩展名是 .iso,但这其实是一个硬盘镜像。(之所以用这种方式,是因为 Proxmox 提供了很好的工具来存储和选择 .iso 文件)

获取 OSK 认证 key

macOS 会检查是否运行在真实 Mac 硬件上,在第三方硬件上会拒绝启动。你可以读取真实 Mac 硬件的认证 key (OSK key)来绕过这个限制。编译运行这个页面的第一段代码(需要安装 XCode),会输出 64 字符的 OSK,记下它。

gcc -Wall -o smc_read smc_read.c -framework IOKit
./smc_read

每台 Mac 都使用相同的 OSK,所以不必惊讶它看起来不像随机字符串。

创建虚拟机

通过 Proxmox web UI,按照以下步骤创建虚拟机。

名称随意,记下虚拟机 ID。

选择上传的 Clover ISO,系统类型选择 Other

设置显卡为 标准 VGA,SCSI 控制器为 默认 (LSI 53C895A),BIOS 为 OVMF (UEFI),机器类型为 q35,添加 EFI 磁盘。

设置磁盘大小,总线设为 IDE(注意选择为 SATA 时,安装完系统后主硬盘会显示成 External),注意格式设置为 QEMU映像格式 (qcow2) 的话会降低部分性能,但支持快照等功能,缓存改为 Write back (不安全)

设置虚拟机核心数(注意有些核心数可能会导致问题,优先选择 4,可以尝试 2、4、2*4 等等),设置类别为 Penryn

推荐设置 4G 以上的内存,禁用 Ballooning 设备,因为在 macOS 下没有驱动。

网络模型保持为默认的 Intel E1000

最后确认参数,没有问题的话点击完成。

切换到 选项 页面,确保 使用平板指针 为 

切换到 硬件 页面,添加 CD/DVD 驱动器 到总线 SATA0(如果主硬盘设置到了 SATA0,这里则选择 IDE0),选择 Mojave 安装镜像。

此时先不要急于启动虚拟机,SSH 到 Proxmox 服务器,还需要对虚拟机配置文件做些修改。

用 nano/vim 编辑 /etc/pve/qemu-server/虚拟机-ID.conf,加入这一行(用获取到的 OSK 替换相应位置)。

args: -device isa-applesmc,osk="THE-OSK-YOU-EXTRACTED-GOES-HERE" -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2

告诉 macOS 当前 CPU 是 Penryn(否则的话似乎不会启动),但是要用所有在 Nehalem 中发现的新的 CPU 特性,对 macOS 来说这是必须的,另外加上了一些后代的可选功能(AVX/AES)。

找到定义 Clover ISO 的那一行(ide2),用 cache=unsafe 替换 media=cdrom

在 net0 那一行,修改 e1000 为 e1000-82545em,该型号受到 macOS 支持。

保存文件,返回到 选项 页面,修改 引导顺序 1 为 IDE2(Clover 镜像)。最终配置文件应该类似如下

args: -device isa-applesmc,osk="THE-OSK-YOU-EXTRACTED-GOES-HERE(c)AppleComputerInc" -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
balloon: 0
bios: ovmf
boot: cdn
bootdisk: ide2
cores: 8
cpu: Penryn
efidisk0: local-lvm:vm-104-disk-0,size=128K
ide0: local:iso/Mojave.iso,media=cdrom,size=8000M
ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe
machine: q35
memory: 4096
name: Mac
net0: e1000-82545em=EE:B0:A1:B2:02:8E,bridge=vmbr0,firewall=1
numa: 0
ostype: other
sata0: HDD:vm-104-disk-0,cache=unsafe,size=50G
smbios1: uuid=d4ba5524-87a2-426f-96b3-6c8988059e1b
sockets: 1
vga: std
vmgenid: f48a358c-4598-42dd-a610-d7090f52821e
ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc

设置 Proxmox

SSH 进入 Proxmox 服务器,执行 echo 1 > /sys/module/kvm/parameters/ignore_msrs 来避免 macOS 启动循环。若要使该设置在 Proxmox 启动时仍然生效,则执行:

echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf
update-initramfs -k all -u

另外还需要安装一个修补过的 Proxmox OVMF 库从而可以启动 Mojave。
下载 pve-edk2-firmware_1.20190312-1_all.deb,上传至 Proxmox 服务器任意位置,并执行下列命令安装

OVMF

dpkg -i pve-edk2-firmware_1.20190312-1_all.deb
# 阻止将来被 apt upgrade 替换
apt-mark hold pve-edk2-firmware

安装 Mojave

现在,启动虚拟机。

切换到 控制台 页面,在出现 Proxmox logo 时快速按下 Escape 或者 F2 进入 OVMF 设置界面。如果键盘没反应,关闭控制台,停止虚拟机,再启动虚拟机重新进入控制台。如果按下 Escape 依然无法进入设置界面的话,请确保虚拟机硬件设置中机器类型为 q35

依次选择 Select Device Manager – Select OVMF platform configuration – Change Preferred 修改为 1024x768Commit Changes and Exit – Reset(不要选择 Continue)。
为了避免启动时花屏或者挂起,这个步骤是必须的(Clover 分辨率必须匹配 OVMF 分辨率)。

请注意,之后你可能会发现首次启动虚拟机时分辨率并未应用到 1024×768,直到你在 Clover 菜单中选择重启(或者重置虚拟机)。当 Proxmox logo 由于分辨率过低而填满大部分屏幕时会注意到这种情况。(注:该句意思不明确

第一步安装之后,虚拟机会自动重启,进入 Preboot,然后再一次重启进入 Filevault Prebooter。(PS:主要耗时在第二阶段)

至此,安装完成。

把 Clover 安装至主硬盘

目前虚拟机是用 Clover CD 启动,我们可以把 Clover 安装到主硬盘上。打开终端,运行 diskutil list 来看看有哪些可用驱动器。

使用 sudo dd if=<source> of=<dest> 来从 Clover CD 拷贝 EFI 分区覆盖到主硬盘的 EFI 分区。上图中 Clover CD 是那个较小的带有 Linux Filesystem 分区的磁盘,主硬盘是大容量并包含 Apple_APFS 容器分区的那个。

我这里这两个分区分别是 disk1s1 和 disk0s1,所以执行

sudo diskutil mount disk1s1
sudo dd if=/dev/disk1s1 of=/dev/disk0s1

注意:如果你打错了分区,将会擦除错误的磁盘,需要再次安装)。

现在关闭虚拟机,从 硬件 选项卡 分离 Clover 并 移除 Mojave 光驱。切换到 选项 页面,修改引导顺序为 IDE0。如果一切顺利,你将会看到如下画面,然后选择 Boot macOS from macOS 启动系统。

睡眠管理

我发现无法通过鼠标或者键盘唤醒睡眠状态的 Mojave,你可以选择从节能设置中禁用睡眠来避免这一问题,或者可以在 监视器页面中执行 system_wakeup 手动唤醒虚拟机。

USB 直通

Proxmox 有一篇 USB 直通的详细的文档

概括而言,在 监视器 选项卡中输入 info usbhost 来获取连接到 Proxmox 的 USB 设备:

# info usbhost
Bus 1, Addr 3, Port 3, Speed 12 Mb/s
Class 00: USB device 24ae:1813, Rapoo 2.4G Wireless Device
Bus 1, Addr 4, Port 1, Speed 12 Mb/s
Class ef: USB device 05ac:8290, Bluetooth USB Host Controller

然后 SSH 到 Proxmox 服务器,执行以下代码来直通想要的 USB 设备。

qm set YOUR-VM-ID-HERE -usb1 host=24ae:1813
qm set YOUR-VM-ID-HERE -usb2 host=...

重启虚拟机即可应用。

或者也可以利用 Proxmox 的 PCIe 直通功能把整个 USB 控制器直通给虚拟机。

显卡直通

虚拟机分辨率设置

有一个简单的小技巧是,在打开「系统偏好设置」-「显示器」后,按住「Option」键再点击「缩放」。

N卡驱动

PVE-MAC

highsierra

虚拟机显卡直通



未经允许不得转载:多米诺骨牌 » 在 Proxmox 5.4 上安装 macOS High Sierra/Mojave
分享到:

评论 抢沙发

提交评论

  •   昵称 (必填)
  • 邮箱 (必填)
  • 网址 (选填)