跳到主要內容

RehabMan的NVMe修補腳本

RehabMan的NVMe修補腳本

此腳本可用於為非Apple NVMe SSD(例如Samsung 950 Pro NVMe)創建修補的IONVMeFamily.kext。
這些腳本在Pike的博客上實現了Pike R. Alpha和Mork vom Ork創建的補丁。
請參閱以下鏈接以獲取背景
正如我在insanelymac.com上寫的那樣:
“雖然我通常是Clover KextsToPatch的粉絲,但在這種情況下我認為這不是合適的解決方案。在KextsToPatch失敗的正常情況下,有問題的kext只是不加載,不起作用,或者在這種情況下,如果KextsToPatch失敗,結果可能是部分修補的kext,這可能會導致數據丟失。我將在我的系統上安裝修補的kext而不是使用Clover補丁。問題是危險如果只有一部分補丁適用於更新的系統kext,那就太棒了。在這種情況下,kext可能會加載......並且看起來有效,但由於補丁不完整而導致卷損壞(因為更新中的更改)在這種情況下,最好使用舊的修補kext,直到可以創建一個新的修補kext。我在我的系統上這樣做的方式,我重命名了類和包標識符(帶有其他補丁),以便修補的kext可以安裝在未修補的vanilla kext旁邊(在/ L / E或/ S / L / E中,或者註入)。
這裡的腳本實現了上面提出的策略。

LiteOn / Plextor / Hynix NVMe的特殊補丁

此外,請閱讀Pene提出的替代補丁:https//www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/? do = findComment&comment = 2617639
各種補丁選擇在config_patches.plist中

關於4k塊大小的驅動器的特別說明

可能是您的驅動器能夠以4k塊大小而不是512字節驅動。如果驅動器處於4k模式,則可以使用不帶補丁的IONVMeFamily.kext。
請閱讀:https//www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/? do = findComment&comment = 2377304支持4k的部分驅動器列表本地:
  • 東芝XG3(控制器:TC58NCP070GSB)
  • OCZ RD400(控制器:TC58NCP070GSB)
  • 英特爾SSD750(具有性能/速度問題)
  • WD Black(控制器:Marvell 88SS1093)

10.13 High Sierra

使用10.13,Apple修復了它們的IONVMeFamily.kext,現在它本身支持512字節塊大小。這意味著對於許多NVMe SSD,您不需要這些補丁。但是,LiteOn / Plextor / Hynix SSD的特殊補丁可能是必要的(見上文)。

10.12 Sierra Notes

在10.12中有一些程序上的變化:
  • 如果您嘗試將HackrNVMeFamily用於10.12安裝程序,請忘記它。在config.plist KextsToPatch中使用正確的補丁。
  • 安裝後,您可以創建HackrNVMeFamily並使用它(或使用您已創建的),但您必須從/ System / Library / Extensions中刪除IONVMeFamily.kext
如果有更好的解決方案,我會在這裡更新。

10.12更新

通過欺騙系統,我們可以阻止IONVMeFamily.kext加載。它涉及注入一個假的“類代碼”,使IONVMeFamily的Info.plist中的IOPCIClassMatch不再匹配。
借助這種技術,HackrNVMeFamily和IONVMeFamily可以共存。適用於安裝方案和安裝後。
注意:patch_nvme.sh的--spoof選項可用於使用修改後的IOPCIClassMatch自動生成kext。
如:
./patch_nvme.sh --spoof 10_12_2

並且--unpatched選項可用於指定IONVMeFamily.kext的備用位置。例如,如果要從其他版本或從其他位置存儲的IONVMeFamily.kext進行修補:
./patch_nvme.sh --unpatched /Volumes/10.11.6/System/Library/Extensions/IONVMeFamily.kext 10_11_6_sec2017-001

關於雙啟動和10.13的說明


如果您在10.13之前的版本(例如10.1110.12)上使用類代碼欺騙,您會注意到欺騙的類代碼將阻止加載10.13中的IONVMeFamily.kext。您還會注意到此項目中沒有用於修補10.13 IONVMeFamily.kext的文件。這是因為10.13 IONVMeFamily現在可以本地處理512字節塊,因此不需要修補。
但是由於類代碼欺騙到位,10.13IONVMeFamily.kext將無法加載(它正在尋找NVMe標準類代碼)。對於非雙啟動方案(例如,僅啟動10.13,沒有其他macOS / OS X版本),您只需刪除類代碼欺騙(SSDT_NVMe-Pcc.aml)。
對於引導10.11 / 10.12 + 10.13的情況,將HackrNVMeFamilyInjector.kext安裝到系統卷(僅限10.13+)。它是一個簡單的注入式kext,它將欺騙的類代碼添加到IO目錄中,從而導致IONVMeFamily.kext加載欺騙的類代碼。這樣,HackrNVMeFamily - * .kext可用於10.12 / 10.11,而IONVMeFamily.kext(本機)可用於10.13

