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 🙂
- 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:
- 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í.
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 souborHfsPlus.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: ReplacedVBoxHfs
driver withOpenHfsPlus
. 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.efiOpenRuntime.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žkuResources
a upravitconfig.plist
, ke kterému se dostaneme později.
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á:
- CPU – SSDT-PLUG-DRTNIA
- sběrnice – SSDT-EC-DESKTOP (pro Broadwell a starší)
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ázev | Hodnota | Poznámka |
---|---|---|
AppleCpuPmCfgLock | False | Potřeba pouze pro verzi 10.10 a starší |
AppleXcpmCfgLock | True | Není potřeba pokud hodnot CFG-Lock je zakázána v BIOSu |
DisableIOMapper | True | Není potřeba pokud VT-D je zakázáno v BIOSu |
LapicKernelPanic | False | Pouze pro HP notebooky |
PanicNoKextDump | True | |
PowerTimeoutKernelPanic | True | |
XhciPortLimit | True |
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ázev | Hodnota | Poznámka |
---|---|---|
AppleDebug | True | Zapne debugování |
ApplePanic | True | Zapíše kernel panics do logu na disk |
DisableWatchDog | True | Zakáže UEFI watchdog |
Target | 67 | Ukáže více debug informací |
.. dále do Security
:
Název | Hodnota | Poznámka |
---|---|---|
AllowNvramReset | True | Umožnuje NVRAM reset pomocí Cmd+Opt+P+R |
AllowSetDefault | True | Umožňuje Ctrl+Enter pro vybrání výchozího zařízení pro boot |
BlacklistAppleUpdate | True | Blokuje firmware aktualizace |
ScanPolicy | 0 | |
SecureBootModel | Default | |
Vault | Optional |
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ázev | Hodnota | Poznámka |
---|---|---|
IgnoreInvalidFlexRatio | True | Je potřeba pro všechny desky před Skylake |
UnblockFsConnect | False | Potř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:
- 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
- nyní flešku odpojíme a připojíme si naopak EFI s pevného disku
- tam bychom měli vidět jen adresář Apple a přidáme si BOOT a OC který jsme zkopírovali z flešky
- 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