前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Proxmox 6.2 上安装 macOS Big Sur 虚拟机

在Proxmox 6.2 上安装 macOS Big Sur 虚拟机

原创
作者头像
欧巴云
修改2021-08-04 18:10:09
3.7K0
修改2021-08-04 18:10:09
举报
文章被收录于专栏:木子说木子说

文章声明:此文基于木子实操撰写,本教程仅做为技术分享,请支持正版

生产环境:Proxmox 6.2-11, macOS Big Sur

问题关键字:macOS,macOS Big Sur,macOS Big Sur 虚拟机安装


前提要求

macOS对于苹果APP开发的同学来说是非常重要的,对互联网企业的持续集成与持续发布来说更是不可或缺,此次仅分享如何在Proxmox上安装macOS Big Sur,至于显卡直通、USB直通,不在本次的分享范围。本教程使用OpenCore安装macOS Big Sur至Proxmox 6.2虚拟化平台。首先确保您已经安装了Proxmox 6.x,另外您还需要一台真正的Mac电脑才能获取OSK密钥。另外您的Proxmox主机的CPU必须支持SSE 4.2,因此对于Intel,您的CPU必须至少需要Intel Nehalem微架构及以上版本,Intel Nehalem是第一代带有Core i5/i7品牌标识的CPU。较旧的CPU会导致finder在安装完成后反复崩溃(图形代码中出现非法指令异常)。现在AMD CPU也支持SSE 4.2,所以同样可以采用此操作指南。

<!-- more -->

制作BigSur镜像

如果您有Mac电脑,可以直接制作macOS Big Sur完整镜像,这样在安装的时候不需要从互联网下载镜像,安装速度相对于采用网络恢复模式来安装macOS Big Sur来说会快很多,但完整镜像制作只支持在Mac电脑上操作,不支持Linux操作系统,Linux操作系统只支持制作恢复镜像。

macOS上操作

代码语言:txt
复制
xcode-select --install
git clone https://github.com/thenickdude/OSX-KVM.git
cd OSX-KVM/scripts/bigsur
make BigSur-full.img

Linux上操作

代码语言:txt
复制
apt install qemu-utils make
git clone https://github.com/thenickdude/OSX-KVM.git
cd OSX-KVM/scripts/bigsur
make BigSur-recovery.img

镜像制作完成以后,将BigSur-full.imgBigSur-recovery.img文件上传到您的Proxmox的ISO存储目录(通常为/var/lib/vz/template/iso)。

准备OpenCore镜像

下载最新版本的OpenCore.iso.gz文件,解压后,将对应ISO文件上传至Proxmox的ISO存储目录(通常为/var/lib/vz/template/iso)。

获取OSK身份验证密钥

macOS检查它是否在真正的Mac硬件上运行,并拒绝在第三方硬件上启动。您可以通过从真实Mac硬件中读取身份验证密钥(OSK 密钥)来解决此问题。将本页的第一个C代码块保存为smc_read.c,在命令提示符下,切换到与该文件相同的目录并运行:

代码语言:txt
复制
# 因为需要使用gcc,所以需要安装xcode-select
xcode-select --install
# 编译
gcc -o smc_read smc_read.c -framework IOKit
# 获取OSK,它会为您打印出64个字符的OSK,记下它。每台Mac都使用相同的OSK。
./smc_read
xxxxxx(c)AppleComputerInc

创建虚拟机

记住对应VM ID,后面需要修改对应配置文件。

选择您上传的OpenCore ISO,并将操作系统类型设置为:Other。

将图形设置为:VMWare Compatible,将BIOS设置为OVMF(UEFI),将Machine设置为Q35,勾选QEMU Agent,勾选添加EFI Disk,并选择存储,木子这里为SSD。

设置硬盘大小为:100GB或更大。设置总线为:VirtIO Block,勾选“丢弃”,以支持TRIM。

设置VM的核心数,使用2的幂(例如 1、2、4、8)。将CPU设置为:Penryn,勾选:启用NUMA。

设置内存:16GB

网络模型设置为:VMWare vmxnet3,其它信息根据自己的实际情况进行设置。

点击完成。

添加CD/DVD驱动器

选择对应macOS BigSur镜像,并将对应总线设置为:IDE0。

在VM的选项页面中,将使用平板指针设置为是。

修改虚拟机配置文件参数

暂时不要启动VM。首先,通过SSH连接到您的Proxmox服务器,以便我们可以对配置文件进行一些编辑。编辑/etc/pve/qemu-server/VM-ID.conf。添加这一行,确保将您之前提取的OSK替换到正确的位置:

代码语言:txt
复制
args: -device isa-applesmc,osk="xxxxxx(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2

这里添加了一个USB键盘,因为macOS不支持QEMU的默认PS/2键盘。确保参数都在一行上!

我们还需要添加一个-cpu参数。如果您的主机CPU是Intel,请将其添加到args行的末尾:

代码语言:txt
复制
-cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc

如果您的主机CPU是AMD,或者上述参数对您不起作用,请使用此更兼容的替代方案:

代码语言:txt
复制
-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check

