先決條件:
- 8G或以上內存
- 支持虛擬化以及SSE4.2的cpu
包括AMD與INTEL
1 安裝PVE
安裝教程
此處安裝方法與一般的方法相同,推薦將pve系統安裝到usb設備
2 創建macos安裝鏡像
在linux或macos系統下運行以下命令
wget https://raw.githubusercontent.com/thenickdude/OSX-KVM/master/fetch-macOS.py
chmod +x fetch-macOS.py
./fetch-macOS.py
在選單中選擇最新的iso,等待下載完成後,運行以下命令,將dmg包轉換成iso包
# 安裝dmg2img 若你是deb包管理系以外的系統,可以自行查找如何安裝dmg2img
apt-get install dmg2img -y
# 利用dmg2img將基本系統dmg鏡像轉為iso鏡像
dmg2img BaseSystem.dmg Mojave-installer.iso
# 若你是macOS,請使用以下命令
hdiutil convert BaseSystem.dmg -format RdWr -o Mojave-installer.iso
mv Mojave-installer.iso.img Mojave-installer.iso
然後下載Clover
# Ubuntu & Debian
apt-get install unzip -y
# Centos & RHEL
yum install unzip -y
# 取得clover
wget https://github.com/thenickdude/OSX-KVM/releases/download/clover-r4920/clover-r4920.iso.zip && unzip clover-r4920.iso.zip
然後將clover-r4920.iso與Mojave-installer.iso上傳到PVE中
3 在網頁中創建虛擬機
- OS頁面選擇Clover ISO進行引導
- 系統選擇其他(other)
- System頁面的顯示卡選擇VMware兼容
- BIOS選擇OVMF
- Machine選擇q35
- 硬盤選擇SATA,緩存設置成Write back(不安全)
- CPU的類型設置成Penryn
- 網卡設置成Vmware vmxnet3
點開虛擬機的硬件選項卡,添加Mojave-installer.iso,選擇ide通道的cd-ram
先不要啟動虛擬機,在ssh中打開/etc/pve/qemu-server/你的VMID.conf
nano /etc/pve/qemu-server/你的VMID.conf
然後輸入以下代碼
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(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
將兩個驅動器的配置中的cdrom刪除,加入cache=unsafe
最後的文檔應該看起來像這樣
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(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: 4
cpu: Penryn
efidisk0: vms:vm-144-disk-1,size=128K
ide0: isos:iso/Mojave.iso,cache=unsafe
ide2: isos:iso/clover-r4920.iso,cache=unsafe
machine: q35
memory: 8192
name: mojave
net0: vmxnet3=xx:xx:xx:xx:xx:xx,bridge=vmbr0,firewall=1
numa: 0
ostype: other
sata0: vms:vm-144-disk-0,cache=unsafe,size=64G
smbios1: uuid=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
sockets: 1
vga: vmware
設置完畢後,根據patch-ovmf-to-support-macos-in-proxmox-5-1 來安裝OVMF庫
For PVE 6
# Add missing locale
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
export LC_ALL=en_US.UTF-8
# Add tools and build dependencies:
apt update
apt install build-essential git lintian debhelper iasl nasm \
python uuid-dev gcc-aarch64-linux-gnu bc python3-distutils -y
# Clone my patched source
git clone -b macos-support-proxmox-6.0 https://github.com/thenickdude/pve-edk2-firmware.git
# Build it
cd pve-edk2-firmware
make
dpkg -i pve-edk2-firmware_*.deb
# Prevent it from being replaced later by apt upgrade:
apt-mark hold pve-edk2-firmware
4 設置直通
首先,編輯grubvim /etc/default/grub
將GRUB_CMDLINE_LINUX_DEFAULT="quiet"改為GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
(若是amd則改為amd_iommu=on)
執行update-grub命令更新grub信息
最後輸入dmesg | grep -e DMAR -e IOMMU命令檢查是否有錯
然後編輯/etc/modules nano /etc/modules
在最尾加入以下四行
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
再次輸入dmesg | grep ecap命令檢查設備是否支持iommu
然後執行以下命令將驅動加入黑名單
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
執行update-initramfs -u命令更新信息
執行lspci,找出顯卡的代號(例如01:00),然後執行lspci -n -s 01:00
得到類似以下的輸出
01:00.0 0300: 10de:1d01 (rev a1)
01:00.1 0403: 10de:0fb8 (rev a1)
其中10de:1d01與10de:0fb8是vendor IDs
將vendor IDs指定到VFIO模塊
echo "options vfio-pci ids=10de:1d01,10de:0fb8" > /etc/modprobe.d/vfio.conf
進入web管理介面
- 在vm的硬件選項卡中編輯添加PCI設備
- 選定顯卡對應的
01:00.0與01:00.1 - 在
01:00.0(顯示設備)中勾選- PCI-Express
- All Functions
- 主GPU
- 檢查文件
/etc/pve/qemu-server/YOUR-VM-ID.conf- 確保01:00後的參數正確
e.g.hostpci0: 01:00,x-vga=1,pcie=1
然後,直通鼠標鍵盤到VM中,添加USB設備,選擇鼠標鍵盤,然後添加到VM
5 安裝Mojave
現在啟動你的虛擬機,若你設置了直通,啟動的一瞬間會發生以下事情
- 連接在你顯卡的顯示器應該會從PVE的ttl介面變為黑屏,然後變成OVMF UEFI啟動介面。
- 你的鍵盤鼠標這時候也可以直接控制虛擬機。
在啟動的時候趕快按下F2以進入OVMF設置畫面。
- 進入Device Manager
- 選擇OVMF platform configuration
- 設置分辨率為1920x1080
- 保存設置
- 在根菜單下選擇Reset(不是continue)
然後你應該進入了Clover,接下來跟著指引安裝系統
全部安裝完畢之後,再次啟動時
- 手動按下F2
- 選定Clover啟動項
然後才會看到磁盤內的Mac系統。
進入Mac系統後,打開終端,輸入diskutil list
以檢查設備
然後輸入sudo dd if= of=<硬盤的EFI分區>
將Clover安裝到硬盤中
你也可以忽略這一步,將Clover CD永久掛載在虛擬機下
關機,移除CLover CD,從硬盤啟動。