kvm手动运行macos 13 ventura

尝试不使用pve unraid等搭建一个macos ,并在后续直通显卡 蓝牙 wifi usb

宿主机器:archlinux ,已经安装了qemu 安装过程很简单查看这里: https://dev.leiyanhui.com/kvm/arch-install-kvm/

宿主机硬件情况:

cpu:qnct魔改,实际是 i7 8850h es
主板:技嘉一体机主板 b150m pio si r3
内存:32G  ddr4
显卡:只有核显,主板有hdmi 和dp 接口,用的HDMI
板载声卡:ALC887
板载网卡:RTL8168
wifi和蓝牙:博通 43224AG  /别名:bcm943224PcieBT2
硬盘:一块 512G nvme kioxia 一块 2.5寸机械盘
分区情况:nvme盘 efi分区 放了一个winpe,另外就arch的引导
          / 分区 EXT4 ,5G 只安装了arch基本系统+qemu base
          / 另外一个分区  EXT4分区格式,用来存虚拟机的虚拟磁盘文件 挂载到 /mnt/EXT4
        机械盘 只一个分区 exfat格式,挂载到 /mnt/hdd  里面存放虚拟机镜像 各种iso 以及 重要文件的备份

# 准备工作:

  • 安装OVMF sudo pacman -S ovmf 记得/usr/share/edk2-ovmf/x64/OVMF.fd
  • opencore 后文
  • Ventura 恢复镜像Ventura-recovery.img 后文

# opencore 获取

1
2
3
cd /mnt/ext4
wget https://github.com/thenickdude/KVM-Opencore/releases/download/v19/OpenCore-v19.iso.gz
gzip -d OpenCore-v19.iso.gz

这个iso文件实际是一个img文件,所以直接重命名OpenCore-v19.img 即可

# Ventura 恢复镜

直接用网上一些dmg用qemu转换也可以,或者用这个项目获取在线恢复镜像(网络安装,安装速度会略慢,第三方打包的dmg是离线安装速度好很多) 我用的是小兵的dmg镜像 我之前已经获取到了,建议创建一个docker ubuntu18,尽量别在宿主机搞,在docker 里面搞定.也可以参考我之前在pve下的记录

sudo apt install qemu-utils make git
git clone https://ghproxy.com/https://github.com/thenickdude/OSX-KVM.git
cd ./OSX-KVM/scripts/ventura
make Ventura-recovery.dmg
# 有执行 qemu-img convert BaseSystem.dmg -O raw Ventura-recovery.dmg 那么这个最终的dmg其实已经是raw文件了
mv Ventura-recovery.dmg Ventura-recovery.img
用sftp 或者其他方法 吧文件复制到宿主机,

如果用小兵的,需要转换一下格式qemu-img convert -f dmg -O qcow2 小兵的dgm文件名.dmg xiaobing.qcow2

# 准备好的文件

/usr/share/edk2-ovmf/x64/OVMF.fd 虚拟OVMF-bois-efi 安装ovmf后就有了 /mnt/exfat/OpenCore-V19.img 针对kvm优化过的通用opcencore 引导
/mnt/exfat/Ventura-recovery.img macos13 恢复镜像 , /mnt/exfat/macos-13.img 用于安装macos的空白虚拟磁盘 qemu-img create -f raw -o size=32G /mnt/ext4/macos-13.img qcow2也可以。我喜欢raw 通用性好一些 可选
/mnt/hdd/iso/pe/FirPE-V1.8.1.iso 一个集成部分virtio驱动winpe win下下载运行 创建iso即可 https://firpe.cn/ 参考pve的配置文件: https://github.com/joyanhui/file.leiyanhui.com/blob/main/pve-unraid-kvm/100.macbase.conf

# 安装前的思考

因为是第一次脱离pve或者unraid安装黑苹果,尽量采用pve下的黑苹果已经成功的方式, 比如 q35机型 OVMF(uefi) VMware显卡 cpu Penryn 还有部分 args参数
部分内容参考: https://github.com/kholia/OSX-KVM/blob/master/OpenCore-Boot.sh
cpu核心数 应该是只可以用 2 4 8 16 32 这样的,我是6核12线,所以8
之前在kvm下部署成的配置文件 https://github.com/joyanhui/file.leiyanhui.com/blob/main/pve-unraid-kvm/100.macbase.conf 关键是这行