用法:
下載ZIP(並解壓縮)或克隆git存儲庫。
內容:
  • patch_nvme.sh:主要修補腳本
  • NVMe_patches_10_11_5.plist:由Mork vom Ork提供的KextsToPatch內容,發布#33 IM線程。
  • NVMe_patches_10_11_6_beta4.plist:由Mork vom Ork提供的KextsToPatch內容,發布#16 IM線程。
  • NVMe_patches_10_11_6.plist:最終10.11.6KextsToPatch內容
  • NVMe_patches_10_11_6_sec2016-001:帶有安全更新2016-00110.11.6KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2016-002:帶有安全更新2016-00210.11.6KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2016-003:帶有安全更新2016-00310.11.6KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_supp2016-003:帶有安全更新(補充)2016-00310.11.6KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2017-00210.11.6 build 15G1510KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2017-00310.11.6 build 15G1611KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2017-00410.11.6安全更新2017-004KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2017-005-15G18013.plist10.11.6安全更新2017-00515G18013)的KextsToPatch內容(僅更改了md5
  • NVMe_patches_10_11_6_sec2018-002.plist10.11.6安全更新2018-00215G20015)的KextsToPatch內容
  • NVMe_patches_10_11_6_sec2018-003.plist10.11.6安全更新2018-00315G21013)的KextsToPatch內容
  • NVMe_patches_10_12_dp1.plist:由Mork vom Ork提供的KextsToPatch內容,發布#8 IM線程。
  • NVMe_patches_10_12_0.plistKextsToPatch 10.12.0的內容
  • NVMe_patches_10_12_1_16B2555.plist10.12.1 build 16B2555KextsToPatch內容,隨後進行了快速更新。補丁與NVMe_patches_10_12_1.plist相同,但MD5總和不同。
  • NVMe_patches_10_12_1.plist10.12.1KextsToPatch內容
  • NVMe_patches_10_12_2.plist10.12.216C67)的KextsToPatch內容
  • NVMe_patches_10_12_3.plist10.12.316D32)的KextsToPatch內容
  • NVMe_patches_10_12_4.plist10.12.4KextsToPatch內容
  • NVMe_patches_10_12_5.plist10.12.5KextsToPatch內容
  • NMVe_Patches_10_12_6.plistKextsToPatch 10.12.6的內容
  • NMVe_Patches_10_12_6_sec2017-001.plist10.12.6安全更新2017-00116G1036)的KextsToPatch內容
  • NMVe_Patches_10_12_6_sec2017-002.plist10.12.6安全更新2017-00216G1114)的KextsToPatch內容
  • NVMe_Patches_10_12_6_sec2018-001.plist10.12.6安全更新2018-00116G1212)的KextsToPatch內容
  • NVMe_Patches_10_12_6_sec2018-002.plist10.12.6安全更新2018-00216G1314)的KextsToPatch內容
  • NVMe_Patches_10_12_6_sec2018-003.plist10.12.6安全更新2018-00316G1408)的KextsToPatch內容
  • NVMe_Patches_10_12_6_sec2018-004.plist10.12.6安全更新2018-00416G1510)的KextsToPatch內容
  • binpatch:使用簡單命令行修補二進製文件的預構建實用程序。
  • binpatch.cbinpatch二進製文件的源代碼
  • config_patches.plist:包含_DSMXDSM ACPI補丁,以及其他特殊用途(LiteOn / Plextor / HynixIONVMeFamily補丁
  • HackrNVMeFamilyInjector.kext:適用於具有類代碼欺騙的10.13。見上文“關於雙啟動和10.13的說明”
用法:
  • 解壓縮patch_nvme.zip存檔
  • cd到提取的位置
  • 執行patch_nvme.sh,其參數與您要修補的plist相對應
  • 該腳本在當前目錄中創建修補的kext
  • 您必須使用與您正在運行的OS X版本對應的參數運行腳本
  • /System/Library/Extensions/IONVMeFamily.kext必須是vanilla
例如,如果您正在運行10.11.5,並從github下載/解壓縮了patch-nvme-master,則創建一個修補的10.11.5 kext
cd ~/Downloads/patch-nvme-master
./patch_nvme.sh 10_11_5

我傾向於按照預期使用git
mkdir ~/Projects && cd Projects
git clone https://github.com/RehabMan/patch-nvme.git patch-nvme.git
cd patch-nvme.git
./patch_nvme.sh 10_11_5

結果是HackrNVMeFamily-10_11_5.kext。您可以將它安裝到/ S / L / E/ L / E,或使用Clover kext注入。它不會干擾IONVMeFamily.kext,系統更新也不會改變它。
您也可以不指定補丁名稱,腳本將根據vanilla IONVMeFamily確定正確的補丁:
./patch_nvme.sh

或者使用--spoof選項:
./patch_nvme.sh --spoof

在嘗試使用修補的kext之前,還應確保config.plist中沒有IONVMeFamily.kext的補丁。
注意:當前腳本使用與IOPCIClassMatch匹配的類代碼來匹配任何符合NVMe標準的SSD

反饋:
使用github上的“問題”來報告錯誤。

更改日誌:
2017419
  • 如果未指定補丁名稱,則添加自動檢測正確的補丁文件
  • 添加了額外的錯誤檢查(當md5總和不匹配時不會生成修補的kext,除非指定了--override
  • 添加--override(僅限高級用途)
201743
  • 添加--unpatched選項(joevt
2017329
  • 增加了對10.11.6安全更新2017-001的支持
2017328
  • 增加了對10.12.4的支持
2017123
  • 增加了對10.12.3的支持
201674
  • 改為使用IOPCIClassMatch而不是IONameMatch
201673
  • insanelymac.com上的orignal發布

留言

這個網誌中的熱門文章

第八代『黑蘋果』主機全部安裝教程

HIGH SIERRA GUIDE  For  ASUS  STRIX Z370 -G  ROG ( Micro-ATX ) ** UPDATE   5th Jan 2018  /   Clover v2.4k r4359 ** 硬體配置規格 Asus ROG Strix Z370-G Gaming (Wi-Fi AC) ( Micro ATX )  i7 8700 3.2GHz  Corsair Vengeance LPX 8GB (1 x 8GB) DDR4 DRAM 2400MHz (PC4-19200) C14 Memory Kit - Black  Samsung Evo 960 250GB NVMe SSD  NVIDIA GeForce GTX 1080ti (or a GTX 1050 / 1060 / 1070 will work  ) ABWB 802.11AC WI-FI with Bluetooth 4.0 PCI-Express  BitFenix Phenom – Tower – micro ATX  Noctua NH-L9x65 - NH-L9x65 Low Profile Performance CPU Cooler  EVGA SuperNOVA 750 G3, 80 Plus Gold 750W  Corsair UK K65 Rapidfire Cherry MX Speed Performance Multi-Colour RGB Backlit 10 Keyless  Samsung 850 EVO 500GB  Dell UltraSharp U2717D (2560x1440DP) IPS LED 27-Inch Infinity Edge 成功運行的功能 Wi-Fi ( Onboard WiFi card was replaced, see components list above )   Bluetooth Ethernet ...

黑蘋果安裝教程-在Windows下使用TransMac製作USB安裝碟

背景介紹  蘋果公司電腦以前曾叫做麥金塔電腦(  Macintosh  ),至今為止,蘋果公司仍沿用“Mac”以命名其所設計生產的個人電腦。Apple的macOS僅允許在“Apple品牌”的計算機上使用,因此在其他非蘋果機器上安裝運行的macOS系統被稱為  Hackintosh  ,國內也稱為  黑蘋果  。  安裝過程概覽   使用TransMac製作啟動盤   準備工具  在Windows操作系統下使用  TransMac  軟件來製作黑蘋果啟動USB安裝碟 macOS High Sierra 10.13.6(17G65) Installer with Clover 4596 系統鏡像  點擊下載 TransMac  點擊下載 至少8GB的USB隨身碟 安裝過程  TransMac  使用  管理員身份  打開,因為是正版軟件沒有破解,耐心等待10秒然後點擊  Run  打開軟件。  B站黑蘋果安裝教程 格式化U盤  在軟件的左側找到自己的隨身碟,然後  右鍵  選擇  Formar Disk for Mac  意思是將USB隨身碟格式化為Mac格式,當然隨身碟內容提前做好備份。  B站黑蘋果安裝教程 期間彈出警告是否繼續操作,點擊  Yes  ,格式化的磁盤名稱,默認即可,點擊  OK  :  B站黑蘋果安裝教程 是否繼續操作,點擊  Yes  ,然後開始格式化USB隨身碟,提示  Format Complete  表明格式化完成。  寫入dmg鏡像  然後  右鍵  選擇  Restore with Disk Image  來準備將dmg鏡像寫入到U盤中:  B站黑蘋果安裝教程 是否繼續操作,點擊  Yes  ,選擇自己...

FRESH INSTALLING MACOS HIGH SIERRA ON AMD RYZEN HACKINTOSH GUIDE (10.13)

This guide will show you the steps to install Sierra on a AMD Ryzen PC using a VMWare Virtual Machine. I’m making this guide for those who don’t have access to a Mac and need macOS to either try out for a bit or create a macOS boot loader installer for a AMD hackintosh build. There is another VMWare Sierra guide on this site, but  with AMD system a modified VMWare image is required to even be able to boot macOS so this AMD VMWare guide has to be used instead. WHY NOT A HIGH SIERRA VM? So getting High Sierra running as a virtual machine in Windows or Linux is actually pretty difficult with a Ryzen PC. Some will manage to get it working, butt not for others with there being all sorts of errors that can potentially popup on the screen. I actually spent half a day trying to get High Sierra working on VMWare player and wasn’t able to do it, so I had to resort to using Sierra, which I posted the steps for here. You can still use a Sierra VM to download High Sierra and create a Hig...