![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
![]() Adepte de Macbidouille ![]() Groupe : Membres Messages : 190 Inscrit : 23 Nov 2016 Membre no 200 380 ![]() |
![]() ![]() OpenCore - Z370 HD3P ![]() Avertissement: Ce topic n'est pas un guide complet universel pour créer un hackintosh de zéro pour toutes les configurations. C'est un retour d'expérience (retex) et guide détaillé d'installation de macOS sur ma configuration avec carte mère Z370 HD3P avec l'aide d'OpenCore et qui peut éventuellement aider d'autres personnes qui souhaitent se lancer dans l'aventure hackintosh et qui ont la même configuration ![]() Je ne prétends pas détenir la vérité absolue donc si vous avez des remarques ou suggestions sur le paramétrage n'hésitez pas ![]() ----------- ----------- Sommaire:
----------- -----------
Je n'ai pas changé grand chose depuis l'achat de la config en 2019 (juste changé 1 disque dur pour le stockage). Les changements sont surtout autour du hackintosh (chaise, éclairages..) ![]() Carte mère: Gigabyte Z370 HD3P Processeur: Intel Core i7-8700K @ 3,7 Ghz (6 coeurs / 12 threads / turbo jusqu'à 4,7 Ghz) Ventirad: BeQuiet Dark Rock 4 Boitier: Fractal Design Define R5 Alimentation: BeQuiet Straight Power 11 750W 80PLUS Gold Mémoire RAM: Corsair Vengeance LPX 16Go (2x8Go) DDR4 2666MHz (CMK16GX4M2A2666C16) Carte Graphique: Sapphire PULSE Radeon RX 570 4Go GDDR5 (2xHDMI / 2xDisplayPort) Carte Wifi et Bluetooth: Broadcom BCM94360CD SSD: 1xSSD NVME M.2 WD SN750 de 1TO (version avec dissipateur) pour macOS et 1xSSD MX 300 750 Go pour Windows. Disques durs: Plusieurs disques durs WD pour stockage données et sauvegarde Time Machine Ecrans: 2x Dell U2417H Full HD 1080p (1 sur pied et 1 sur bras) Enceintes: Bose Companion 20 Webcam: Logitech HD Pro C920 Périphériques: Magic Mouse 2 et Magic Keyboard ![]() (Ne vous laissez pas distraire par les Avengers, le hackintosh est le boitier en bas à gauche ![]() -----------
OpenCore: https://github.com/acidanthera/OpenCorePkg/releases/ OCBinaryData: https://github.com/acidanthera/OcBinaryData Guide Dortania pour OpenCore: https://dortania.github.io/OpenCore-Install-Guide/ Guide Dortania Post-installation OpenCore: https://dortania.github.io/OpenCore-Post-Install/ Les 2 guides Dortania sont très utiles pour appréhender l'utilisation d'OpenCore. J'ai pu réaliser ce hackintosh sous OpenCore grâce à ces 2 guides ![]() J'y ferais souvent référence dans ce retex. Kexts utilisés: VirtualSMC (et plugins): https://github.com/acidanthera/VirtualSMC/releases Lilu: https://github.com/acidanthera/Lilu/releases WhateverGreen: https://github.com/acidanthera/WhateverGreen/releases AppleALC: https://github.com/acidanthera/AppleALC/releases IntelMausi: https://github.com/acidanthera/IntelMausi/releases NVMeFix: https://github.com/acidanthera/NVMeFix/releases USB-Map-Z370HD3P: Injecteur USB personnalisé pour la Z370 HD3P (pour plus d'infos, voir la partie "détails sur injecteur USB" dans le post 5 du retex): https://www.dropbox.com/s/2z3c4etlpgaqnra/U...P.kext.zip?dl=0 SSDT utilisés: SSDT-Plug (CPU Power Management): https://github.com/dortania/Getting-Started...PLUG-DRTNIA.aml SSDT-EC-USBX: https://github.com/dortania/Getting-Started...SBX-DESKTOP.aml SSDT-AWAC: https://github.com/dortania/Getting-Started...d/SSDT-AWAC.aml Utilitaires utilisés: MountEFI: https://github.com/corpnewt/MountEFI ProperTree: https://github.com/corpnewt/ProperTree OCConfigCompare: https://github.com/corpnewt/OCConfigCompare Dossier EFI: Je vous mets à disposition mon dossier "EFI" pour la Z370 HD3P de la clé USB d'installation basé sur OpenCore 0.7.3: https://www.dropbox.com/s/wrodbwt1s4vjusc/E...70HD3P.zip?dl=0 ATTENTION: Il y a quelques réglages à faire dans le config.plist avant d'utiliser ce dossier "EFI": - Si vous n'utilisez pas le BIOS modifié par Gigabyte pour avoir l'option "CFG-Lock" de disponible dans le BIOS (voir le détails dans le post 3 du retex) vous devrez alors passer le paramètre "AppleXcpmCfgLock" à "True" dans le config.plist dans la section "Kernel --> Quirks" - Le config.plist mis en partage est vierge de numéros de série. Vous devrez générer les vôtres à l'aide de l'outil GenSMBIOS et renseigner les paramètres nécessaires dans la section "PlatformInfo" Vous trouverez plus de détails sur comment modifier le config.plist à la fin de ce post et les détails des paramètres à renseigner dans la section "PlatformInfo" ainsi que l'utilisation de GenSMBIOS dans le post 2. - Le config.plist est réglé pour être en mode verbose. Vous pouvez lire la partie "fignolage" du retex dans le post 4 pour savoir comment le retirer en post installation. Je vais maintenant vous expliquez ce que contient ce dossier "EFI" et comment j'ai fait étape par étape ![]()
Création de la clé USB: Dans ce retex, j'ai installé macOS Big Sur (11.5.2) avec l'aide d'OpenCore 0.7.2. Dans un premier temps, après avoir téléchargé la version de macOS voulu, il faut créer une clé USB bootable. La première étape consiste à créer une clé USB d’installation tout à fait banale comme indiqué par Apple ici Je formate donc une clé USB au format "Mac OS étendu (journalisé)" avec le schéma "Table de partition GUID" à l’aide de l’utilitaire de disque de macOS. Je nomme ma clé "MyVolume" (le nom de la clé n’a pas d’importance du moment qu’il est raccord avec le nom présent dans la commande suivante). ![]() Ensuite, grâce à la commande "createinstallmedia", je lance la création de la clé USB d’installation. Donc, dans mon cas, pour l’installation de macOS Big Sur, je tape cela dans le terminal: Code sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume ![]() Une fois le processus de création de la clé terminé, il faut maintenant la rendre "compatible hackintosh". C’est là que l’on va "installer" le bootloader OpenCore. Tout d'abord, il faut monter la partition "EFI" de la clé USB. C’est dans cette partition que l'on déposera tous les fichiers nécessaires au Hackintosh (OpenCore, les drivers d’OpenCore, les kexts ect ect) Pour cela, on a besoin de l’utilitaire "MountEFI" Au premier lancement, il faut faire un clique droit sur "MountEFI.command" et cliquer sur "Ouvrir" pour pouvoir lancer l’utilitaire. On sélectionne ensuite le disque pour lequel on souhaite monter la partition EFI et qui correspond à notre clé USB (pour mon cas ici, c’est le "2") ![]() La partition "EFI" apparaitra alors dans le Finder ![]() Installation des éléments nécessaires dans la partition EFI de la clé (OpenCore, SSDT, Drivers, Kexts, "Resources"): On va maintenant installer ce qu’il faut dans la partition "EFI". C'est ici que nous avons besoin d'OpenCore. Je télécharge la version "RELEASE" d’OpenCore. Ce retex se base sur la dernière version d'OpenCore disponible au moment de son écriture, c'est à dire la version 0.7.2. Nous aurons aussi besoin de OCBinaryData qui contient des ressources pour l’interface graphique d’OpenCore (et qui contient aussi le driver "HFSPlus.efi" qui nous sera utile ![]() Il faut ensuite copier le dossier "EFI" qui se trouve dans le répertoire "X64" du dossier OpenCore que l'on a téléchargé, et le coller dans la racine de la partition "EFI" de notre clé USB. Attention à bien copier le dossier "EFI" lui même et pas seulement son contenu. ![]() On va ensuite avoir besoin d’ajouter des fichiers supplémentaires: - Les SSDT Les fichiers SSDT dont on a besoin ici sont, pour faire très simple, des fichiers qui vont permettre de mieux identifier certains éléments matériels de notre configuration. Je ne vais pas entrer dans le détail volontairement car je ne maitrise pas ces notions. Vous pouvez aller jeter un coup d’oeil ici du guide de Dortania si vous voulez en savoir plus ![]() Personnellement, je n’ai pas créé mes SSDT personnalisés. J’ai repris les fichiers universels proposés par le guide de Dortania et qui suffisent amplement. Pour notre carte mère (chipset Z370) et notre processeur (de génération Coffee Lake), nous avons besoin des 3 fichiers suivants: - SSDT-Plug: Pour la gestion d’alimentation du CPU - SSDT-EC-USBX: Pour la gestion des ports USB (à utiliser en plus du kext injecteur USB) - SSDT-AWAC: Pour la gestion de l’horloge système, utile seulement si vous êtes sur un BIOS supérieur à la version F11 sur la Z370-HD3P. Ces fichiers sont à déposer dans le répertoire "EFI/OC/ACPI" dans notre partition "EFI" de la clé USB. - Les Drivers Les drivers vont permettre à OpenCore d'exploiter notre matériel afin de démarrer macOS mais aussi, certains de ces drivers vont permettre à OpenCore d’étendre ses possibilités pour, par exemple, gérer une interface graphique dans le menu de boot, de gérer l’audio au démarrage (pour avoir le "gong" de démarrage des vrais Mac par exemple ![]() Si vous voulez plus d’informations sur ce que font tous les drivers fournis avec OpenCore, vous trouverez les infos dans le document "Configuration.pdf" présent dans le répertoire "Docs" du package d'OpenCore que l'on a téléchargé. Attention à ne pas confondre ces drivers là (utilisés par OpenCore) avec les Kexts, que l'on verra plus tard et qui sont aussi des sortes de drivers mais utilisés cette fois par le système (macOS). Pour ma part, je n’utilise que les drivers suivants: Ils sont dans le répertoire "EFI/OC/Drivers" dans notre partition "EFI" de notre clé USB. - AudioDxe.efi : qui permet à OpenCore d'avoir accès au contrôleur audio (pour ajouter le petit "gong" de démarrage) - CrScreenshotDxe.efi : qui me permet de fait des screenshots lorsque je suis sur le menu d’OpenCore - OpenRuntime.efi: qui permet une gestion de la mémoire (driver indispensable et obligatoire) - OpenCanopy.efi: qui permet à OpenCore d'avoir accès aux ressources graphiques (pour qu'OpenCore puisse avoir une interface graphique) J’ajoute un 5ème driver qui provient de OCBinaryData et qui se trouve dans le dossier "Drivers" d'OCBinaryData, c’est: - HfsPlus.efi: qui permet à OpenCore de voir les partitions HFS (comme par exemple la partition Recovery). Je supprime tous les autres drivers qui sont présents dans "EFI/OC/Drivers" et qui ne me servent pas. - Les Kexts Les Kexts sont un peu comme les drivers (pilotes) utilisés par macOS. Si vous voulez plus d’infos, je vous invite à lire ce topic sur Macbidouille ![]() J’utilise les kexts suivants (à chaque fois, je télécharge le version "RELEASE" des Kexts): - VirtualSMC.kext: Qui permet de simuler la puce SMC présente sur les Mac (Kext indispensable et obligatoire) - SMCProcessor.kext : fait partie du package de VirtualSMC. C’est un plugin servant au monitoring (Température CPU) - SMCSuperIO.kext: fait partie du package de VirtualSMC. C’est un plugin servant au monitoring (Vitesse ventilateur) - AppleALC.kext: Pour la reconnaissance du contrôleur audio (ALC1220) - WhateverGreen.kext: Pour la gestion de la carte graphique AMD (RX 570) - Lilu.kext: Qui est indispensable pour VirtualSMC, WhateverGreen et AppleALC - IntelMausi.kext: Pour la reconnaissance du contrôleur Ethernet présent sur notre carte mère (i219V) - NVMeFix.kext: Qui permet de mieux gérer la consommation des SSD Nvme tiers - USB-Map-Z370HD3P.kext : Mapping personnalisé des ports USB de la carte mère Z370 HD3P créé par mes soins (voir la partie "Détails sur l'injecteur USB" dans le post 5 pour plus de détails sur la nécessité de ce kext et sur les ports USB qui y sont référencés). Ces kexts sont à mettre dans le répertoire "EFI/OC/Kexts" dans notre partition "EFI" de la clé USB. - Les "Resources" Les fichiers présents dans ce dossier vont permettre à OpenCore d'avoir une interface graphique et d'avoir des fichiers audios à gérer au démarrage (comme le "gong" de démarrage par exemple) Le répertoire "EFI/OC/Resources" contient, de base, 4 sous répertoires: "Audio", "Font", "Image", "Label" qui sont vides. On va remplacer ces répertoires par ceux présents dans OCBinaryData, qui eux, contiennent les médias nécessaires ![]() Donc je supprime ces 4 sous répertoires et je les remplace par les 4 même sous répertoires d’OCBinaryData qui contiennent les fichiers audio, de polices, d’icônes ect. - Les "Tools" Les fichiers présents dans ce répertoire sont des outils autonomes qui permettent de faire certaines actions. De même que les drivers OpenCore, si vous voulez plus d’informations sur ce que font tous ces outils fournis avec OpenCore, vous trouverez les infos dans le document "Configuration.pdf" présent dans le répertoire "Docs". Ces outils sont dans le répertoire "EFI/OC/Tools" dans notre partition "EFI" de la clé USB. Je n’entre pas dans le détail ici car je les supprime tous (attention je supprime seulement les fichiers présents dedans mais je garde le répertoire "Tools" qui est donc vide) - Le "config.plist" Il nous reste un dernier fichier à ajouter à notre partition "EFI" c’est le "config.plist". C'est LE fichier le plus important. ![]() Il s'agit du fichier de configuration d’OpenCore que l’on va devoir customiser L’idée est de se baser sur le fichier "sample" qui se trouve dans le répertoire "Docs" du package d’OpenCore que l’on a téléchargé. ![]() On copie ce fichier "sample" et on vient le coller dans le répertoire "EFI/OC" dans notre partition "EFI" de la clé USB. On renomme ensuite ce fichier "config.plist" Une fois ce fichier ajouté, notre dossier "EFI" est complet ![]() Il devrait ressembler à ça: ![]() ATTENTION: On ne peut pas encore démarrer sur la clé. Il faut maintenant "customiser" le config.plist (le "sample" ne peut pas s’utiliser en l'état). C'est ce que l'on va voir dans la prochaine étape ![]()
Donc, avoir copié le "sample.plist" dans notre dossier "EFI" et l'avoir renommé en "config.plist" n'est pas suffisant et il faut maintenant le customiser. On doit, en effet, le personnaliser, afin qu'ils correspondent à notre configuration. On va pas se le cacher, c’est l’étape la plus longue et chiante ![]() ![]() Pour commencer, il nous faut un éditeur plist. J’ai utilisé celui recommandé par le guide de Dortania: ProperTree car il possède des fonctions propres à l'utilisation d'OpenCore (comme le "OCSnapshot" que l'on va voir plus bas) Une fois le dossier téléchargé, aller dans le répertoire "Scripts" et faire un clique droit sur le fichier "buildapp-select.command" et cliquer sur "Ouvrir" afin de créer une app dédiée. ![]() Il se peut qu’une fenêtre s’ouvre vous demandant d’installer des outils supplémentaires pour python 3. Installer les. ![]() Ensuite, s'il y a plusieurs versions de python installés sur votre machine, le programme vous demandera celui que vous souhaitez utiliser. Choisir python3 ![]() Le programme créera alors une app "ProperTree" à la racine du dossier. ![]() Déplacer la alors dans le dossier "Applications" et on est prêt ![]() Une fois l'application lancée, ouvrir le fichier "config.plist" qui se situe dans le dossier "EFI/OC" de la partition "EFI" de la clé USB (soit par le menu "file" --> "Open" ou le raccourci clavier "Cmd + O") La première étape consiste à déclarer les fichiers SSDT, Kexts et Drivers dans le config.plist et dont on a besoin. En effet, c'est un différence avec le bootloader Clover. Avec OpenCore, les SSDT, Kexts, Drivers et Tools doivent être déclarés dans le config.plist pour pouvoir être pris en compte. Pour ce faire, ProperTree a une fonction bien pratique qui permet de faire cette déclaration automatiquement: Le "Snapshot" Sélectionner le menu "OC Clean Snapshot" dans ProperTree (menu "File"-->"OC Clean Snapshot" ou le raccourci clavier "Cmd + Shift + R") On choisit le répertoire "OC" qui se trouve dans le dossier "EFI" de notre partition "EFI" de la clé USB ![]() Cette action va permettre de déclarer les fichiers SSDT, Kexts, Drivers et Tools qui sont dans notre dossier "EFI", directement dans le config.plist (et, par la même occasion, supprimer la déclaration de ceux qui sont par défaut dans le sample). Ensuite, nous voila maintenant prêt à configurer les différentes sections du config.plist Il y a 8 sections à configurer (et chaque section à ses propres sous sections) ![]() Ces sections se paramètrent en fonction de la génération du processeur et, pour certains paramètres, en fonction du chipset. Je me suis basé sur cette partie du guide de Dortania pour savoir ce que je devais paramétrer pour la génération de processeur "Coffee Lake" (puisque le processeur i7-8700K est de cette génération) ainsi que la partie post Install du guide de Dortania pour la configuration de l’audio et interface graphique Je vais uniquement indiquer les paramètres que j’ai modifiés/ajoutés par rapport au sample sans entrer dans le détail de chacun d’eux. Si je ne parle pas d’un paramètre c’est que j’ai laissé la valeur par défaut définie dans le sample. Je ne peux que vous encouragez à aller voir le guide de Dortania et/ou voir le document "Configuration.pdf" pour avoir le détail de chaque paramètre et comprendre à quoi il sert. Et c’est parti (dans le post suivant) ![]() Ce message a été modifié par MaxPoska - 2 Oct 2021, 22:35. -------------------- MyHack:
Config 2019 (Coffee Lake): Retex/Guide avec OpenCore ici Carte mère: Gigabyte Z370-HD3P Processeur: Intel Core i7 8700K @ 3,7 Ghz (6 coeurs / 12 threads / turbo jusqu'à 4,7 Ghz) RAM: Corsair Vengeance LPX 16Go (2x8Go) DDR4 2666MHz Carte Graphique: Sapphire Pulse AMD Radeon RX 570 Old config (Haswell): Carte mère: Gigabyte Z97-D3H Processeur: Intel Haswell Core i5-4460 3,2Ghz RAM: Crucial Ballistix: 2x4Go Carte Graphique: Sapphire Pulse AMD Radeon RX 570 |
|
|
![]() |
![]()
Message
#2
|
|
![]() Adepte de Macbidouille ![]() Groupe : Membres Messages : 190 Inscrit : 23 Nov 2016 Membre no 200 380 ![]() |
Depuis macOS El Capitan, macOS ne sait gérer que 15 ports USB par contrôleur. On pourrait se dire que cette limitation est large mais en réalité, on peut atteindre cette limite assez rapidement. En effet, par exemple, un port USB3 physique présent sur la carte mère va en réalité être comptabilisé comme 2 ports USB "logique": 1 comme port USB3 et 1 comme port USB2 Sur la carte mère Z370 HD3P, il y a un total de 15 ports USB physiques répartis sur 2 contrôleurs: 1 contrôleur géré par le chipset et 1 contrôleur supplémentaire géré par la puce ASMedia 3142 (qui est reconnu nativement sous macOS) Code Chipset+ASMedia® USB 3.1 Gen 2 Controller: 1 x USB Type-C™ port on the back panel, with USB 3.1 Gen 2 support 1 x USB 3.1 Gen 2 Type-A port (red) on the back panel Chipset: 1 x USB Type-C™ port with USB 3.1 Gen 1 support, available through the internal USB header 6 x USB 3.1 Gen 1 ports (4 ports on the back panel, 2 ports available through the internal USB header) 6 x USB 2.0/1.1 ports (2 ports on the back panel, 4 ports available through the internal USB headers) En partant du principe qu'un port USB3 compte pour 2 ports, cela donne en réalité 24 ports USB logique utilisable. Si on ne fait rien, certains ports USB seront désactivés de manière aléatoire par macOS à chaque démarrage pour rester dans la limite de 15 et ils ne seront pas forcément reconnu pour fonctionner à la bonne vitesse. Par exemple, on démarre son hackintosh un jour J, ce seront les ports USB en façade du boitier qui seront désactivés par macOS et si on redémarre son hack à J+1, ça sera des ports USB à l'arrière de la carte mère qui ne fonctionneront pas, etc etc. Pour éviter cela, le but de la création d'un injecteur USB est de se créer un kext personnalisé avec les ports USB que l'on souhaite activer tout en restant dans la limite des 15 ports USB par contrôleur. -- Inventaire -- La première étape consiste donc à faire un inventaire de tous les ports USB de notre carte mère. Pour faire cela, j'ai: - Passé provisoirement à "True" le paramètre "XhciPortLimit" présent dans le config.plist dans la section "Kernel --> Quirks" afin de faire sauter temporairement la limite des 15 ports USB - Utilisé le kext USBInjectAll pour injecter tous les ports USB - Utilisé l'utilitaire IORegistry pour découvrir l'adresse des contrôleurs et des ports USB Alors pourquoi s'embêter à faire cet inventaire et rester dans la limite de 15 ports si il y a un paramètre et un kext qui nous permettent d'outrepasser cette limite et de les utiliser tous ? Parce que l'utilisation de ces solutions de contournement n'est pas fiable sur le long terme et présente un risque de corruption des données notamment. Ensuite, le but du jeu est de connecter une clé USB dans chaque connecteur et de vérifier le nom et l'adresse du port avec IORegistry. On connecte une clé USB2 dans un connecteur USB2, une clé USB3 dans un connecteur USB3, une clé USB2 dans un connecteur USB3 etc etc pour faire l'inventaire complet. Par exemple: Quand je connecte une clé USB3 dans le port USB3 le plus à droite en façade du boitier, je repère ensuite dans IORegistry sur quel port la clé a été associé (la clé USB apparait en vert) ![]() Ici, la clé USB a été montée sur le port "SS05" à l'adresse "15000000". J'en conclus donc que le port USB3 du connecteur UBS3 à droite du boitier en façade est le port "SS05" à l'adresse "15000000". Et on fait ça pour tous les ports ![]() Si vous souhaitez avoir plus d'informations sur l'intérêt de faire ce référencement et comment le faire, vous pouvez lire cette partie du guide de Dortania Voici ce qu'a donné mon inventaire pour la Z370 HD3P: ![]() ![]() ![]() Je n'ai pas référencé 3 ports: - Le second port USB2 qui est disponible sur le port interne F_USB2 puisque je n'ai qu'une seule chose qui est connecté sur ce connecteur c'est la carte Broadcom qui est utilisée pour le Bluetooth - Les 2 ports (USB2 et USB3) du connecteur USB-C interne (F_USB30C) car je n'ai pas de port USB-C sur mon boitier en façade pour pouvoir utiliser ce connecteur. Si on calcule tous les ports référencés (21) + les 3 ports non référencés, on arrive bien à un total de 24. Concernant les ports USB que je conserve. - Pour le contrôleur ASMedia: il n'y a que 4 ports USB liés à ce contrôleur sur 15 possibles. Donc je conserve les 4. - Pour le contrôleur du chipset: il y en a 20. Donc je dois en éliminer 5 pour rester dans la limite de 15. Je sacrifie les 3 ports que je n'ai pas référencés ainsi que les 2 ports liés au connecteur USB3 à côté du port Ethernet. -- Le Kext injecteur -- Une fois que l'on a fait l'inventaire des ports USB que l'on souhaite conserver et utiliser, il faut maintenant les référencer dans un kext (mon kext déjà fait peut être téléchargé en haut du topic dans "les liens utiles" ou si vous suivez le guide de Dortania, vous téléchargerez un sample). Ce kext va permettre de dire à macOS: "Voilà, ce sont les ports USB qui sont utilisés sur cette machine" ![]() Pour accéder au fichier de configuration du kext, on fait un clique droit sur le kext et on sélectionne "Afficher le contenu du paquet". Le fichier de configuration se nomme "info.plist" et se trouve dans le répertoire "Contents". Pour commencer, on paramètre les contrôleurs: ![]() Dans la rubrique "IOKitPersonalities" - iMac19,1-ASMedia --> représente le contrôleur ASMedia - IOPathMatch --> définit le chemin du contrôleur ("IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/RP05@1C,4/IOPP/PXSX@0/PXSX@00000000" pour le contrôleur ASMedia et "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC@14/XHC@14000000" pour le contrôleur du chipset). Ce chemin a été repéré grâce à IOService (comme les ports). - model --> iMac19,1 qui correspond au SMBIOS qui a été choisi pour ce hackintosh. Il doit être le même que ce qui est paramétré dans le "config.plist" dans la section "PlatformInfo --> SystemProductName". Sinon, les infos du kext ne seront pas prises en compte. Ensuite, on paramètre les ports: - Contrôleur ASMedia (iMac19,1-ASMedia) ![]() - Contrôleur chipset (iMac19,1-XHC) ![]() ![]() - port-count --> Indique le port qui a l'adresse la plus grande que l'on injecte pour notre contrôleur Dans la description de chaque port (balise ports): - HA03, SA01, HS03, SS03 etc etc --> représente le nom du port. HS pour HighSpeed pour les ports USB2 et SS pour SuperSpeed pour les ports USB3. Pour le contrôleur ASMedia, IORegistry me référence les ports sous le nom "AppleUSB30XHCIPort" et "AppleUSB20XHCIPort" Or, dans le kext, il faut que le nom soit sur 4 caractères. Donc, pour rester dans la philosophie de nom des ports du chipset, j'ai choisi de nommer les ports USB du contrôleur ASMedia de la manière suivante: HA pour HighSpeedAsmedia pour les ports USB2 et SA pour SuperSpeedAsmedia pour les ports USB3 - UsbConnector --> indique le type de connecteur USB. "3" pour un connecteur USB3, "0" pour un connecteur USB2, "9" pour un connecteur USB-C, "255" pour un connecteur interne (pour le Bluetooth) - port --> indique l'adresse du port que l'on a trouvé grâce au référencement - Comment --> Commentaire libre: j'indique ici de quel port il s'agit sur quel connecteur pour m'y retrouver Voilà, la déclaration des ports USB est maintenant complète ![]() A la fin, on oublie pas de retirer USBInjectAll.kext pour le remplacer par notre kext personnalisé (et de le déclarer et l'activer dans le config.plist sinon il ne sera pas pris en compte) et de passer le paramètre "XhciPortLimit" à "False" afin de revenir sur la limite des 15 ports USB. A la fin, on peut vérifier dans IOService que tous les ports USB que l'on a gardé sont bien chargés par le kext: ![]()
OpenCore est un bootloader stable, certes, mais encore relativement jeune et, à ce titre, il est très régulièrement mis à jour. En effet, à la période où j’écris ces lignes, il y a une mise à jour d’OpenCore qui sort mensuellement. Tous les premiers lundi de chaque mois pour être précis. Cependant, sachez que vous n’êtes pas obligé de faire toutes les mises à jour d’OpenCore. J’aurai même tendance à dire que tant que sa configuration fonctionne, ne pas faire les mises à jour. En fait, vous devez un minimum vous renseigner pour savoir ce qu’apporte la nouvelle mise à jour d’OpenCore pour savoir s'il y a des choses qui peuvent être intéressante et qui valent le coût pour vous de mettre à jour OpenCore. Pour voir ce qu’apporte un mise à jour vous pouvez: - Lire le post de blog des développeurs ici - Consulter le changelog d’OpenCore lors du téléchargement du package - Consulter le document "Différences.pdf" présent dans le répertoire "Docs" lorsque l’on télécharge OpenCore. Ce document met en avant les différences avec la précédente version d’OpenCore. - Faire une recherche Google (ou autres moteur de recherche) ![]() Le principe d'une mise à jour d’OpenCore consiste à remplacer les fichiers les plus importants qui sont dans notre partition "EFI" par les fichiers de la nouvelle version, notamment, les fichiers suivants: - "BOOTx64.efi" qui se trouve dans la partition "EFI" dans le répertoire "EFI/BOOT" - "OpenCore.efi" qui se trouve dans la partition "EFI" dans le répertoire "EFI/OC" - Les drivers qui se trouvent dans la partition "EFI" dans le répertoire "EFI/OC/Drivers" Personnellement, j’en profite aussi pour mettre à jour les Kexts lorsque je fais une mise à jour d’OpenCore. Ça, c’était la partie facile. ![]() Le plus lourd maintenant est qu’il faut aussi mettre à jour parfois le fichier de configuration d’OpenCore: le config.plist. En effet, les développeurs ajoutent parfois des paramètres dans certaines sections ou, au contraire, en retirent. Il faut donc comparer notre fichier config.plist avec le nouveau sample.plist présent dans la nouvelle version d’OpenCore pour voir les différences et faire les ajustements dans notre config.plist. Le retex est basé sur la version 0.7.2. Entre temps est sortie la version 0.7.3. Je vais donc faire la mise à jour d’OpenCore 0.7.2 vers la 0.7.3 pour illustrer comment je procède. (Je ne prétends pas dire que c'est "LA" méthode, et qu'il faut faire comme ça, je présente juste "MON" rituel de mise à jour basé sur les conseils du guide de Dortania ici) -- Cas pratique: mise à jour d'OpenCore 0.7.2 vers 0.7.3 -- Avant de commencer, je conseil d’avoir une sauvegarde du dossier "EFI" ainsi qu'une clé USB avec un dossier "EFI" OpenCore fonctionnel (comme celui de la clé USB d’installation) afin de s’en servir pour démarrer au cas où quelque chose se passe mal. Pour commencer, je regarde le changelog de la version 0.7.3. ![]() On y voit des choses intéressantes comme une amélioration des performances d’OpenCanopy (pour la gestion de l’interface d’OpenCore) ou encore l’ajout d’un driver pour Linux. Mais les 2 points sur lesquelles il faut faire attention c’est l’ajout d’arguments pour les drivers et un nouveau paramètre dans la section UEFI. Je vais donc devoir modifier le config.plist. Pour commencer, il faut monter la partition "EFI" à l’aide de MountEFI pour avoir accès aux fichiers. Ensuite, je télécharge la nouvelle version d’OpenCore. Avant de modifier le config.plist, je commence par mettre à jour les fichiers dans la partition "EFI" Je remplace les fichiers "BOOTx64.efi", "OpenCore.efi" et les drivers qui sont dans le dossier "EFI" par ceux du package d’OpenCore que l’on vient de télécharger et qui sont dans le répertoire "x64/EFI" Pour le driver "HfsPlus.efi", on peut aller voir dans OCBinary Data ici s'il y a une nouvelle version du driver (mais il n'est pas souvent mis à jour) et ce n'est pas le cas ici. Je mets aussi à jour les Kexts que j’utilise s'il y a des mises à jour (ce n’est pas une obligation mais généralement j'en profite pour le faire). Ensuite, pour la modification du config.plist, je vais utiliser un outil qui ma permettre de comparer le fichier config.plist que j’utilise avec le sample du nouveau package d’OpenCore: OCConfigCompare En effet, même si là, on pourrait s’en passer car on a repéré grâce au changelog quelles étaient les modifications à apporter, si on saute plusieurs versions d’OpenCore, cet utilitaire devient vite très utile ![]() Lancer OCConfigCompare (clique droit sur "OCConfigCompare.command" puis "Ouvrir" pour le premier lancement) La première étape consiste à sélectionner les 2 fichiers de configuration à comparer (notre fichier config.plist local et le nouveau sample) Choisir l’option "3" pour sélectionner le fichier sample et glisser/déposer dans la fenêtre le fichier sample présent dans le répertoire "Docs" du package d’OpenCore que l’on a téléchargé ![]() Ensuite, choisir l’option "4" pour sélectionner notre fichier config.plist local et glisser/déposer dans la fenêtre le fichier config.plist qui se trouve dans notre partition "EFI" dans le dossier "EFI/OC" ![]() Enfin, sélectionner l'option "7" pour lancer la comparaison entre les 2 fichiers ![]() La comparaison présente un tableau à 2 résultats: CODE ####################################################### # OC Config Compare # ####################################################### Checking for values missing from User plist: config.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1b,0x0) config.plist -> Misc -> BlessOverride -> From|To-Array - Empty: Skipped config.plist -> Misc -> Tools -> To-Array - Empty: Skipped config.plist -> NVRAM -> Delete -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> Delete -> 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> Delete -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> LegacySchema -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> LegacySchema -> 8BE4DF61-93CA-11D2-AA0D-00E098032B8C -> From-Array - Non-Dictionary Children: Skipped config.plist -> UEFI -> Drivers -> Array[0] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[1] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[2] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[3] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[4] - Type Difference: String --> Dictionary config.plist -> UEFI -> Quirks - Missing Key: ForceOcWriteFlash Checking for values missing from Sample: Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1F,0x3) Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x2,0x0) Sample.plist -> Misc -> BlessOverride -> From|To-Array - Empty: Skipped Sample.plist -> Misc -> Tools -> From-Array - Empty: Skipped Sample.plist -> NVRAM -> Delete -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> Delete -> 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> Delete -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> LegacySchema -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> LegacySchema -> 8BE4DF61-93CA-11D2-AA0D-00E098032B8C -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> UEFI -> Drivers -> From-Array - Non-Dictionary Children: Skipped Press [enter] to return... La première partie montre les paramètres qui sont présents dans le sample mais absents de notre fichier config.plist. Autrement dit, ce sont les éléments ajoutés. La deuxième partie, c’est l’inverse, ce sont les paramètres présents dans notre config.plist mais absents du sample. Autrement dit, ce sont les éléments retirés. Tous les résultats ne sont pas forcément pertinents: - Tout ce qui est noté "Skipped" peut être ignoré Il reste donc: CODE ####################################################### # OC Config Compare # ####################################################### Checking for values missing from User plist: config.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1b,0x0) config.plist -> UEFI -> Drivers -> Array[0] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[1] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[2] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[3] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[4] - Type Difference: String --> Dictionary config.plist -> UEFI -> Quirks - Missing Key: ForceOcWriteFlash Checking for values missing from Sample: Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1F,0x3) Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x2,0x0) Press [enter] to return... - Ensuite, les lignes liées aux clés manquantes dans la section "DeviceProperties" peuvent être ignorées puisque c'est normal Pour le signalement "PciRoot(0x0)/Pci(0x1b,0x0)" absent de notre config.plist c'est normal puisque cette ligne concerne l'audio dans le sample et nous l'avons remplacée par la vrai adresse du contrôleur audio ("PciRoot(0x0)/Pci(0x1F,0x3)") sur la Z370 HD3P (voir paramétrage du config.plist du retex dans le post 2) Du coup, c'est normal aussi qu'OCConfigCompare nous remonte l'absence de la ligne "PciRoot(0x0)/Pci(0x1F,0x3)" dans le sample. Enfin, pour le signalement "PciRoot(0x0)/Pci(0x2,0x0)" absent du sample et présent dans le config.plist, c'est normal aussi puisque nous avons ajouté cette ligne lors du paramétrage du config.plist pour régler le processeur graphique interne au processeur (voir paramétrage du config.plist du retex dans le post 2). Donc, au final, il n'y a que ceci d'intéressant et à prendre en compte: CODE ####################################################### # OC Config Compare # ####################################################### Checking for values missing from User plist: config.plist -> UEFI -> Drivers -> Array[0] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[1] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[2] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[3] - Type Difference: String --> Dictionary config.plist -> UEFI -> Drivers -> Array[4] - Type Difference: String --> Dictionary config.plist -> UEFI -> Quirks - Missing Key: ForceOcWriteFlash Press [enter] to return... On retrouve bien les sections dont parlait le changelog portant sur les drivers et l'ajout d'un paramètre dans la section "UEFI --> Quirks". Ensuite, il faut recopier les paramètres manquants du sample vers le fichier config.plist. Pour cela, on ouvre côte à côte le fichier sample et notre config.plist dans ProperTree pour bien identifier les changements remontés par OCConfigCompare et pour les reporter dans notre config.plist ![]() A gauche, le sample de la version 0.7.3 A droite, le config.plist de notre partition "EFI" basé sur la version 0.7.2 Comme indiqué par OCConfigCompare, on remarque bien que la section "Drivers" a bien changée. Les élément du tableau "Drivers" sont maintenant de type "Dictionnary" au lieu de "String" et l'on remarque que l'on a maintenant 3 propriétés par driver: "Path", "Enabled", "Arguments" La documentation d'OpenCore nous apprend ceci sur ces nouvelles propriétés: CODE 11.11 Drivers Properties 1. Path Type: plist string Failsafe: Empty Description: Path of file to be loaded as a UEFI driver from OC/Drivers directory. 2. Enabled Type: plist boolean Failsafe: false Description: If false this driver entry will be ignored. 3. Arguments Type: plist string Failsafe: Empty Description: Some OC plugins accept optional additional arguments which may be specified as a string here. Donc je reprends cette structure dans le config.plist et je passe le paramètre "Enabled" à "True" pour chacun des drivers que j'utilise pour qu'ils soient pris en compte. Pour l'ajout du paramètre "ForceOcWriteFlash" dans la section "UEFI --> Quirks", voici ce que dit la documentation d'OpenCore sur ce nouveau paramètre: CODE 5. ForceOcWriteFlash Type: plist boolean Failsafe: false Description: Enables writing to flash memory for all OpenCore system variables. Note: This value should be disabled on most types of firmware but is left configurable to account for firmware that may have issues with volatile variable storage overflows or similar. Boot issues across multiple OSes can be observed on e.g. Lenovo Thinkpad T430 and T530 without this quirk. Apple variables related to Secure Boot and hibernation are exempt from this for security reasons. Furthermore, some OpenCore variables are exempt for different reasons, such as the boot log due to an available user option, and the TSC frequency due to timing issues. When toggling this option, a NVRAM reset may be required to ensure full functionality Lorsqu'un nouveau paramètre est ajouté comme celui ci, généralement, je regarde ce qui est recomandé par le guide de Dortania à son sujet. Malheureusement, pour le cas qui nous inéresse, le guide de Dortania est resté sur la version 0.7.2 (la version d'OpenCore supportée par le guide est inscrit directement en page d'acceuil du guide) donc je me fie uniquement à la documentation. A la lecture de la doc, je vais laisser ce paramètre avec sa valeur par défaut (c'est à dire sur "False" pour ne pas l'activer) Voici ce que ça donne une fois les changements apportés à notre config.plist ![]() ![]() Evidemment, on oublie pas de sauvegarder ![]() Une fois les modifications terminées, je relance une comparaison pour vérifier que rien n'a été oublié. La nouvelle comparaison donne ceci: CODE ####################################################### # OC Config Compare # ####################################################### Checking for values missing from User plist: config.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1b,0x0) config.plist -> Misc -> BlessOverride -> From|To-Array - Empty: Skipped config.plist -> Misc -> Tools -> To-Array - Empty: Skipped config.plist -> NVRAM -> Delete -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> Delete -> 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> Delete -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> LegacySchema -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped config.plist -> NVRAM -> LegacySchema -> 8BE4DF61-93CA-11D2-AA0D-00E098032B8C -> From-Array - Non-Dictionary Children: Skipped Checking for values missing from Sample: Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x1F,0x3) Sample.plist -> DeviceProperties -> Add - Missing Key: PciRoot(0x0)/Pci(0x2,0x0) Sample.plist -> Misc -> BlessOverride -> From|To-Array - Empty: Skipped Sample.plist -> Misc -> Tools -> From-Array - Empty: Skipped Sample.plist -> NVRAM -> Delete -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> Delete -> 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> Delete -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> LegacySchema -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> From-Array - Non-Dictionary Children: Skipped Sample.plist -> NVRAM -> LegacySchema -> 8BE4DF61-93CA-11D2-AA0D-00E098032B8C -> From-Array - Non-Dictionary Children: Skipped Press [enter] to return... C'est parfait, il ne reste que les élements qui peuvent être ignorés. Enfin, pour terminer, je revalide mon config.plist avec l'utilitaire "OCvalidate" présent dans le répertoire "utilities" de la nouvelle version d'OpenCore que l'on a téléchargé. Code maxime@iMHackdeMaxime ~ % /Users/maxime/Downloads/OpenCore-0.7.3-RELEASE/Utilities/ocvalidate/ocvalidate /Volumes/EFI/EFI/OC/config.plist Completed validating /Volumes/EFI/EFI/OC/config.plist in 1 ms. No issues found. maxime@iMHackdeMaxime ~ % Si il n'y a pas d'erreur alors on peut redémarrer pour vérifier que tout va bien ![]() Personnelement, au redémarrage, j’aime bien faire un reset NVRAM (taper sur la barre espace sur le menu d'OpenCore et sélectionner "Reset NVRAM") pour m'assurer de repartir propre (attention, il faudra alors reselectionner le disque de démarrage à utiliser par défaut dans les préférences système si comme moi vous êtes en multiboot). Enfin, pour vérifier la version d'OpenCore qui est utilisée, vous avez l'information dans le menu de boot d'OpenCore en bas à droite au démarrage ou alors on peut taper la commande suivante dans le terminal Code nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version R.A.S pour moi, passage sur OpenCore 0.7.3 avec succès ![]() Code maxime@iMHackdeMaxime ~ % nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version REL-073-2021-09-06 maxime@iMHackdeMaxime ~ % --------------------------- FIN Si vous avez tout lu, bravo ![]() En espérant que ça puisse aider ![]() -------------------------- Ce message a été modifié par MaxPoska - 30 Sep 2021, 13:33. -------------------- MyHack:
Config 2019 (Coffee Lake): Retex/Guide avec OpenCore ici Carte mère: Gigabyte Z370-HD3P Processeur: Intel Core i7 8700K @ 3,7 Ghz (6 coeurs / 12 threads / turbo jusqu'à 4,7 Ghz) RAM: Corsair Vengeance LPX 16Go (2x8Go) DDR4 2666MHz Carte Graphique: Sapphire Pulse AMD Radeon RX 570 Old config (Haswell): Carte mère: Gigabyte Z97-D3H Processeur: Intel Haswell Core i5-4460 3,2Ghz RAM: Crucial Ballistix: 2x4Go Carte Graphique: Sapphire Pulse AMD Radeon RX 570 |
|
|
![]() ![]() |
Nous sommes le : 17th June 2025 - 22:26 |