IPB

Bienvenue invité ( Connexion | Inscription )

> Reconstruire le cache Système sous OS X/macOS, Et en bonus, vérifier/Réparer les permissions sous OS X 10.11 El Cap
Options
polyzargone
posté 9 Nov 2015, 22:26
Message #1


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 13 720
Inscrit : 11 May 2006
Membre no 60 938





Le cache Système et le prelinkedkernel sous OS X/macOS




Vous avez certainement beaucoup entendu parlé sur les divers forums Hackintosh de l'importance du cache Système. Je vous propose de faire le point sur son fonctionnement et de vous expliquer dans quelles conditions le reconstruire et bien sûr, comment le faire*. Évidemment, il ne s'agit pas de rentrer dans les détails ni de tout savoir sur la question mais juste de présenter quelques notions de base.

De toute manière, il y aurait beaucoup trop à dire sur le sujet et je serais bien incapable de vous en dire plus tongue.gif . N'hésitez pas à commenter ou à me signaler des erreurs ou des oublis.

Cela étant précisé, je vais me concentrer principalement sur les versions récentes d'OS X/macOS et sur les deux principaux bootloaders utilisés à ce jour : Clover et Chameleon/Enoch.

* Si la partie explicative ne vous intéresse pas, téléchargez simplement le script de ce post en PJ tongue.gif .


◉ Les cas où reconstruire le cache est nécessaire :

En fait, il s'agit plutôt de le mettre à jour que de le reconstruire et c'est lorsque l'on modifie le dossier System/Library/Extensions que cela devient important.

Voici les cas où il faut le faire :
■ Lorsque l'on ajoute un ou plusieurs kexts.
■ Lorsque l'on modifie un ou plusieurs kexts (en le patchant "en dur" par exemple comme le font certains logiciels comme ADGPfix).
■ Lorsque l'on supprime un ou plusieurs kexts.

Pourquoi c'est nécessaire ?

Pour comprendre ce qui se passe, il faut savoir qu'OS X/macOS ne s'amuse pas à charger tous les kexts qui se trouvent dans System/Library/Extensions à chaque fois qu'il démarre. Ça prendrait beaucoup de temps et ça n'est pas nécessaire lorsque l'on sait que tous ne sont pas utiles au fonctionnement d'un Mac et à fortiori d'un Hackintosh.

Par exemple, une configuration n'utilisant pas de carte graphique NVIDIA ne va pas charger les kexts nécessaires à son fonctionnement. Tout comme les kexts AMD ne seront pas utilisés sur une configuration qui n'utilise pas ce type de carte graphique.

