blog.vyoralek.cz

Hackintosh aneb MacOS na běžném PC – OpenCore

Dnes tady mám opravdu dlouhý článek a pohled na instalaci MacOS na PC pomocí OpenCore.

Před více jak dvěmi lety jsem napsal článek o instalaci macOS na běžné PC pomocí Cloveru / Multibeast. Od té doby jsem začal jednotlivým částem instalace více rozumět a tak jsem se s příchodem MacOS Big Sur rozhodl se vrhnout do poněkud možná složitější instalace slibující však lepší výsledky.

Tenhle článek je opravdu dlouhý, ale snažil jsem se přidal všechny detaily, které jsem potřeboval v mé instalaci.

Na začátek ale považuju stejně jako minule nutné zmínit, že pokud chcete MacOS používat na seriózní práci tak doporučuji si spíše zakoupit originální iMac (pro stolní verzi) a nebo některý z řady MacBooků – Air/Pro. Jen tak dostanete vždy 100% možností, které macOS nabízí bez námahy a bezstarostný upgrade na novější verze.

Zároveň je do budoucna velmi reálná možnost ukončení MacOS pro architekturu X86, jelikož Apple začíná postupně přecházet na vlastní procesory založené na architektuře ARM. Tím se ale minimálně pár let podle mě ještě trápit nemusíme.

Celý článek bude jakýmsi průvodcem v mé konkrétní konfiguraci HW a příkladem jak použít velmi detailně rozpracovaný návod Dortania’s OpenCore Install Guide, který rozhodně doporučuji si otevřít také. Nicméně díky možnostem se v návodu můžete ztratit a myslím, že můj konkrétní příklad by vám v orientaci mohl pomoct.

Hardware přehled

Počítač na kterém mi aktuální macOS běží není z nejnovějších. Nejstarší komponenty jsou z roku 2015 – deska, procesor a paměti. Zbytek komponent jsem postupně obměňoval a dokupoval až do současnosti.

Počítač je však i přes stáří některých komponent velice svižný a ve většině případů se s ním i lépe pracuje než s mým MacBookem Pro (2017), zejména si myslím díky silné grafické kartě (v porovnání s interní Intel Iris Plus Graphics 650 MacBooku).

U těch aktuálních najdete link na Alzu, kde je detailnější popis a nebo si můžete komponentu rovnou koupit, čímž mě i drobně podpoříte – navíc já sám tam nakupuju 🙂

Skříň ve které mám vše uloženo je nádherně prostorná

Skříň ve které mám vše uloženo je nádherně prostorná
  • základní deska: GIGABYTE GA-Z97X-UD3H-BK
  • procesor: Intel Core i5-4690K (3.5GHz)
  • chladič: NOCTUA NH-U12S (Alza)
  • RAM paměti:
    • Kingston 16GB KIT DDR3 1600MHz CL9 HyperX Savage Series
    • Patriot 8GB KIT DDR3 1600MHz CL8 Viper Xtreme Series
  • pevné disky:
    • Samsung 970 EVO 1TB NVME (Alza) – primární disk pro MacOS
    • Samsung 860 EVO 500GB (Alza) – primární disk pro Windows
    • Samsung 850 EVO 256GB – záložní disk pro MacOS
  • grafická karty:
    • GIGABYTE RX 580 AORUS 8GB (Alza)
    • Intel HD Graphics 460 (interní z CPU)
  • skříň Fractal Design Define R5 Black (Alza)
  • zdroj: EVGA Power Supply 500W (Alza)
  • klávesnice: Logitech MX Keys (Alza)
  • myš: Logitech MX Master 3 Graphite (Alza)
  • monitory:
    • 27″ Dell U2718Q UltraSharp (Alza)
    • 27″ Dell U2713H UltraSharp
  • WiFi + bluetooth – Abwb 802.11 (viz. článek)

V minulém článku jsem psal, že uvažuji o větším upgrade, ale po výměně grafické karty vlastně nevidím důvod. Vše i na tak starém CPU běží náramně rychle a nová grafická karta tomu hodně pomohla.

