Pour ceux qui veulent ajouter un SSD en NVme mais qui sont encore sous Sierra ou El Capitan il existe plusieurs solutions
■ la plus simple c'est d'installer les patch de Pike R. Alpha inclus dans clover configurator
MAIS dans mon cas les débits en lecture/écriture du NVme n'étaient pas corrects et le disque était reconnu en externe
en plus je trouvais que ca manquait de stabilité au niveau du système...
c'est pour cette raison que j'ai du me tourner vers une 2ème solution
■ Donc... 2ème possibilité : créer un fichier SSDT spécifique à votre carte mère et générer un kext (méthode RehabMan)
qui est l'objet du tuto....
◉ Pour ce tuto il faut remplir plusieurs conditions■ avoir un NVme (logique...)
■ avoir déjà un système fonctionnel qui sera exactement le même que vous allez installer sur votre NVme (important !!!!!)
■ prendre le temps de lire et analyser le tuto
Au 1er abord ca peut vous paraitre relativement compliqué
mais si vous suivez à la lettre ce tuto tout devrait bien se passer et votre NVme devrait être parfaitement reconnu et fonctionnel
et logiquement si vous suivez bien les étapes vous devriez en avoir pour 5-10 mn pour créer votre SSDT et votre kext
■ SI VOUS NE VOUS SENTEZ PAS CAPABLE IL VOUS MIEUX DÉFINITIVEMENT VOUS ORIENTER VERS LA 1ÈRE SOLUTION
■ Petite parenthèse....
Si vous n'avez pas de port M.2 sur votre carte mère, vous pouvez quand même installer un NVme grace à des adaptateur en PCI-express que l'on peut trouver un peu de partout
(ou bien rajouter un 2ème NVme a votre installation si vous n'avez qu'un seul port M.2 sur votre carte mère)
personnellement j'ai pris celui ci (
Asus HYPER mini M.2 X4) qui fonctionne très bien
il faut bien entendu avoir un port PCIe de libre qui gère le x4 (un 2ème port 16x fait très bien l'affaire) et bien regarder les compatibilités avec votre chipset qui peuvent varier d'une carte à l'autre
si vous passez par cette solution la procédure sera exactement la même
________
◉ Maintenant que les présentations sont faites on va pouvoir entrer dans le vif du sujet et démarrer le Tuto..... Démarrez votre hack normalement (sur le disque qui vous sert de boot)
■ si le Nvme n'est pas détecté dans l'utilitaire de disques, installez provisoirement les patch de Pike R. Alpha en fonction de votre système (sierra ou el capitan)
■ OU installez toujours provisoirement « NVMeGeneric.kext » et mettez le dans EFI/clover/kext/other
(c'est l'un ou l'autre mais pas les 2)
■ Une fois que votre disque est détecté on va procéder par étapes :
• 1: Téléchargez la dernière version de MaciASL à partir du repo de Rehabman https://bitbucket.org/RehabMan/os-x-maciasl...atic/downloads/
• 2: Décompressez le fichier et mettez MaciASL.app dans votre dossier Applications
• 3: Téléchargez et installez Xcode depuis l'App Store: https://itunes.apple.com/fr/app/xcode/id497799835?mt=12
Une fois installé, ouvrez Xcode et acceptez ensuite le contrat de licence
Pour Sierra vous devez aussi installer les outils de commande
■ Pour les installer entrez cette commande dans le terminal
Code
xcode-select --install
Une boite de dialogue s'ouvrira et cliquez sur installer pour les télécharger
• 4: Une fois Xcode installé, ouvrez une fenêtre du Terminal et exécutez ces commandes pour générer et installer la dernière version du compilateur IASL:
Code
cd ~/Documents
git clone https://github.com/RehabMan/Intel-iasl.git iasl.git
cd iasl.git
make
ensuite
Code
sudo make install
et pour finir
Code
sudo cp /usr/bin/iasl /Applications/MaciASL.app/Contents/MacOS/iasl61
• 5: Téléchargez et lancez IORegistryExplorer v2.1 (téléchargez le ici)
• 6: Dans la barre de recherche de IOReg, tapez «storage» et recherchez l'arborescence contenant votre SSD NVme ...
■ Dans mon cas on peut voir que mon Samsung 950 Pro est sur la ligne PCI0 RP01 PXSX
LES ADRESSES DE VOTRE ARBORESCENCE SERONT DIFFÉRENTES !!!! c'est uniquement pour l'exemple et vous aider à visualiser vos propres adresses
○ Ensuite, vous devrez sélectionner la ligne (adresse) ou est connecté votre NVme (PXSX dans mon cas)
il va falloir modifier la première valeur pour que « IONVMEFamily.kext » ne se charge pas pendant le processus de démarrage
class-code => <02 08 01 00>
class-code modifié => <FF 08 01 00>
• 7: Maintenant que vous avez toutes vos adresses et le class-code vous pouvez ouvrir MaciASL.
Ensuite, dans la barre de menu cliquez «File» et faites «New» (N'utilisez PAS New ACPI).
○ Vous devez copier le code ci-dessous, puis remplacer ces parties en surbrillance par vos emplacements et votre class-code
Je vous mets une image avec des couleurs pour bien les mettre en évidence
Maintenant que vous avez bien repéré vos adresses et le class-code à modifier vous pouvez copier et coller le code ci dessous dans le nouveau fichier MaciASL
◉ Encore une fois, pensez à bien modifier les valeurs par les votres
Code
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP01.PXSX, DeviceObj)
Method(_SB.PCI0.RP01.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xFF, 0x08, 0x01, 0x00 },
})
}
}
//EOF
SI VOUS ÊTES SUR EL CAPITAN ET QUE VOUS VOUS VOULEZ INSTALLER UN SAMSUNG 960 EVO
Si vous avez cette combinaison (10.11.x + 960 EVO), vous devez injecter des propriétés supplémentaires pour empêcher le chargement du fichier « IONVMeFamily.kext ».
Et pensez à changer les valeurs par les votres !!!
Code
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP01.PXSX, DeviceObj)
Method(_SB.PCI0.RP01.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
"compatible", Buffer() { "pci144d,a801" },
"IOName", "pci144d,a801",
"name", Buffer() { "pci144d,a801" },
})
}
}
//EOF
• 8: Une fois que vous êtes sûr que tout est correct, cliquez sur «Compile» et assurez-vous que vous n'obtenez aucune erreur.
Si tout est bon dans la barre de menu cliques sur «File», «Save as» et enregistrez le fichier avec les paramètres suivants :
Name: SSDT-NVMe-Pcc.aml
Location: Desktop (bureau)
Format: ACPI Machine Language Binary
• 9: Montez la partition de votre disque principal à l'aide de Clover Configurator (pas le NVme !!!!!),
puis prenez le fichier « SSDT-NVMe-Pcc.aml » que vous avez sauvegardé sur bureau et mettez le dans EFI/clover/ACPI/Patched
• 10: Téléchargez le patch de RehabMan qui se trouve à cette adresse : https://github.com/RehabMan/patch-nvme
et dézippez le dans votre dossier « Téléchargements »
• 11: Maintenant il va falloir générer le kext
Pour cela ré-ouvrez le terminal et collez les commandes ci-dessous
Code
cd ~/Downloads/patch-nvme-master
Ensuite utilisez qu'une seule de ces commandes en fonction de la version de votre OS
choisissez dans le dossier que vous avez téléchargé et mis dans votre dossier téléchargements, la version qui correspond a celle votre OS
Code
./patch_nvme.sh --spoof 10_12_0
./patch_nvme.sh --spoof 10_12_1
./patch_nvme.sh --spoof 10_12_2
...etc
il ne fauf pas copier toutes les commandes, mais uniquement celle qui correspond a votre OS
la commande ./patch_nvme.sh --spoof + la version du .plist qui correspond à la version sur laquelle vous êtes
Par exemple pour Sierra avec dernière mise à jour de sécurité ca donnera ça
Code
./patch_nvme.sh --spoof 10_12_6_sec2018-001
Si vous obtenez ce message c'est que vous avez entré le bon code et la bonne version de votre OS
Si c n'est pas cas c'est que vous vous êtes trompé de version d'OS et vous devez recommencer
Code
Vanilla MD5 matches expected MD5 entry (1b712ac1b6e56f846a7e5d0056cdea20)
Patched MD5 matches expected MD5 entry (cde08888426959748a7c1e01f990643e)
• 12: Allez dans votre dossier téléchargement et dans le dossier que vous avez téléchargé
et récupérez le kext que vous venez de générer « HackrNVMeFamily-xx_xx_x.kext » et mettez le dans votre dossier EFI/clover/kext/other
• 13: lancez clover configurator et ouvrez votre fichier config.plist
et ajoutez ce patch dans DSDT (à l'onglet ACPI)
Comment : Change _DSM to XDSM
Find : 5f44534d
Replace : 5844534d
■ Pensez aussi à rajouter SSDT-NVMe-Pcc.aml dans le tableau SortedOrder
• 14: Toujours dans votre fichier config.plist supprimez les patchs de Pike R. Alpha
(ou NVMeGeneric.kext dans votre dossier kext/other)
une fois que c'est fait sauvegardez le fichier config.plist et redémarrez votre hack.....
• 15: vous devriez maintenant voir votre Nvme parfaitement reconnu...
vous pouvez à présent le formater et ensuite copier tout votre dossier EFI du disque de boot dans la partition de votre NVme pour le rendre bootable
Maintenant que le NVme est formaté et que le dossier EFI est copié vous pouvez cloner votre disque actuel dessus
ou bien directement faire une clean instal dessus....
Si vous faites une clean instal a partir de votre clé de boot
◉ PENSEZ A METTRE LE KEXT ET LE FICHIER SSDT DANS VOTRE CLÉ DE BOOT
La version de l'OS sur la clé de boot doit être la même que celle du kext qui à été créée
Et voila... c'est (enfin) terminé...
Donc si vous avez des question ou le moindre soucis c'est en dessous que ca se passe
◉ EDIT
Si vous avez plusieurs NVme il n'y aucun problème.... (un sur le port M.2 et un autre sur une carte PCIE par exemple)
il faudra ajouter les adresses de chacun au moment de la création de votre SSDT (étape 6 du tuto)
et dans mon cas ca donne ca.....
Code
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.PEG1.PEGP, DeviceObj)
Method(_SB.PCI0.PEG1.PEGP._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
External(_SB.PCI0.RP01.PXSX, DeviceObj)
Method(_SB.PCI0.RP01.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF