跳到主要內容

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 ...

雖然我沒有4K螢幕,但卻可以4K輸出(4K)

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...