这会假装您的CPU是Penryn,即使您的主机CPU是AMD,它也会让macOS运行,并在上面添加了一堆更新的必需和可选的CPU功能。您的主机CPU不支持的功能将被忽略(使用启动时将向控制台打印警告qm start 1xx),但请注意如果没有SSE4.2支持,macOS将无法运行。

现在找到定义两个ISOide0ide2)的行,并从中删除media=cdrom部分,在其位置添加cache=unsafe,这会将其视为硬盘而不是DVD驱动器。设置引导磁盘bootdiskIDE2启动(即OpenCore 映像),保存您的更改。

您的最终VM配置文件应类似于:

代码语言:txt
复制
root@S001:~# cat /etc/pve/qemu-server/120.conf
args: -device isa-applesmc,osk="xxxxxx(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc
balloon: 0
bios: ovmf
boot: dcn
bootdisk: ide2
cores: 4
cpu: Penryn
efidisk0: SSD:vm-120-disk-1,size=1M
ide0: local:iso/BigSur-full.img,cache=unsafe,size=14G
ide2: local:iso/OpenCore-v13.iso,cache=unsafe
machine: q35
memory: 16384
name: macOSBugSur
net0: vmxnet3=5E:89:04:45:DC:A6,bridge=vmbr1,tag=3
numa: 1
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=c9b7e2bf-6c52-4065-a588-380fa9a9a20a
sockets: 2
vga: vmware
virtio0: SSD:vm-120-disk-0,cache=unsafe,discard=on,size=100G
vmgenid: d795b429-82b1-4cb8-840b-26f5b94c0cb2

配置Proxmox

在Proxmox上运行以下命令,以避免在macOS启动期间出现引导循环。

代码语言:txt
复制
# 临时生效
echo 1 > /sys/module/kvm/parameters/ignore_msrs
# 永久生效
echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u

安装macOS Big Sur

现在启动您的虚拟机,它应该启动到OpenCore启动选择器,选择Install macOS Big Sur,按Enter启动。

在这里等待的时间会比较长,不要着急。

初始化磁盘,选择Disk Utility,点击Continue。

点击Erase,在弹出的擦除框中进行以下设置:

Name:macOS Big Sur(名字随便,默认为Untitled)

Format:APFS

Scheme:GUID Partition Map

再点击Erase,完成磁盘格式化,退出磁盘工具。

点击Install macOS Big Sur,开始安装macOS Big Sur。

点击Continue

点击Agree

选择您刚刚擦除的磁盘,用于安装macOS Big Sur,开始安装。

安装第一阶段相对时间比较长,第一阶段以后,虚拟机会连续重启3到4次,每次都必须选择macOS Installer选项(这里是第二个,带有硬盘图标)才能继续安装。它不会自动为您选择:

安装完成以后,选择要启动的主磁盘的名称(木子的名为:Untitled)。

安装完成,启动macOS Big Sur,开始初始化配置。

初始化macOS Big Sur

初始化过程没有什么太多好说的,主要是国家选择、数据迁移等,这里略过。

选择China mainland

中间的步骤略过,包括设置账号密码、数据迁移等,初始化完成。

设置OpenCore永久引导

我们目前正在从附加的OpenCore ISO中使用OpenCore进行引导。让我们将其安装到硬盘驱动器上。打开终端并运行diskutil list以查看我们有哪些驱动器可用。使用sudo dd if=<source> of=<dest>从OpenCore CD复制EFI分区并覆盖硬盘上的EFI分区。OpenCore CD是一个小磁盘(~150MB),上面只有一个EFI分区,主硬盘是一个大(>30GB)名称带Apple_APFS Container的硬盘。

以木子的为例:OpenCore ISO的EFI分区为:disk0s1,主硬盘的EFI分区为:disk1s1,所以木子这里运行sudo dd if=/dev/disk0s1 of=/dev/disk1s1(注意不要覆盖错误,不然您得重新开始安装系统!)。

现在关闭VM,并从硬件选项卡中删除OpenCore和Big Sur安装程序驱动器。

在选项选项卡上,编辑引导顺序以将virtio0磁盘作为第一引导项。

开机,如果一切顺利,您应该会看到OpenCore启动菜单,选择Untitled磁盘来启动macOS Big Sur。

睡眠管理

木子发现无法使用鼠标或键盘将macOS Big Sur从睡眠中唤醒。如果遇到同样的问题,您可以在Big Sur的节能设置中禁用系统睡眠以避免该问题,或者您可以通过运行以下命令手动从Proxmox中唤醒虚拟机:

代码语言:txt
复制
qm monitor VM-ID
system_wakeup
quit

参考文献

1(https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/)


五平台同步更新:

博客: 欧巴云

知乎: 欧巴云

51CTO: 欧巴云

云+社区: 欧巴云

微信公众号: 欧巴云

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提要求
  • 制作BigSur镜像
  • 准备OpenCore镜像
  • 获取OSK身份验证密钥
  • 创建虚拟机
  • 修改虚拟机配置文件参数
  • 配置Proxmox
  • 安装macOS Big Sur
  • 初始化macOS Big Sur
  • 设置OpenCore永久引导
  • 睡眠管理
  • 参考文献
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档