Jediné komponenty, které jsem tak v nedávné době ještě vyměnil byly myš + klávesnice za kombo od Logitechu – tyhle oba produkty mohu určitě doporučit i když cena je dost vysoká – a větší disk v podobě 1TB NVME SSD disku od Samsungu. Ten jsem přikoupil zejména kvůli větší bezpečnosti aktualizací a snažím se mít na starším 250GB záložní systém v provozním stavu.

Boot loader OpenCore

V předchozím článku o instalaci MacOS na PC jsem vám představil boot loader (zavaděč systému) Clover a dnes si ukážeme OpenCore.

Nejprve se pojďme podívat proč zvolit právě OpenCore:

  • OpenCore podporuje více verzí MacOS bez nutnosti složitých hacků Cloveru – od verze 10.4 Tiger po poslední 11 Big Sur (v době psaní článku)
  • v průměru rychlejší start systému s menší nutnosti patchování – při výběru správné konfigurace
  • lepší stabilitu
  • větší bezpečnost – není potřeba vypínat System Integrity Protection (SIP), podpora FileVault 2 šifrování a podporu True secure-boot (UEFI a nebo Apple)
  • BootCamp přepínání a výběr systému pro bootování čtením z NVRAM stejně jako reálný Mac
  • podpora softwaru
    • některé Kexts jsou momentálně testovány vůči OpenCore ale ne vůči Cloveru
    • některé firmware ovladače jsou nyní zakomponovány přímo do OpenCore – např. APFS a FileVault
    • lepší podpora AMD patchů

Zároveň ale stále existují některé situace, které zatím podporuje pouze Clover:

  • startování MBR-based operačních systémů
  • UEFI-based VBIOS patchování
  • automatické vkládání DeviceProperty pro některé starší grafické karty, např. InjectIntel, InjectNvidia a InjectAti – může být ale uděláno manuálně pomocí GPU patchování
  • patchování IRQ konfilktů – můžeme být vyřešeno pomocí SSDTTime
  • podpora P and C generování stavů pro starší procesory
  • hardware UUID injection
  • podpora auto-detekce for mnoho Linux bootloaderů
  • Clover XCPM patche
  • skrývání konkrétních disků

Za mě musím přidat ještě jednu nevýhodu OpenCore, kterou zatím vidím a to poněkud složitá aktualizace na novější verzi OpenCore. Je potřeba ručně zkopírovat soubory podobně jako to budeme dělat níže v případě nové instalace a co je ještě šílenější porovnávat config.plist (hlavní konfigurační soubor) a ručně přidávat změny. Tohle bylo v Cloveru opravdu výrazně jednodušší. Pokud někdo tušíte nějaký jednodušší způsob, dejte prosím vědět do komentářů.

Příprava instalační flešky

Do jiného počítače s macOS vložíme jakoukoliv USB flešku – já si teď oblíbil od SanDisku (Alza, AliExpress), která má hned dva typy konektorů USB a hezké provedení.

SanDisk s dvěmi USB konektory

Spustíme diskovou utilitu a zmáčkneme Cmd+2, abychom viděli i samotné disky a nejen diskové jednotky. Klikneme na externí disk naší flešky a nahoře klikneme na Erase/Smazat do názvu dáme např. USB a jako formát vybereme Mac OS Extended (Journaled) a schéma vybereme GUID Partition Map.

Stažení macOS

První možností je stažení přímo z App Storu. To uděláme jednoduše spuštěním App Storu a vyhledáním Big Sur (popř. jiné verze) a kliknutí na Get/Získat.

Druhou možností je stažení pomocí Python skriptu, která nabízí i výběr konkrétní verze MacOS. Pro spuštění skriptu zadáme do příkazové řádky:

mkdir ~/macOS-installer && cd ~/macOS-installer && curl -O https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py && sudo python installinstallmacos.py

Pokud se vám objeví chyba ModuleNotFoundError: No module named 'xattr' je potřeba ještě nainstalovat příslušný python balíček pomocí příkazu:

 pip install xattr

… a spustit python skript znovu – tedy jen část sudo python installinstallmacos.py a měli bychom vidět seznam dostupných verzí:

Vytvoření instalační flešky

K vtvoření bootovatelné flešky s instalací např. Big Sur použijeme přímo utilitu createinstallmedia od Applu, která je součástí oficiální instalace.

V příkazové řádce spustíme následující kód, kdy parametr volume nastavíme podle toho jak jsme flešku pojmenovali – v našem příkladu USB a parameter volume bude proto /Volumes/USB.

sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/USB

Přidání OpenCore na instalační flešku

Jakmile máme flešku s instalátorem pro MacOS bude potřeba ještě dohrát OpenCore, který konkrétně bude na svazku s názvem EFI. Ten standardně není vidět a tak si ho budeme muset připojit. To můžeme udělat například utilitou MountEFI.

Utilitu si stáhneme pomocí naklonování Git repozitáře:

git clone https://github.com/corpnewt/MountEFI.git

… a po spuštění příkazem MountEFI.command bychom měli vidět následující nabídku:

  #######################################################
 #                      MountEFI                       #
#######################################################

1. Macintosh HD (disk1s5s1)
2. USB (disk2s1)

S. Switch to Full Output
L. Set As Default Layout (Current: Slim)
B. Mount the Boot Drive's EFI

D. Pick Default Disk (None Set)
M. After Mounting: Return to Menu
Q. Quit

(* denotes the booted EFI (Clover/OC))
Pick the drive containing your EFI:

Jakmile máme EFI jednotku připojenou můžeme se vrhnout na stažení poslední verze OpenCore.

K dispozici jsou dvě verze – DEBUG a RELEASE. DEBUG verze obsahuje mnohem více informací při startování, což může být velmi užitečné v případě problémů při bootu, ale nese to sebou zdržení 3-5 sekund. Jakmile máme vše vyladěno určitě doporučuji přepnout na RELEASE verzi.

Archív si rozbalíme a budeme potřebovat vše co je v adresáři X64 zkopírovat na připojenou EFI jednotku.

Dejte se pozor, že jste zkopírovali adresářovou strukturu včetně adresáře EFI, který musí být umístěn v kořenovém adresáři jednotky EFI.

Čištění nepotřebných souborů

Přepneme se na flash disk do adresáře EFI/OC a začneme s adresářem Drivers. Z toho bychom obecně měli potřebovat vždy pouze dva soubory:

  • OpenHfsPlus.efi – je potřeba pro HFS jednotky jako například macOS instalátor.

    U tohoto se hned zastavím, jelikož tady je určitá nekonzistence v návodu s tím co je v archivu posledního souboru. Původně byl zde soubor HfsPlus.efi, který však nějak zmizel a máme nyní verzi s prefixem Open. Pátral jsem po tomto v release notes a našel tam jednu poznámku: Replaced VBoxHfs driver with OpenHfsPlus. Proč se tohle stalo však netuším, každopádně pokud jste měli starší verzi OpenCore tak to vypadá, že z původním HfsPlus už nová verze OpenCore nanabootuje.

    V případě pokud máte procesor architektury CPU Sandy Bridge a starší budete potřebovat zřejmě OpenHfsPlus nahradit za HfsPlusLegacy.efi
  • OpenRuntime.efi – rozšíření pro OpenCore, který pomáhá s patchováním boot.efi pro NVRAM opravy a lepší management paměti

V mém případě jsem přidal ještě následující soubory:

  • NvmExpressDxe.efi – pomáhá s podporou bootování z NVMe disků – je potřeba pro architekturu CPU Haswell a starší
  • OpenCanopy.efi – grafický přehled s možností výběru do kterého systému bootovat při startu. Kromě tohoto souboru je ještě potřeba zkopírovat složku Resources a upravit config.plist, ke kterému se dostaneme později.
Image result for opencanopy

V adresáři EFI/OC/Tools pak můžeme ponechat pouze OpenShell.efi, který nám může pomoci s laděním.

Přidání Kexts balíčků

Tuhle část budete znát pokud jste používali Clover a pomůže vyřešit většinu problémů s chybějícími ovladačemi. Všechny balíčky je potřeba umístit do adresáře EFI/OC/Kexts

