۱۴۰۵ آبان ۱۹, سه‌شنبه

راهنمای گام به گام اجرای macOS در Proxmox VE

مفهوم مجازی‌سازی اکنون در همه جا وجود دارد و ابزارهای محبوبی مانند Docker، Virtualbox، Hyper-V و Vmware نقش بسزایی در محبوبیت آن دارند. مجازی‌سازی را می‌توان به عنوان فرآیند ایجاد یک نسخه مجازی از چیزی مانند پلتفرم سخت‌افزاری کامپیوتر، سیستم عامل، دستگاه ذخیره‌سازی یا منابع شبکه تعریف کرد. سپس می‌توان از جلسات مجازی ایجاد شده برای اجرای چندین سیستم عامل یا برنامه بر روی یک دستگاه فیزیکی واحد استفاده کرد و انعطاف‌پذیری و کارایی بیشتری در استفاده از منابع ایجاد کرد. Step by Step Guide For Running macOS on Proxmox VE Klinsmann Öteyo Updated Apr 12, 2024 · 9 min read The concept of virtualization is now everywhere with popular tools such as Docker, Virtualbox, Hyper-V, and Vmware playing a huge part in its popularity. Virtualization can be defined as the process of creating a virtual version of something, such as a computer hardware platform, operating system, storage device, or network resources. The created virtual sessions can then be used to run multiple operating systems or applications on a single physical machine, allowing greater flexibility and efficiency in resource utilization. Original content from computingforgeeks.com - post 136005 One of the recent virtualization tools to be introduced is Proxmox. This is free and open-source software, licensed under the GNU Affero General Public License. However, there is also a paid enterprise version called Proxmox VE Subscription, that offers additional features and professional support. Today, we will learn how to run macOS on Proxmox VE. This is made possible via the KVM-Opencore which is a fork of Leoyzen’s OpenCore image for QEMU/KVM, which has been extended to add a build system for automatically building all of the required files from source code and to keep up with the latest OpenCore changes. This has been tested to boot macOS Catalina, Big Sur, and Monterey, but will likely also boot older versions of macOS. Although the images provided are for QEMU/KVM distributions, they can still be built to work for Promox. Now let’s dive in! Setup Prerequisites For this guide, you need to have Proxmox 7 installed. This can be done by following the below guides: How To Install Proxmox VE 8 on Debian 12 (Bookworm) How To Install Proxmox VE 7 on Debian 11 (Bullseye) Install Proxmox VE 7 on Hetzner root server How To Install Proxmox VE 7 on OVH Dedicated Server The Proxmox host should have: CPU with support SSE 4.2 First CPU generation bearing the “Core” i5/i7 branding Homelab hardware macOS guests want plenty of RAM and a CPU with strong single-thread speed. The Proxmox mini PC shortlist covers small hosts that run guests like this without a rack server. Create macOS Installation ISO We will build an ISO for installation from the OSX-KVM repository. First. download the copy onto your machine: git clone https://github.com/thenickdude/OSX-KVM Copy If you are building the ISO on a Linux host, you need to install the below packages: ##On Debian/Ubuntu sudo apt update sudo apt install qemu-utils make Copy Now navigate into the directory: cd OSX-KVM/scripts/monterey Copy Now create the image: ##For Minimal_Image make Monterey-recovery.img ##For Full_Image(on MacOS only) make Monterey-full.img Copy The above command will download the Monterey installer from Apple’s software distribution servers and create the Monterey-recovery.img file. This image will be used later to run the installation on Proxmox. With the minimal image, you need internet during the installation to download any required files. For the full image, no Internet is required. Upload the image file to the Proxmox ISO store, normally at /var/lib/vz/template/iso. You can use the command below: sudo cp Monterey-recovery.img /var/lib/vz/template/iso/ Copy Prepare an OpenCore image For this step, you need to download the OpenCore image. Although it has a .iso extension, this is a hard disk image. Download the file from the GitHub release page. You can also use the commands below: ##Export the Version URL=$( curl -s https://api.github.com/repos/thenickdude/KVM-Opencore/releases/latest|grep browser_download_url|cut -d '"' -f 4|grep .iso.gz) ##Pull the file wget $URL Copy Now extract the file: gunzip -v OpenCore-*.iso.gz Copy Now upload this ISO to the Proxmox ISO store, normally at /var/lib/vz/template/iso. sudo cp OpenCore-*.iso /var/lib/vz/template/iso Copy Fetch the OSK authentication key During the installation, macOS checks that it is running on real Mac hardware, it refuses to boot if it’s running on third-party hardware. You can find a way around this by using obtaining an authentication key out of your real Mac hardware. You can obtain the OSK key on your Mac machine using the below steps: Create the below file: $ vim smc_read.c /* * smc_read.c: Written for Mac OS X 10.5. Compile as follows: * * gcc -Wall -o smc_read smc_read.c -framework IOKit */ #include #include typedef struct { uint32_t key; uint8_t __d0[22]; uint32_t datasize; uint8_t __d1[10]; uint8_t cmd; uint32_t __d2; uint8_t data[32]; } AppleSMCBuffer_t; int main(void) { io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleSMC")); if (!service) return -1; io_connect_t port = (io_connect_t)0; kern_return_t kr = IOServiceOpen(service, mach_task_self(), 0, &port); IOObjectRelease(service); if (kr != kIOReturnSuccess) return kr; AppleSMCBuffer_t inputStruct = { 'OSK0', {0}, 32, {0}, 5, }, outputStruct; size_t outputStructCnt = sizeof(outputStruct); kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2, (const void*)&inputStruct, sizeof(inputStruct), (void*)&outputStruct, &outputStructCnt); if (kr != kIOReturnSuccess) return kr; int i = 0; for (i = 0; i < 32; i++) printf("%c", outputStruct.data[i]); inputStruct.key = 'OSK1'; kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2, (const void*)&inputStruct, sizeof(inputStruct), (void*)&outputStruct, &outputStructCnt); if (kr == kIOReturnSuccess) for (i = 0; i < 32; i++) printf("%c", outputStruct.data[i]); printf("\n"); return IOServiceClose(port); } Copy Now in the directory, run the below command: xcode-select --install # If you don't already have gcc gcc -o smc_read smc_read.c -framework IOKit ./smc_read Copy The above commands will output a 64-character string is your OSK. Take note of it. Create the macOS VM on Proxmox Now we will create the macOS virtual machine from the Proxmox web UI as shown. Provide the name of the VM. Take note of the macOS VM ID as it will be used later. Run macOS on Proxmox VE For the ISO, select the OpenCore ISO file. Run macOS on Proxmox VE 1 Set the system as shown. ensure that you set the graphics to VMware compatible, set the machine to q35 and select the Qemu agent and add an EFI disk and set storage for it Run macOS on Proxmox VE 2 Configure the hard disk. The hard disk should be greater than 32 GB Run macOS on Proxmox VE 3 Set the CPU for the VM. Set the type as Penryn Run macOS on Proxmox VE 4 Set the memory: Run macOS on Proxmox VE 5 Make the network configurations. Set the model as VirtIO(paravirtualized) Run macOS on Proxmox VE 6 Now confirm the changes. Do not start the VM yet, we need to make configurations first. Run macOS on Proxmox VE 7 Navigate to the Hardware tab and add a second DVD drive at IDE0. Here, select the Monterey-full.img or Monterey-recovery.img created earlier. Run macOS on Proxmox VE 8 Then access your Proxmox host and make the below configs: sudo vim /etc/pve/qemu-server/YOUR-VM-ID-HERE.conf Copy In the file, make the below changes and provide your OSK created earlier: args: -device isa-applesmc,osk="THE-OSK-YOU-EXTRACTED-GOES-HERE" -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 Copy We have added a USB keyboard since macOS doesn’t support QEMU’s default PS/2 keyboard. Remember, if you fail to provide the OSK key, the system will fail to boot. We also need to add the below CPU argument in the above args area: ##For Intel -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc ##For AMD -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,+rdrand,check Copy This config fools the system into believing that the CPU is Penryn. This will make the MacOS VM happy even if the host CPU is AMD. You can remove the “+invtsc” feature from the list if your CPU doesn’t support it. Finally, find the lines that define “ISOs” (ide0 and ide2) and remove the “,media=cdrom” part and replace it with “,cache=unsafe” This will treat the two ISOs as hard disks and not DVDs. ide0: isos:iso/Monterey-full.img,cache=unsafe,size=14G ide2: isos:iso/OpenCore-v15.img,cache=unsafe,size=150M Copy Now you will have a config appear as below: 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 balloon: 0 bios: ovmf boot: order=ide2;ide0;net0 cores: 2 cpu: Penryn efidisk0: local:100/base-100-disk-0.qcow2,efitype=4m,size=528K ide0: storage1:vm-100-disk-1,cache=unsafe,size=3G ide2: storage1:vm-100-disk-2,cache=unsafe,size=152M machine: q35 memory: 6096 meta: creation-qemu=7.2.0,ctime=1681399367 name: macOS net0: virtio=7A:5B:01:76:0D:0E,bridge=vmbr0,firewall=1 numa: 0 ostype: other scsihw: virtio-scsi-pci smbios1: uuid=c3cf5b1c-2dd3-46cd-ad7b-4b8f9566056c sockets: 1 template: 1 unused0: local:100/base-100-disk-1.qcow2 unused1: local:iso/Monterey-recovery.img unused2: local:iso/OpenCore-v19.iso vga: vmware virtio0: storage1:vm-100-disk-0,iothread=1,size=37G vmgenid: 9b5673d9-0bb6-48ef-b24f-4c9771c65577 Copy Now on the options tab, put IDE2 first on the boot order. Run macOS on Proxmox VE 9 Now run the below command to avoid a boot loop during macOS boot and make the changes persist below reboots: echo 1 > /sys/module/kvm/parameters/ignore_msrs” echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u Copy Install macOS on Proxmox Now start the VM and it should boot into the OpenCore boot picker. Make the below selection “MacOS Base System” Run macOS on Proxmox VE 10 For those who built a full image, you will see “Install macOS Monterey” as the label. The boot will load: Run macOS on Proxmox VE 11 Proceed to the disk utility window: Run macOS on Proxmox VE 12 While here, locate your hard disk(named Apple Inc. VirtIO) and erase it: Run macOS on Proxmox VE 13 Provide a name for it. For this guide, we will call it Main Run macOS on Proxmox VE 14 Once the erasing is complete, close the disk utility window and select Reinstall MacOS: Run macOS on Proxmox VE 15 Agree to the License terms: Run macOS on Proxmox VE 16 Select the disk on which you want to make the installation: Run macOS on Proxmox VE 17 Sit back and wait for the installation to happen. Remember, this can take sometime: Run macOS on Proxmox VE 18 During this stage, your system will reboot severally asking you to manually select the “macOS Installer” option: Run macOS on Proxmox VE 19 Once complete, you will see your disk appear here( ours is labelled Main) Run macOS on Proxmox VE 20 This shows that the installation is complete and we should be able to boot into our hard disk. Proceed with the initial configurations. Select your country: Run macOS on Proxmox VE 21 COnfigure your migration assistant: Run macOS on Proxmox VE 22 Skip this step of signing into your Apple ID until you’ve configured your Mac’s serial number in OpenCore. Otherwise, a Mac device with the default shared serial numbering the OpenCore image will be added to your Apple ID. Run macOS on Proxmox VE 23 Agree to the license terms: Run macOS on Proxmox VE 24 Create a system user: Run macOS on Proxmox VE 25 Set your TimeZone: Run macOS on Proxmox VE 26 Configure your Theme: Run macOS on Proxmox VE 27 Voila! You now have the Mac desktop launched! Run macOS on Proxmox VE 28 Make the MacOS Installation Persistent We have seen the MacOS desktop but that does not mean that we are done. You need to make the installation permanent. This involves copying the contents of the EFI partition on OpenCore to the hard disk. First, launch the terminal on this Mac installation and view the available partitions using the command: diskutil list Copy Sample Output: Run macOS on Proxmox VE 30 Now we will copy the EFI partition from OpenCore to the hard disk using the command with the below syntax: sudo dd if= of= Copy The OpenCore EFI partition exists on the small disk(approximately 150MB), and the main hard disk is the one with the large(greater than 30GB) Apple_APFS “Container” partition on it. In this case, the EFi partitions are called disk1s1 a and disk2s1 respectively, this may not be similar to yours. Now that makes our command to be: sudo dd if=/dev/disk1s1 of=/dev/disk2s1 Copy Remember to be very careful at this stage because if you get the names wrong, you can overwrite the wrong disk and you’ll have to start the installation over again! Sample Output: Run macOS on Proxmox VE 31 Boot into macOS installation Now shut down the VM and remove both the OpenCore and the Monterey installer drives in the Hardware tab. Run macOS on Proxmox VE 33 In the options tab, edit your boot order and place your hard disk as the first boot option. Run macOS on Proxmox VE 32 Now start the VM, and if everything is okay, you should see this: Run macOS on Proxmox VE 34 Login to the VM. Run macOS on Proxmox VE 35 Once authenticated, you can proceed and make the desired configurations for your Mac system. Run macOS on Proxmox VE 36 If you are unable to wake Monterey from sleep, using your mouse or keyboard, you can disable the system sleep in Monterey’s Energy Saver settings to avoid the issue. You can also wake the system manually using the command: ##From your Proxmox host qm monitor YOUR-VM-ID-HERE system_wakeup quit Copy With that, we conclude this guide on how to run macOS on Proxmox VE. I hope you too managed to spin MacOS on Proxmox.

هیچ نظری موجود نیست:

راهنمای گام به گام اجرای macOS در Proxmox VE

مفهوم مجازی‌سازی اکنون در همه جا وجود دارد و ابزارهای محبوبی مانند Docker، Virtualbox، Hyper-V و Vmware نقش بسزایی در محبوبیت آن دارند. مجاز...