Pour éviter cela, le système va établir une liste de kexts fréquemment utilisés et va construire un "prelinkedkernel" qui sera chargé par macOS au démarrage. Ainsi, le temps de chargement sera considérablement réduit (je vous la fais très courte parce que c'est un peu plus compliqué que ça mais en gros, c'est ça l'idée tongue.gif ).

Ce prelinkedkernel étant établi sur la base des kexts chargés, il est donc essentiel que lorsque l'on modifie le dossier System/Library/Extensions, les changements soient pris en compte au prochain démarrage. Sans quoi, et comme le système continuera d'utiliser un ancien prelinkedkernel, ils ne seront pas pris en compte. Ou pas complétement.

◉ Je n'utilise que le dossier CLOVER/kexts ou Extra/Extensions. Suis-je concerné ?

En un mot : Non

Dans les deux cas, les kexts placés dans ces endroits ne sont pas pris en compte par le prelinkedkernel. C'est le bootloader qui s'occupera de les charger lors du démarrage et ils viendront "s'ajouter" aux kexts du prelinkedkernel.

En d'autres termes, reconstruire le cache Système ne sert à rien dans ces cas-là.

◉ Qu'en est-t-il des permissions ?

OS X/macOS étant un UNIX, la notion de droits/permissions est essentielle. Pour faire court et simple et dans le cas qui nous concerne, les kexts placés dans les dossiers System/Library/Extensions et Library/Extensions doivent impérativement être "possédés" par le Système et plus précisément par l'utilisateur root (le super utilisateur qui a absolument tous les droits).

Dès lors, il est obligatoire de s'assurer que ces kexts disposent des bons droits et des bonnes autorisations sans quoi le Système refusera de les charger. C'est à ça que servent les utilitaires comme Google: Kext Wizard ou Google: Kext Utility et c'est pourquoi on ne peut pas se contenter de copier/coller des kexts dans ces dossiers.

À noter que :
■ Le dossier Extra/Extensions utilisé parfois par Chameleon/Enoch ne déroge pas à cette règle.

■ Le dossier CLOVER/kexts (et tous ses sous-dossiers) n'est pas soumis à cette obligation.

En effet, la notion de droits/permissions ne s'applique qu'aux volumes HFS+ sous OS X/macOS et comme la partition EFI est un volume FAT32, elle n'est pas concernée. En clair, il n'y a pas besoin de s'occuper des permissions ni de reconstruire le cache lorsque l'on utilise uniquement le dossier EFI/CLOVER.

◉ Comment reconstruire le cache manuellement ?

En principe, vous n'aurez pas à le faire grâce aux utilitaires cités plus haut mais si vous voulez faire ça "proprement" et savoir ce qui se passe réellement, tapez ceci et validez après chaque ligne puis redémarrez :

Code
sudo chmod -R 755 /Library/Extensions
sudo chown -R 0:0 /Library/Extensions
sudo chmod -R 755 /System/Library/Extensions
sudo chown -R 0:0 /System/Library/Extensions
sudo touch /System/Library/Extensions
sudo kextcache -Boot -U /


Pour macOS Big Sur (et suivants) :

Code
sudo chmod -Rf 755 /Library/Extensions
sudo chown -Rf 0:0 /Library/Extensions
sudo touch -f /Library/Extensions
sudo kextcache -i /
sudo kcditto


Vous pouvez également utiliser ce script tout fait.

◉ BONUS - Vérifier/Réparer les permissions sous OS X 10.11 El Capitan :

Vous l'avez peut-être remarqué, l'Utilitaire de disque d'El Capitan ne propose plus de réparer les permissions du disque système.

Apple considère que ce n'est plus nécessaire. C'est peut-être vrai dans le cadre de l'utilisation normale d'un Mac (encore que…) mais sur un Hackintosh, ça peut être utile voire nécessaire dès que le SIP est désactivé et que l'on commence à jouer un peu avec le dossier Système.

Et comme l'ancienne commande terminal

Code
diskutil repairPermissions /


ne fonctionne plus non plus, on pourrait croire que c'est désormais impossible.

Fort heureusement, ce n'est pas le cas biggrin.gif !

Simplement, la commande a changé et la fonction existe toujours.
La commande pour vérifier les permissions est la suivante :

Code
sudo /usr/libexec/repair_packages --verify --standard-pkgs /


Et pour les réparer :


Code
sudo /usr/libexec/repair_packages --repair --standard-pkgs /

Si vous souhaitez vérifier/réparer les permissions d'un autre volume que celui du disque de démarrage, il faut adapter comme ceci (si le nom du volume comporte des espaces, pensez à le mettre entre ""):
Code
sudo /usr/libexec/repair_packages --verify --standard-pkgs /Volumes/"nom du volume à vérifier ou réparer"


Ceci étant dit, ne croyez pas que réparer les permissions du disque est la solution à tous les problèmes. Ce n'était pas le cas avec les versions précédentes d'OS X et ça ne l'est toujours pas.

Gardez aussi à l'esprit que cette commande ne reconstruit pas le cache Système et que quoiqu'il arrive, il faudra toujours le faire lorsque c'est nécessaire comme par exemple après l'ajout/modification d'un ou plusieurs kexts dans le dossier /Système/Bibliothèque/Extensions !

Fichier(s) joint(s)
Fichier joint  system_caches_rebuild.command.zip ( 720 octets ) Nombre de téléchargements : 47
Fichier joint  system_caches_rebuild.command_BS.command.zip ( 1009 octets ) Nombre de téléchargements : 2
 


--------------------
Un MacmacOS 10.15.7 MacBook Air mi-2012 Core i5 1,7 GHz Intel HD 4000 SSD 64 Go
Des Hacks Asus Z170-P - Core i7 6700 3,40 GHz - Sapphire RX 6600 XT 8 Go - 32 Go DDR4 Gigabyte H110M-S2H - Core i5 6600 3,30 GHz - Zotac GTX 1060 6 Go - 32 Go DDR4 Gigabyte GA-H97-HD3 - Core i5 4570 3,20 GHz - MSI GTX 650 Ti 2 Go - 16 Go DDR3 Acer Aspire V3 772G Core i5 4210M 2,60 GHz - Intel HD 4600 + GTX 850M 2 Go (désactivée) - 16 Go DDR3 Dell Latitude e7470 Core i5 6300U 2,40 GHz - Intel HD 520 - 16 Go DDR4 Dell Latitude 7490 Core i7 8650U 1,90 GHz - Intel UHD 620 - 16 Go DDR4 Dell Latitude e7440 Core i7 4600U 2,10 GHz - Intel HD 4400 - 16 Go DDR3 HP Elite 8300 USFF - Core i7 3770S 3,90 GHz - Intel HD 4000 (+ quelques autres...)

Politique vis à vis des outils automatisés et des distributions - Guide d'installation - Tutoriels - Lexique et utilité des Kexts - FAQ Générale du Hackintosh - FAQ des Bootloaders - FAQ des Bootflags - FAQ des problèmes les plus courants - FAQ sur les Mises à jour Majeures sur Hackintosh
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
pierrep
posté 18 Nov 2019, 19:16
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 279
Inscrit : 13 Oct 2002
Lieu : Paris
Membre no 4 115



Merci maclinuxG4

Donc comme ça ?

sudo chmod -R 755 /Volumes/"nom du volume"/Library/Extensions
sudo chown -R 0:0 /Volumes/"nom du volume"/Library/Extensions
sudo chmod -R 755 /Volumes/"nom du volume"/System/Library/Extensions
sudo chown -R 0:0 /Volumes/"nom du volume"/System/Library/Extensions
sudo touch /Volumes/"nom du volume"/System/Library/Extensions
sudo kextcache -Boot -U /Volumes/"nom du volume"

Et c'est les mêmes commandes sous Sierra ?


--------------------
Hackintosh Gigabyte Z170X-UD3 / Core i7 6700K / 32 Go / Radeon RX 580 (27"+22") / 3 SSD / Mojave + Windows 10
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 28th April 2024 - 10:11