KExts balíčků je obrovské množství a já zde uvedenu jen ty co používám. Větší přehled můžete najít v dortania návodu.

  • AppleALC – univerzální ovladač pro zvukové karty
  • AppleIntelE1000e – už poněkud historický ovladač pro mou integrovanou síťovou kartu
  • Lilu – velmi důležitý patch, který je následně využívat vícero ovladači a bez tohoto balíčku nebudou fungovat
  • NVMEfix – opravuje power management a inicializaci pro ne-Apple NVMe
  • VirtualSMC + pluginy SMCProcessor a SMCSuperIO – emulace SMC chipu – nutné pro úspěšné bootování a pluginy přidávájí podporu monitorování teplot, otáček větráků atp.
  • USBInjectAll – různé machinace opravující podporu USB – nemělo by být potřeba od architektury Skylake a novějších
  • WhateverGreen – vylepšení podpory grafických karet

Zatím jsem nenašel způsob jak tyto balíčky elegantně aktualizovat. V případě Cloveru to šlo poměrně hezky přímo v Clover Configuratoru.

SSDTs – specifické soubory dle CPU

Dalším krokem je nahrání SSDTs souborů do adresáře EFI/OC/ACPI. V případě stolní počítačů si vystačíme s následující tabulkou (najdete zde)

V mém případě architektury Haswell vidím, že budu potřebovat dva soubory. Jeden pro CPU a druhý pro sběrnici (EC). Máme hned několik možností jak získat SSDT soubory, ale já použil ty prebuild (předkompilované) a vše funguje jak má:

Konfigurace – config.plist

Veškerá konfigurace OpenCore je uložená v souboru config.plist, který je klíčový. Základní soubor se kterým začneme najdeme v adresáři OpenCore-x.x.x-RELEASE/Docs pod názvem Sample.plist. Ten si zkopírujeme do EFI/OC a přejmenujeme na config.plist.

Jelikož se jedná o poměrně masivní XML, hodí se nějaký příjemnější editor a jedním může být ProperTree, který si zklonujeme z gitu a spustíme pomocí ProperTree.command.

Vzorový soubor Sample.plist obsahuje několik hlavních sekcí ke kterým si níže ukážeme jak je upravit:

ACPI

První věcí kterou je potřeba ve vzorovém souboru změnit je ACPI, kam do oddílu Root/ACPI/Add přidáme námi stažené SSDTs soubory, viz. výše.

V mém případě mám jen dva, takže si upravím první dva klíče s indexem 0 a 1 – vyplním název souboru do polí Comment a Path a změním Enabled = True a ostatní klíče mohu smazat.

Zbytek necháme tak jak je a pokračujeme do sekce Booter.

Booter

Vše necháme tak jak je jdeme na další sekci DeviceProperties.

DeviceProperties

Přidáme si podporu interní grafické karty přidáním nové sekce PciRoot(0x0)/Pci(0x2,0x0) do DeviceProperties/Add. Detaily k této sekci doporučuji nastudovatv sekci Configs dle architektury CPU.

Já uvidím pouze hodnoty pro architekturu Haswell v kombinaci s interní grafickou kartou Intel HD Graphics 4600.

Pokud chceme použít interní grafiku pro zobrazování – výstup na dislej – pak nastavíme platform-id na 0300220D. Pokud ji chceme použít pouze pro výpočty pak nastavíme hodnotu 04001204.

Toto nastavení je potřeba použít v kombinaci s pluginem WhateverGreen.kext, který jsme si už uváděli výše.

Sekce PciRoot(0x0)/Pci(0x1b,0x0) je použitá pro vložení správného určení interní zvukové karty pomocí addonu ApplePLC.kext. My použijeme způsob pomocí boot-arg, takže tuto položku můžeme smazat.

Kernel

Skočíme rovnou do sekce Quirks a zkontrolujeme zda máme nastaveny tuto hodnoty:

NázevHodnotaPoznámka
AppleCpuPmCfgLockFalsePotřeba pouze pro verzi 10.10 a starší
AppleXcpmCfgLockTrueNení potřeba pokud hodnot CFG-Lock je zakázána v BIOSu
DisableIOMapperTrueNení potřeba pokud VT-D je zakázáno v BIOSu
LapicKernelPanicFalsePouze pro HP notebooky
PanicNoKextDumpTrue
PowerTimeoutKernelPanicTrue
XhciPortLimitTrue

Zbytek hodnot můžeme nechat a pokračujeme dál do sekce Misc.

Misc

Zde se podíváme na dvě sekce a začneme s Debug.

NázevHodnotaPoznámka
AppleDebugTrueZapne debugování
ApplePanicTrueZapíše kernel panics do logu na disk
DisableWatchDogTrueZakáže UEFI watchdog
Target67Ukáže více debug informací

