مفهوم مجازیسازی اکنون در همه جا وجود دارد و ابزارهای محبوبی مانند 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.
مریم میرزاخانی در ۲۲ اردیبهشت سال ۱۳۵۶ در تهران به دنیا آمد. او ریاضیدان ایرانی و استاد دانشگاه استنفورد بود. او در سال ۲۰۱۴ به دلیل کنشگری در زمینهٔ «دینامیک و هندسه سطوح ریمانی و فضاهای پیمانهای آنها» برنده مدال فیلدز که بالاترین جایزه در زمینه ریاضیات است شد. او اولین زن و همچنین اولین ایرانی برندهٔ مدال فیلدز است. نظریه تایشمولر، هندسه هذلولوی، نظریه ارگودیک و هندسه سیمپلتیک زمینههای تحقیقاتی او بودند. در ۴ نوامبر ۲۰۱۹ بنیاد جایزه بریکترو اعلام کرد که جایزه جدیدی به نام جایزه مریم میرزاخانی مرزهای نو را ایجاد کردند که به زنان پیشتاز در علم ریاضی تقدیم خواهد شد.
جوایز و افتخارات:
- مدال طلا. المپیاد جهانی ریاضی (هنگکنگ ۱۹۹۴)
- مدال طلا (با نمرهٔ کامل) المپیاد جهانی ریاضی (کانادا ۱۹۹۵)
- همکار پژوهشگاه دانشهای بنیادی، تهران، ایران از ۱۹۹۵ تا ۱۹۹۹
- جایزهٔ افتخاری دانشگاه هاروارد در سال ۲۰۰۳
- جایزهٔ برترین فارغالتحصیلان دانشگاه هاروارد در سال ۲۰۰۳
- جایزهٔ پژوهشگر برتر بنیاد ریاضیات کلی در سال ۲۰۰۴
- جایزهٔ ایاماس بلومنتال در سال ۲۰۰۹
- دعوت به کنگره بینالمللی ریاضیات در سال ۲۰۱۰ برای سخنرانی در مورد «توپولوژی و سیستمهای پویا و معادله دیفرانسیل معمولی»
- جایزه ستر از طرف انجمن ریاضی آمریکا در سال ۲۰۱۳
- انتخاب به عنوان یکی از ده فرد مهم سال ۲۰۱۴ از سوی مجله نیچر
- جایزه بنیاد ریاضیات کلی در سال ۲۰۱۴
- سخنران مدعو کنگرهٔ بینالمللی ریاضی (۲۰۱۴)
- مدال فیلدز سال ۲۰۱۴ سئول
- عضویت در فرهنگستان علوم فرانسه در سال ۲۰۱۵
- عضویت در مجمع فیلسوفان آمریکا در سال ۲۰۱۵
- عضویت در آکادمی ملی علوم آمریکا در سال ۲۰۱۶
- عضویت در فرهنگستان هنر و علوم در سال ۲۰۱۷
- جایزه بریکترو در ریاضیات در سال ۲۰۲۰ (پس از درگذشت)
او در نهایت پس از ۴ سال مبارزه با بیماری سرطان در ۲۳ تیرماه سال ۱۳۹۶ در ۴۰ سالگی در بیمارستانی در کالیفرنیا درگذشت. و آرامگاه وی در پارک یادبود لوس گاتوس در کالیفرنیا قرار دارد.
نصب ChromeOS اصلی با Brunch Framework روی HP Compaq Elite 8300 SFF
تجربه نصب ChromeOS روی یک کامپیوتر قدیمی با دو کارت گرافیک
آیا میشود ChromeOS اصلی را روی یک کامپیوتر قدیمی مثل HP Compaq Elite 8300 SFF نصب کرد؟
بله.
با استفاده از Brunch Framework میتوان ChromeOS Recovery را روی بسیاری از کامپیوترهای معمولی اجرا کرد. در این تجربه، ChromeOS روی یک HP Compaq Elite 8300 SFF با پردازنده Ivy Bridge و دو کارت گرافیک Intel و AMD اجرا شد.
نکته جالب این تجربه این بود که مشکل اولیه تصویر نه از Brunch بود و نه از کارت گرافیک؛ بلکه با تعویض کابل تصویر و تغییر تنظیمات گرافیکی BIOS برطرف شد.
مشخصات سیستم
سیستمی که برای این تست استفاده شد:
قطعه مشخصات
کامپیوتر HP Compaq Elite 8300 SFF
پردازنده Intel Core i5-3570
نسل CPU Ivy Bridge
گرافیک مجتمع Intel HD Graphics 2500
کارت گرافیک مجزا AMD Radeon HD 6450
BIOS نسخه 3.08
خروجی مادربرد VGA + DisplayPort
این سیستم نسبتاً قدیمی است، اما پردازنده 64 بیتی و UEFI آن باعث میشود بتوان از روشهای غیررسمی مانند Brunch برای اجرای ChromeOS استفاده کرد.
Brunch Framework چیست؟
Brunch Framework یک پروژه غیررسمی است که امکان اجرای ChromeOS Recovery روی سختافزارهایی غیر از Chromebookهای رسمی را فراهم میکند.
در این روش، به جای نصب ChromeOS Flex، از یک ChromeOS Recovery Image استفاده میشود و Brunch نقش لایه سازگاری و بوت را بر عهده میگیرد.
بنابراین نتیجه، تجربهای بسیار نزدیکتر به ChromeOS واقعی Chromebookها است.
پیشنیازها
برای نصب معمولاً به موارد زیر نیاز دارید:
یک کامپیوتر سازگار
یک SSD یا HDD برای ChromeOS
فایل ChromeOS Recovery مناسب
Brunch Framework مناسب همان نسخه ChromeOS
یک سیستمعامل Linux برای آمادهسازی و اجرای اسکریپت نصب
اتصال اینترنت برای دانلود فایلهای موردنیاز
بهتر است قبل از نصب، از اطلاعات مهم دیسک موردنظر نسخه پشتیبان تهیه کنید.
مرحله اول؛ آماده کردن ChromeOS Recovery
ابتدا باید Recovery Image مناسب ChromeOS را تهیه کنید.
فایل Recovery معمولاً به صورت فشرده دریافت میشود و بعد از استخراج، فایل Image مورد استفاده Brunch در اختیار شما قرار میگیرد.
نسخه ChromeOS و نسخه Brunch باید با یکدیگر سازگار باشند؛ بنابراین نباید هر نسخه Brunch را با هر Recovery Image ترکیب کرد.
مرحله دوم؛ آماده کردن Brunch
پس از دانلود Brunch Framework، فایلهای آن را در Linux استخراج کنید.
در پوشه Brunch معمولاً اسکریپت نصب قرار دارد.
ساختار فایلها بسته به نسخه Brunch ممکن است متفاوت باشد، بنابراین بهتر است دستورهای موجود در README همان نسخه را دنبال کنید.
مرحله سوم؛ نصب ChromeOS
پس از آماده شدن Recovery Image و Brunch، اسکریپت نصب Brunch روی دیسک مقصد اجرا میشود.
یک نمونه از ساختار دستور نصب میتواند شبیه این باشد:
sudo chromeos-install.sh -src recovery.bin -dst /dev/sdX
توجه:
/dev/sdX فقط نمونه است.
باید نام واقعی دیسک مقصد را پیدا کنید و قبل از اجرای دستور، حتماً آن را بررسی کنید؛ چون انتخاب اشتباه دیسک میتواند باعث پاک شدن اطلاعات یک هارد دیگر شود.
برای مشاهده دیسکها میتوانید از دستور زیر استفاده کنید:
lsblk
مرحله چهارم؛ تنظیم Boot
بعد از نصب، باید Bootloader سیستم طوری تنظیم شود که بتواند ChromeOS/Brunch را پیدا کند.
در سیستمهای دارای چند سیستمعامل، ممکن است لازم باشد یک ورودی GRUB برای ChromeOS ایجاد شود.
این موضوع به ساختار دیسک و Bootloader نصبشده روی سیستم بستگی دارد.
در سیستمی که چند سیستمعامل دارد، بهتر است ChromeOS را به عنوان یک گزینه در Boot Menu نگه دارید تا سایر سیستمعاملها نیز بدون مشکل قابل استفاده باشند.
مرحله پنجم؛ اولین بوت
بعد از راهاندازی مجدد، منوی Brunch نمایش داده میشود.
پس از انتخاب ChromeOS، سیستم وارد محیط ChromeOS میشود.
در تست انجامشده روی Elite 8300، همین اتفاق افتاد:
Brunch → ChromeOS → Desktop
بنابراین مشخص شد که این سختافزار توانایی اجرای ChromeOS با Brunch را دارد.
مشکل دو کارت گرافیک
یکی از نگرانیهای اصلی در این سیستم وجود دو GPU بود:
Intel HD 2500 + AMD Radeon HD 6450
در ابتدا این احتمال وجود داشت که Radeon 6450 باعث مشکل در ChromeOS شود.
اما در عمل ChromeOS با Brunch بوت شد.
بنابراین نمیتوان گفت صرفاً وجود Radeon 6450 باعث غیرممکن شدن نصب ChromeOS میشود.
مشکل تصویر و راهحل
در این سیستم، مشکل اولیه تصویر با دستکاری Brunch حل نشد.
راهحل بسیار سادهتر بود:
1. تغییر کابل تصویر
کابل تصویر تغییر داده شد.
2. تغییر تنظیمات BIOS
در BIOS گزینه Integrated Graphics وجود داشت و تنظیمات مربوط به گرافیک تغییر کرد.
3. استفاده از خروجی مناسب
Elite 8300 دارای خروجیهای:
VGA
DisplayPort
روی مادربرد است.
با انتخاب صحیح خروجی و تنظیم BIOS، تصویر بهدرستی نمایش داده شد.
نتیجه
Brunch بالا آمد و سپس ChromeOS نیز بدون مشکل اجرا شد.
این تجربه نشان داد که قبل از تغییر Kernel، حذف GPU یا تغییر فایلهای Brunch، بهتر است موارد سادهای مثل کابل و تنظیمات BIOS بررسی شوند.
آیا Radeon HD 6450 باید خارج شود؟
در این تجربه، خیر.
از آنجا که ChromeOS قبلاً با وجود Radeon 6450 بوت شده بود، خارج کردن کارت گرافیک ضروری نبود.
اگر روی سیستم دیگری مشکل مشابهی ایجاد شد، میتوان کارت گرافیک مجزا را موقتاً خارج کرد و با Intel تست گرفت؛ اما در این سیستم چنین کاری لازم نشد.
فعال کردن Linux Terminal
بعد از اجرای موفق ChromeOS، مرحله بعدی فعال کردن Linux Development Environment یا همان محیط Linux/Terminal بود.
ChromeOS برای اجرای برنامههای Linux از Crostini استفاده میکند.
این بخش با خود محیط ChromeOS متفاوت است.
یعنی ممکن است:
ChromeOS کاملاً سالم اجرا شود
اما
Linux Terminal نصب نشود.
خطای Termina DLC
در این تجربه، هنگام فعال کردن Linux Environment خطایی مشابه زیر مشاهده شد:
Error: operation `vm_start` failed:
DLC service failed to install module `termina-tools-dlc`
ERROR - ERROR: command failed
این خطا مربوط به نصب اجزای موردنیاز محیط Linux، مخصوصاً Termina DLC است.
آیا مشکل از کارت گرافیک بود؟
خیر.
چون ChromeOS قبل از آن بهطور کامل اجرا شده بود.
بنابراین باید بین این دو مشکل تفاوت قائل شد:
مشکل علت احتمالی
تصویر نداشتن کابل / خروجی / BIOS / GPU
ChromeOS بوت نمیشود Boot / Brunch / Kernel / سختافزار
ChromeOS اجرا میشود ولی Terminal نصب نمیشود شبکه / سرویسهای Google / DLC
Termina DLC نصب نمیشود دسترسی به سرورهای موردنیاز یا مشکل نسخه
در این مورد، مشکل Terminal بیشتر به دسترسی ChromeOS به سرویسهای Google برای دریافت DLC مربوط بود.
چرا Terminal در ChromeOS ممکن است نصب نشود؟
برای فعال شدن Linux Environment، ChromeOS باید فایلها و اجزای موردنیاز را دریافت کند.
اگر اتصال سیستم به سرویسهای موردنیاز Google برقرار نباشد، دانلود Termina DLC ممکن است شکست بخورد.
بنابراین در چنین شرایطی، تعویض GPU یا نصب مجدد Brunch الزاماً کمکی نمیکند.
بهتر است ابتدا:
اتصال اینترنت ChromeOS بررسی شود.
زمان و تاریخ سیستم بررسی شود.
نسخه ChromeOS و Brunch بررسی شود.
اتصال به سرویسهای Google بررسی شود.
سپس دوباره Linux Environment فعال شود.
نکات مهم برای سیستمهای قدیمی
اگر میخواهید Brunch را روی یک PC قدیمی نصب کنید، این موارد را قبل از شروع بررسی کنید:
BIOS
UEFI/Legacy Mode
Integrated Graphics
Primary Display
Secure Boot
گرافیک
GPU مجتمع
GPU مجزا
خروجی مورد استفاده
کابل تصویر
دیسک
نام صحیح دیسک
پارتیشنها
فضای کافی
Backup
نرمافزار
نسخه ChromeOS Recovery
نسخه Brunch
سازگاری نسخهها
Bootloader
نتیجه نهایی
تجربه نصب روی HP Compaq Elite 8300 SFF نشان داد که حتی یک کامپیوتر قدیمی با:
Core i5-3570 + Intel HD 2500 + Radeon HD 6450
میتواند ChromeOS را با Brunch Framework اجرا کند.
در این تجربه، وجود دو کارت گرافیک مانع اجرای ChromeOS نشد.
حتی مشکل اولیه تصویر نیز با تغییرات پیچیده در Brunch حل نشد؛ بلکه با تعویض کابل تصویر و تنظیم صحیح Integrated Graphics در BIOS برطرف شد.
پس اگر ChromeOS با Brunch روی یک PC قدیمی اجرا نمیشود، همیشه نباید اولین مظنون را سختافزار بدانیم.
گاهی مشکل از یک کابل، یک خروجی تصویر یا یک گزینه ساده در BIOS است.
در نهایت، ChromeOS روی این سیستم بهدرستی اجرا شد و تنها مشکل باقیمانده، فعالسازی Linux Terminal و دریافت Termina DLC بود که بیشتر به دسترسی سرویسهای Google مربوط میشد.
جمعبندی کوتاه
HP Elite 8300 SFF + i5-3570 + Radeon HD 6450 + Brunch = قابل اجرا ✅
ChromeOS Desktop = اجرا شد ✅
دو GPU = مانع نصب نشد ✅
Linux Terminal = نیازمند بررسی جداگانه ⚠️
این تجربه نشان میدهد که با کمی تنظیمات میتوان از یک سیستم اداری قدیمی نیز یک کامپیوتر ChromeOS کاربردی ساخت.
اگر یک HP Compaq Elite 8300 SFF دارید و میخواهید آن را به یک سیستم سبک و سریع تبدیل کنید، احتمالاً ChromeOS Samus یکی از گزینههایی است که به ذهنتان رسیده است. من این نصب را روی سختافزار واقعی امتحان کردم و نتیجه، چند نکته مهم داشت که قبل از شروع باید بدانید.
مشخصات سیستم
مدل: HP Compaq Elite 8300 SFF
پردازنده: Intel Core i5-3450
گرافیک داخلی: Intel HD Graphics 2500
گرافیک مجزا: AMD Radeon HD 6450
بوت: UEFI
هدف از نصب
هدف این بود که ChromeOS Samus را بهصورت بومی (Native) روی سیستم نصب کنم تا یک کامپیوتر قدیمی دوباره برای کارهای روزمره مثل وبگردی، یوتیوب و برنامههای تحت وب قابل استفاده باشد.
مراحل نصب
فعال کردن UEFI در BIOS
غیرفعال کردن Secure Boot
نصب ChromeOS Samus با Brunch Framework
اولین بوت و راهاندازی اولیه
نصب بدون دردسر انجام شد و سیستم با گرافیک داخلی اینتل بهخوبی بوت شد.
تست Radeon HD 6450
بعد از نصب، کارت گرافیک Radeon HD 6450 را امتحان کردم.
نتیجه: ناموفق ❌
ChromeOS Samus این کارت را بهدرستی راهاندازی نکرد و عملاً قابل استفاده نبود. در مقابل، Intel HD 2500 بدون مشکل تصویر را نمایش داد و محیط سیستم کاملاً روان اجرا شد.
نتیجهگیری
اگر قصد دارید ChromeOS Samus را روی HP Elite 8300 نصب کنید، پیشنهاد من این است:
قطعه وضعیت
Intel HD 2500 ✅ کاملاً مناسب
Radeon HD 6450 ❌ توصیه نمیشود
بنابراین اگر این سیستم را برای ChromeOS آماده میکنید، بهتر است مانیتور را مستقیماً به خروجی مادربرد وصل کنید و از گرافیک داخلی استفاده کنید.
حرف آخر
گاهی سختافزار قدیمی با سیستمعاملهای جدید بهتر از چیزی که انتظار داریم کار میکند؛ اما همیشه همه قطعات سازگار نیستند. در تجربه من، HP Elite 8300 با Intel HD 2500 یک ترکیب عالی برای ChromeOS Samus بود، ولی Radeon HD 6450 نتوانست همراه خوبی باشد.
اگر شما هم این سیستم را دارید، تجربهتان را در بخش نظرات بنویسید. شاید نتیجه شما متفاوت باشد.
ترنس تائو هفت ساله بود که برای تحصیل در رشته ریاضیات و سایر دروس به دبیرستان رفت.
او از لسآنجلس، شهری که بیش از ۲۵ سال است در آن تدریس و پژوهش میکند، به بیبیسی میگوید: «یادم میآید که بالشتک مخصوص روی صندلیام میگذاشتند، چون قدم به میز نمیرسید.»
ترنس تائو در سال ۱۹۷۵ در استرالیا به دنیا آمد. پدر و مادرش، بیلی و گریس، از هنگکنگ به استرالیا مهاجرت کرده بودند.
وقتی در زادگاهش حضور در کلاسهای دبیرستان را شروع کرد، آنقدر کوچک بود که معلمها دانشآموزی را موظف میکردند او را تا کلاسها همراهی کند، مبادا که «گم شود».
میگوید: «با بقیه فرق داشتم. چون پنج سال از آنها کوچکتر بودم. اما بعد از یکی دو هفته، این موضوع دیگر چندان اهمیتی نداشت، چون همهمان با همان تکلیفها دستوپنجه نرم میکردیم و تقریبا در یک سطح بودیم.»
این کودک نابغه حالا به یکی از برجستهترین ریاضیدانان تاریخ این رشته تبدیل شده است.
دانشگاه کالیفرنیا در لسآنجلس، که او آنجا تدریس میکند، میگوید: «تائو که به «موتسارت ریاضیات» شهرت دارد و بسیاری او را بهترین ریاضیدان زنده جهان میدانند، حوزههای گستردهای از ریاضیات را دگرگون کرده است.»
در سال ۲۰۰۶، هنگامی که به او مدال فیلدز دادند، جایزهای که به نوبل ریاضیات مشهور است، از توانایی «کمنظیرش» در حل مسائل و تاثیر «چشمگیر» فعالیتهایش در شاخههای مختلف ریاضیات تقدیر شد.
«او ترکیبی از توان فنی محض، نبوغی کمنظیر در یافتن ایدههای تازه و نگاهی است که بهطرزی شگفتآور طبیعی است؛ نگاهی که دیگر ریاضیدانان را وامیدارد بپرسند: ”چرا هیچ کس پیش از این به آن توجه نکرده بود؟”»
اعداد برای تمرین
تائو میگوید از وقتی به یاد میآورد، همیشه به اعداد و بازیهای مرتبط با آنها علاقه داشته است: «یکی از اولین خاطرههایم به سه یا چهار سالگی برمیگردد. مادربزرگم برای تمیز کردن پنجرهها به خانه ما میآمد و من از او میخواستم با کف صابون روی آنها عدد بنویسد. به او میگفتم: اینجا ۳ را بگذار و آنجا ۷ را.»
«یادم هست شبها، وقتی خیلی بیقرار بودم، پدر و مادرم کتابهای تمرین ریاضی به من میدادند و من شروع میکردم به انجام جمع و سایر عملیات.»
«از انجام تکلیف درس حساب لذت میبردم. فکر میکنم از معدود کودکانی بودم که واقعا این کار را دوست داشتند.»
اما علاقهاش به اعداد حتی پیش از آن شکل گرفته بود.
از پدر و مادرش شنیده است که در دو سالگی، به کودکانی که از او بزرگتر بودند، شمردن، جمع کردن و هجی کردن یاد میداد.
بعدها دریافت که ریاضیات بسیار فراتر از بازی یا صرفا انجام سریع محاسبات است؛ فهمید که «میتوان از آن برای درک جهان استفاده کرد و کاربردهای عملی دارد.»
استعداد استثنایی او باعث شد خانواده و معلمانش به این نتیجه برسند که بایست در هفت سالگی، او را برای خواندن ریاضی و چند درس علمی دیگر به دبیرستان بفرستند.
میگوید: «همزمان برای درسهایی مثل انگلیسی و ورزش به دبستان میرفتم. مادرم دنبالم میآمد، مرا به دبیرستان میبرد و بعد دوباره به دبستان برمیگرداند.»
با لبخند میگوید: «مادرم سالها زندگیاش را پشت فرمان گذراند.» دلیلش هم این بود که پدر و مادرش، علاوه بر او، دو فرزند دیگر هم داشتند که هر کدام به مدرسهای جدا میرفتند.
آقای تائو میگوید وقتی از مدرسه برمیگشت، در خانه همسایهشان را که هم سن او بود میزد تا با هم بازی کنند: «میرفتیم دوچرخهسواری.»
از آن سالها خاطرات خوشی دارد، به جز یک مورد: وقتی در دبیرستان مراسم رقص پایان سال برگزار شد.
میگوید: «هنوز آنقدر کوچک بودم که نمیتوانستم در آن شرکت کنم و این ناراحتم میکرد که همه به جشن میرفتند، جز من.»
سفر به پرینستون
تائو میگوید در کودکی به فیزیک هم علاقه زیادی داشت، چون دریافته بود این رشته جنبههایی از جهان را به معادلههایی تبدیل میکند که میتوان آنها را حل کرد.
«بعضی درسهای دیگر، مثل زیستشناسی و شیمی، برایم دشوار بود. احساس میکردم نمیتوانم مسائل را از اصول پایه حل کنم و اغلب باید حجم زیادی از اطلاعات را حفظ میکردم.»
با صراحت میگوید: «انگلیسی بدترین درس من بود. در کودکی برایم سخت بود منظور واقعی یک سوال را بفهمم و همه چیز را خیلی تحتاللفظی تعبیر میکردم.»
«مثلا در یکی از امتحانها از من خواستند درباره خانهام بنویسم، اما نمیفهمیدم دقیقا منظورشان چیست. برای همین فقط فهرستی از همه اتاقهای خانه و همه وسایلی که در هر کدام بود نوشتم.»
ریاضی همیشه درس محبوب او بود. او در ۹ سالگی، دیگر غرق در حل مسائل پیچیده شده بود.
در همان سنوسال، پدرش او را به موسسه مطالعات پیشرفته در پرینستون آمریکا برد. تائو آنجا با دو ریاضیدان برجسته، انریکو بومبیری و چارلز ففرمن، دیدار کرد که هر دو برنده مدال فیلدز بودند.
پدرش از آنها پرسید: «آیا این کودک واقعا استعداد دارد؟» آنها هم برای ارزیابی خلاقیت تائو، چند مسئله پیش روی او گذاشتند.
رادنی دی. پریستلی، رئیس دانشکده تحصیلات تکمیلی دانشگاه پرینستون، در ماه فوریه و هنگام اعطای مدال جیمز مدیسون این دانشگاه به تائو، این ماجرا را بازگو کرد و گفت که عملکرد او چنان بود که چارلز ففرمن بعدها گفته بود: «اگر پاسخ منفی داده بودم، بیتردید آن را در فهرست کوتاه احمقانهترین اشتباهات زندگیام قرار میدادم.»
آقای پریستلی گفت: «درخشش فنی، خلاقیت استثنایی، کنجکاوی گسترده و روحیه همکاری او به کشفهای متعدد و تحولآفرین انجامیده است.»
او همچنین گفته است: «کار تائو به شکلی ملموس به بهبود زندگی مردم کمک کرده است» و در این زمینه به بسط الگوریتمهایی اشاره کرد که به پیشرفت فناوری تصویربرداری امآرآی کمک کردهاند.
ورود به دانشگاه
تائو در ۱۴ سالگی تحصیل تماموقت را در دانشگاه فلیندرز در آدلاید آغاز کرد.
این دانشگاه میگوید: «او همچنان یکی از کم سنوسالترین دانشجویانی است که در فلیندرز ثبتنام کرده و در ۱۶ سالگی مدرک کارشناسی ارشد گرفته است.»
او یک سال بعد بار دیگر راهی آمریکا شد تا دوره دکتری را در دانشگاه پرینستون شروع کند.
تائو میگوید: «این اولین بار بود که دور از خانه و خانواده زندگی میکردم.»
ترنس تائو که در ۱۳ سالگی برنده المپیادهای ریاضی شده بود، پیش از آن چند بار برای شرکت در رقابتها سفر رفته بود، اما هیچوقت طولانیتر از یک هفته از خانواده دور نمانده بود.
پدرش برای کمک به مستقر شدن او در پرینستون همراهش رفت و یک هفته در آنجا ماند.
او میگوید: «اصول اولیه را به من یاد داد؛ شستن لباسها، کاری که همیشه مادرم انجام میداد، باز کردن حساب بانکی و خرید کردن.»
دانشجویان دیگری هم مثل او بودند که برای اولین بار دوری از خانواده را تجربه میکردند.
تائو از آن دوره، خاطرات خوش زیادی با دوستان تازهاش دارد؛ از سینما رفتن گرفته تا بازیهای ویدئویی.
در ۲۱ سالگی دکتریاش را به پایان رساند و راهی دانشگاه کالیفرنیا در لسآنجلس شد. تائو در آنجا بهعنوان استادیار مشغول به کار شد.
سه سال بعد، او را به رتبه استاد تمام ارتقا دادند.
او میگوید: «تقریبا هم سنوسال دانشجوهایم بودم. فکر میکنم وقتی دیدند دارم به طرف تخته میروم، کمی غافلگیر شدند.»
در واقع، تائو جوانترین استاد در تاریخ دانشگاه کالیفرنیا شد.
«یک لئوناردو داوینچی»
دنیل پرالتا، پژوهشگر موسسه علوم ریاضی در شورای عالی پژوهشهای علمی اسپانیا، تائو را از نزدیک میشناسد.
او را «فردی بسیار فروتن» توصیف میکند و میگوید: «او اصلا شبیه یک ستاره نیست.»
آقای پرالتا میگوید: «ممکن است تصور شود کسی که این همه دانش و ایده در سر دارد، این همه دستاورد داشته، اینقدر مهم است و همه جایزهها را برده، دیگر به حرف کسی گوش نمیدهد. اما کاملا برعکس، خیلی خوب گوش میدهد.»
تائو در حوزههایی از ریاضیات کار کرده که در ظاهر بسیار متفاوتاند، از نظریه اعداد گرفته تا معادلات دیفرانسیل، تحلیل هارمونیک و در سالهای اخیر، مسائل مرتبط با رایانش.
آقای پرالتا میگوید: «به نظرم او از نظر نبوغ زودهنگام، موتسارت دنیای ریاضیات است، اما در عین حال لئوناردو داوینچی هم هست. تائو در شاخههای متعدد ریاضیات که در آنها کار کرده، با دید گسترده، دانش عمیق و نبوغش، تاثیری چشمگیر بهجا گذاشته است.»
آقای پرالتا میگوید: «داشتن چهرهای مانند او در ریاضیات مدرن، استثناست. این که کسی بتواند در این همه حوزه کار کند و اثر بگذارد، عملا ناممکن و بسیار نادر است.»
تصویر نابغه ریاضیدانی که بهتنهایی کار میکند و خودش از پس حل مسائل بسیار پیچیده برمیآید، انگار بیشتر به گذشته تعلق دارد.
تائو نه فقط در شیوه کارش این موضوع را نشان میدهد، بلکه خودش هم دوست دارد بر آن تاکید کند.
میگوید: «شاید حدود ۱۰۰ سال پیش، ریاضیات فعالیتی فردیتر بود، اما این حوزه خیلی رشد کرده است. حالا، برای نمونه، تعداد زیادی مقاله در ریاضیات منتشر میشود.»
«این حوزه آنقدر گسترده شده است که هیچ کس، هر قدر هم باهوش باشد، نمیتواند بر همه روشها و تمام کارهایی که انجام شده احاطه داشته باشد.»
میگوید: «وقتی جوانتر بودم، در مسابقات ریاضی شرکت میکردم. چند مسئله میدادند، سه ساعت در اتاقی نگه میداشتند، اجازه نداشتیم کتاب یا جزوهای را باز کنیم، هیچ چیز، و باید همه را بهتنهایی حل میکردیم. فکر میکردم ریاضیات یعنی همین.»
«اما حالا، وقتی میخواهیم یک مسئله ریاضی را حل کنیم، در بسیاری از موارد، ۹۰ درصد کار این است که بفهمیم دیگران چه کردهاند و از همان روشها استفاده کنیم.»
او میگوید در بسیاری از مواقع، لازم است با کسی کار کنیم که آن روشها را بشناسد.
به گفته او، همکاری در هر شاخهای از ریاضیات نقشی اساسی دارد، و این همکاری فقط به «آدمهای زمان حال» محدود نمیشود.
میگوید: «وقتی همکاری میکنیم؛ وقتی از نتیجهای در متون ریاضی استفاده میکنیم، انگار که در کنار نیوتون یا کارل فریدریش گاوس، یا کسی ایستادهایم که دههها پیش زندگی میکرده است.»
«بهترین ایدهها از سراسر جهان میآیند»
و این همکاری فقط میان ریاضیدانان نیست، بلکه بین پژوهشگران رشتههای دیگر هم شکل میگیرد.
میگوید: «مسائلی که امروز روی آنها کار میکنیم، آنقدر پیچیده و میانرشتهای هستند که عملا هیچ کس بهتنهایی از عهده همه آنها برنمیآید.»
تائو در سخنرانیهای خود میکوشد نشان دهد ریاضیات چگونه در بسیاری از ابزارها و خدماتی که هر روز از آنها استفاده میکنیم، پنهان شده است.
او برای نمونه توضیح میدهد که وقتی نسل اول تلفنهای همراه به بازار آمد، مشکلی به نام تداخل وجود داشت. تداخل زمانی پیش میآمد که شمار زیادی از مردم در یک مکان، همزمان با هم تماس میگرفتند. اما این مشکل به کمک روشهای ریاضی حل شد.
Requirements
A modern Linux distribution. E.g. Ubuntu 24.04 LTS 64-bit or later.
QEMU >= 8.2.2
A CPU with Intel VT-x / AMD SVM support is required (grep -e vmx -e svm /proc/cpuinfo)
A CPU with SSE4.1 support is required for >= macOS Sierra
A CPU with AVX2 support is required for >= macOS Ventura
Note: Older AMD CPU(s) are known to be problematic but modern AMD Ryzen processors work just fine (even for macOS Sonoma).
Installation Preparation
Install QEMU and other packages.
sudo apt-get install qemu-system uml-utilities virt-manager git \
wget libguestfs-tools p7zip-full make dmg2img tesseract-ocr \
tesseract-ocr-eng genisoimage vim net-tools screen -y
This step may need to be adapted for your Linux distribution.
Clone this repository on your QEMU system. Files from this repository are used in the following steps.
cd ~
git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git
cd OSX-KVM
Repository updates can be pulled via the following command:
git pull --rebase
This repository uses rebase based workflows heavily.
KVM may need the following tweak on the host machine to work.
sudo modprobe kvm; echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs
To make this change permanent, you may use the following command.
sudo cp kvm.conf /etc/modprobe.d/kvm.conf # for intel boxes only
sudo cp kvm_amd.conf /etc/modprobe.d/kvm.conf # for amd boxes only
Add user to the kvm and libvirt groups (might be needed).
sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)
Note: Re-login after executing this command.
Fetch macOS installer.
./fetch-macOS-v2.py
You can choose your desired macOS version here. After executing this step, you should have the BaseSystem.dmg file in the current folder.
ATTENTION: Let >= Big Sur setup sit at the Country Selection screen, and other similar places for a while if things are being slow. The initial macOS setup wizard will eventually succeed.
Sample run:
$ ./fetch-macOS-v2.py
1. High Sierra (10.13)
2. Mojave (10.14)
3. Catalina (10.15)
4. Big Sur (11.7)
5. Monterey (12.6)
6. Ventura (13) - RECOMMENDED
7. Sonoma (14)
8. Sequoia (15)
Choose a product to download (1-8): 6
Note: Modern NVIDIA GPUs are supported on HighSierra but not on later versions of macOS.
Convert the downloaded BaseSystem.dmg file into the BaseSystem.img file.
dmg2img -i BaseSystem.dmg BaseSystem.img
Create a virtual HDD image where macOS will be installed. If you change the name of the disk image from mac_hdd_ng.img to something else, the boot scripts will need to be updated to point to the new image name.
qemu-img create -f qcow2 mac_hdd_ng.img 256G
NOTE: Create this HDD image file on a fast SSD/NVMe disk for best results.
Now you are ready to install macOS 🚀
Installation
CLI method (primary). Just run the OpenCore-Boot.sh script to start the installation process.
./OpenCore-Boot.sh
Note: This same script works for all recent macOS versions.
Use the Disk Utility tool within the macOS installer to partition, and format the virtual disk attached to the macOS VM. Use APFS (the default) for modern macOS versions.
Go ahead, and install macOS 🙌
(OPTIONAL) Use this macOS VM disk with libvirt (virt-manager / virsh stuff).
Edit macOS-libvirt-Catalina.xml file and change the various file paths (search for CHANGEME strings in that file). The following command should do the trick usually.
sed "s/CHANGEME/$USER/g" macOS-libvirt-Catalina.xml > macOS.xml
virt-xml-validate macOS.xml
Create a VM by running the following command.
virsh --connect qemu:///system define macOS.xml
If needed, grant necessary permissions to libvirt-qemu user,
sudo setfacl -m u:libvirt-qemu:rx /home/$USER
sudo setfacl -R -m u:libvirt-qemu:rx /home/$USER/OSX-KVM
Launch virt-manager and start the macOS virtual machine.
Headless macOS
Use the provided boot-macOS-headless.sh script.
./boot-macOS-headless.sh
Setting Expectations Right
Nice job on setting up a Virtual Hackintosh system! Such a system can be used for a variety of purposes (e.g. software builds, testing, reversing work), and it may be all you need, along with some tweaks documented in this repository.
However, such a system lacks graphical acceleration, a reliable sound sub-system, USB 3 functionality and other similar things. To enable these things, take a look at our notes. We would like to resume our testing and documentation work around this area. Please reach out to us if you are able to fund this area of work.
It is possible to have 'beyond-native-apple-hw' performance but it does require work, patience, and a bit of luck (perhaps?).
Post-Installation
See networking notes on how to setup networking in your VM, outbound and also inbound for remote access to your VM via SSH, VNC, etc.
To passthrough GPUs and other devices, see these notes.
Need a different resolution? Check out the notes included in this repository.
Trouble with iMessage? Check out the notes included in this repository.
Highly recommended macOS tweaks - https://github.com/sickcodes/osx-optimizer
Is This Legal?
The "secret" Apple OSK string is widely available on the Internet. It is also included in a public court document available here. I am not a lawyer but it seems that Apple's attempt(s) to get the OSK string treated as a trade secret did not work out. Due to these reasons, the OSK string is freely included in this repository.
Please review the 'Legality of Hackintoshing' documentation bits from Dortania's OpenCore Install Guide.
Gabriel Somlo also has some thoughts on the legal aspects involved in running macOS under QEMU/KVM.
You may also find this 'Announcing Amazon EC2 Mac instances for macOS' article interesting.
Note: It is your responsibility to understand, and accept (or not accept) the Apple EULA.
Note: This is not legal advice, so please make the proper assessments yourself and discuss with your lawyers if you have any concerns (Text credit: Dortania)
Motivation
My aim is to enable macOS based educational tasks, builds + testing, kernel debugging, reversing, and macOS security research in an easy, reproducible manner without getting 'invested' in Apple's closed ecosystem (too heavily).
These Virtual Hackintosh systems are not intended to replace the genuine physical macOS systems.
Personally speaking, this repository has been a way for me to 'exit' the Apple ecosystem. It has helped me to test and compare the interoperability of Canon CanoScan LiDE 120 scanner, and Brother HL-2250DN laser printer. And these devices now work decently enough on modern versions of Ubuntu (Yay for free software). Also, a long time back, I had to completely wipe my (then) brand new MacBook Pro (Retina, 15-inch, Late 2013) and install Xubuntu on it - as the OS X kernel kept crashing on it!
Backstory: I was a (poor) student in Canada in a previous life and Apple made my work on cracking Apple Keychains a lot harder than it needed to be. This is how I got interested in Hackintosh systems.