args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc 网络部分,我为了简单管理,还是使用用户模式
另外vnc远程远远没有苹果的ARD协议速度好 需要映射 一下端口进去 5900 3283 22 其中22是tcp,其他两个tcp/udp 都要
苹果官网 在关于远程桌面 网络指南中有提示这三个端口:https://support.apple.com/zh-cn/guide/remote-desktop/welcome/mac
hostfwd=tcp::15900-:5900,hostfwd=udp::15900-:5900,hostfwd=tcp::13283-:3283,hostfwd=udp::13283-:3283,hostfwd=tcp::1222-:22 主硬盘尽量用virio,kholia/OSX-KVM/blob/master/OpenCore-Boot.sh 给的例子是ide的

1
2
-drive id=MacHDD,if=none,file="/mnt/ext4/macos-13.img",format=raw \
-device ide-hd,bus=sata.4,drive=MacHDD \

改一下 直接用drive 挂载

1
-drive index=1,media=disk,format=raw,if=virtio,file=/mnt/ext4/macos-13.img \ 

# 修改一下 opencore

可以不改,下面配置可以直接启动,后期要直通硬件 再修改即可

# 尝试启动安装

看了参数 -boot [order=drivers][,once=drives] 定义设备的引导次序,每种设备使用一个字符表示。a,b 表示软驱,c表示第一块硬盘,d表示第一个光驱,n-p 表示网络适配器。 -boot order=dc,once=d 或者 -boot menu=on

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo pacman -S screen
screen -S mac
    
qemu-system-x86_64 -enable-kvm -machine pc-q35-7.1  -m 8G \
-boot menu=on \
-usb -device usb-kbd -device usb-tablet \
-netdev user,id=net0,hostfwd=tcp::15900-:5900,hostfwd=udp::15900-:5900,hostfwd=tcp::13283-:3283,hostfwd=udp::13283-:3283,hostfwd=tcp::1222-:22 \
-device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27 \
-device usb-ehci,id=ehci \
-device nec-usb-xhci,id=xhci \
-global nec-usb-xhci.msi=off \
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" \
-smbios type=2  \
-device ich9-intel-hda -device hda-duplex \
-device ich9-ahci,id=sata \
-smp 8,sockets=1,cores=4 \
-cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc \
-bios /usr/share/edk2-ovmf/x64/OVMF.fd \
-drive id=OpenCoreBoot,if=none,snapshot=on,format=raw,file="/mnt/ext4/OpenCore-V19.img" \
-device ide-hd,bus=sata.2,drive=OpenCoreBoot \
-drive index=0,media=disk,format=qcow2,if=virtio,file=/mnt/ext4/xiaobing.qcow2 \
-drive index=1,media=disk,format=raw,if=virtio,file=/mnt/ext4/macos-13.img \
-drive index=3,media=cdrom,file=/mnt/hdd/iso/virtio-win-0.1.225.iso \
-drive index=4,media=cdrom,file=/mnt/hdd/iso/pe/FirPE-V1.8.1.iso \
-vga vmware \
-vnc  :1

如果 用OSX-KVM的恢复镜像,就上面Install_macOS_Ventura_13 或者 xiaobing.qcow2那行改为下面这两行

-device ide-hd,bus=sata.3,drive=InstallMedia \
-drive id=InstallMedia,if=none,file="/mnt/exfat/Ventura-recovery.img",format=raw \

# vnc连接开始安装

vnc 链接 宿主机器ip:5901 开机 先按下 esc 选择cdrom 启动到pe 检查一下 基本的硬件情况,因为这个pe 没有集成 virtio-net-pci的驱动,所以每次进去需要手动安装一下驱动
安装之前 先safari打开网站 测试,可以顺利联网,继续安装

因为macos还需要继续完善,所以暂时不添加到开机启动里面,可以丢到screen里面 运行

没有意外 直接成功

# kvm 进阶和相关小问题处理

查看这里 https://dev.leiyanhui.com/kvm/all_list/

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计