.. dále do Security:

NázevHodnotaPoznámka
AllowNvramResetTrueUmožnuje NVRAM reset pomocí Cmd+Opt+P+R
AllowSetDefaultTrueUmožňuje Ctrl+Enter pro vybrání výchozího zařízení pro boot
BlacklistAppleUpdateTrueBlokuje firmware aktualizace
ScanPolicy0
SecureBootModelDefault
VaultOptional

NVRAM

Většina hodnot může zůstat tak jak je. Pouze v sekci Add/7C436110-AB2A-4BBB-A880-FE41995C9F82 změníme boot-args na keepsyms=1 alcid=1 shikigva=80.

Hodnota alcid=1 nám pomůže s identifikací interní zvukové karty (pro ApplePLC.kext) a shikigva=80 vyřeší problémy s DRM (WhateverGreen.kext).

PlatformInfo

Blížíme se do finále a čekají nás poslední dvě sekce. První PlatformInfo je o identifikaci HW pro MacOS. Budeme si potřebovat vygenerovat nějaké sériová čísla a k tomu můžeme použít utilitu GenSMBIOS, která nám celý proces velmi zjednoduší.

  #######################################################
 #                     GenSMBIOS                       #
#######################################################

MacSerial v2.1.7
Current plist: None
Plist type:    Unknown

1. Install/Update MacSerial
2. Select config.plist
3. Generate SMBIOS
4. Generate UUID
5. List Current SMBIOS

Q. Quit

Please select an option:

Nejrpve nainstalujeme první volnou seznam sériových čísel z internetu, vybereme Config.plist a zvolíme třetí volbu pro generování SMBIOS:

  #######################################################
 #                  Generate SMBIOS                    #
#######################################################

M. Main Menu
Q. Quit

Please type the SMBIOS to gen and the number
of times to generate [max 20] (i.e. iMac18,3 5):

Do pole budeme potřebovat zadat typ zařízení – v našem případě to bude iMac15,1.

  #######################################################
 #               iMac15,1 SMBIOS Info                  #
#######################################################

Type:         iMac15,1
Serial:       C02NL05WFY10
Board Serial: C02443701GUG2Y7UE
SmUUID:       BE2A356F-437A-45D8-BC39-9B306551E4A0

Flushing SMBIOS entry to /Volumes/EFI/EFI/OC/config.plist

Press [enter] to return...

Stiskneme Enter a máme čeká nás poslední sekce.

UEFI

Přepneme se rovnou se sekce Quirks a nastavíme:

NázevHodnotaPoznámka
IgnoreInvalidFlexRatioTrueJe potřeba pro všechny desky před Skylake
UnblockFsConnectFalsePotřeba pouze pro základní desky HP

Máme hotovo ? – tedy co se týče config.plist.

Úprava config.plist souboru je zřejmě nejkritičtější část a je potřeba být velmi opatrný. Pokud si nejsme jistí můžeme pro jistotu použít ještě validátor konfigurace.

Instalace z flašky

Nyní máme kompletně flašku připravenou takže můžeme z ní nabootovat a měl by se nám spustit instalátor MacOS.

Samotná instalace se od této chvíli už ničím neliší od klasické instalace na jakýkoliv Apple počítač a nebo při použití Cloveru, takže zde detaily uvádět nebudu.

Přesun OpenCore na EFI pevného disku

Posledním krokem po úspěšné instalaci bude přesun OpenCore s flešky na pevný disk, tak abychom nemuseli bootovat právě z flašky.

To uděláme poměrně jednoduše:

  1. nejprve si připojíme flešku a zkopírujeme obsah EFI (adresáře BOOT a OC) někam na disk (EFI si připojíme opět pomocí MountEFI, který jsme si představili dříve
  2. nyní flešku odpojíme a připojíme si naopak EFI s pevného disku
  3. tam bychom měli vidět jen adresář Apple a přidáme si BOOT a OC který jsme zkopírovali z flešky
  4. hotovo

Pokud se rozhodnete do OpenCore jít přeji pevné nervy a pokud se vám podaří vyřešit nějaký zapeklitý problém bude zajímavé si to přečíst v komentářích 🙂

Add comment

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..