SIP

    許多 OS X 10.11 El Capitan Public Beta 的黑蘋果用戶,在這兩天升級至 Beta 3 之後,陸續傳出了災情…

    • 無法開機,因為 FakeSMC.kext 無法載入。
    • 即使勉強開機,修正或另外安裝的 kexts 也失效了(如網卡的驅動 kext,修正過的 AppleHDA.kext 音效,藍芽/WIFI/USB/Sata…等等)

    這兩天爬了一些文,發現上述問題的原因,貌似和所謂的 SIP 有關。如果是的話,黑蘋果用戶恐怕又得開始擔心了…

    什麼是 SIP?

    SIP 全名是 System Integrity Protetion,詳細的介紹可以參考 Apple 的官方說明(網址)及 WIKI 說明(網址)。大意是 SIP 是 OS X 10.11 新增的安全機制,可分為三種類型:

    • 受保護的系統核心檔案
    • 受保護的運行中程序
    • Kext 必須被簽署驗證才能載入

    為了保護系統磁區上的核心運作元件,系統只允許某些安裝程式和重要系統升級時才能更新異動。使用代碼注入(Code injection)或運行附加(runtime attachments)方式將不再被被允許了。而 SIP 運行的時候,沒有經過簽署的 Kexts 元件,都會被拒絕。

    簡單來說,安全機制的概念是「Admin != kernel」,即使是最高管理權限的用戶,也無法任意更動核心元件。

    AdminNotKernel

    AdminNotKernel2

    對白蘋果用戶來說,安全性更高了,用戶點擊惡意的檔案/連結且輸入管理密碼之後,系統被植入惡意程式的可能性大幅降低,可是對黑蘋果用戶來說,這安全機制恐怕會讓黑蘋果的漂白之路更加坎坷…

    OS X 10.11 El Capitan 的 SIP 預設值是啟用的。在 Public Beta 2 以前,可用 NVRAM 內的參數 boot-args=”rootless=0″ 將 SIP 功能關閉,不過從 Public Beta3 開始, rootless 參數的開關方式就無效了(deprecated)。在白蘋果上,必須開機進入 Recover HD ,執行 Security Configuration ,取消勾選「Enforce System Integrity Protetion」才能將系統的 SIP 功能關閉。不過在黑蘋果上,這種透過 Recover HD 切換 SIP 的方式也是無效。

    (註:OS X 10.11 El Capitan GM 版再度修改 SIP 的切換方式,拿掉了 Recover HD 模式下的 Security Configuration 的勾選設定方式。一樣是必須進入 Recover HD 開機之後,使用終端機輸入 csrutil enable/disable 指令進行切換。)

    除此之外,磁碟的權限修復也有重大改變,以往用戶使用磁碟工具進行修復權限的方式將不復存在。

    SIP 機制對黑蘋果的影響

    Clover 使用 Inject Kexts 的方式,注入 EFI/CLOVER/kexts/10.11/ 底下的 kexts 也會被新的 SIP 安全機制拒絕。

    以黑蘋果必要元件 FakeSMC.kext 為例,Public Beta 3 開始無法透過 Clover EFI 的 Inject Kexts 方式掛載,目前唯一的方式是必須將 FakeSMC.kexts 安裝到 S/L/E 目錄。不過別高興得太早,即使想盡辦法將 FakeSMC.kext 安裝運作,一旦 kernel Cache 被重建的時候(例如後來再安裝其他 Kext),FakeSMC.kext 會被認定為未簽署的 Kext,下次開機時 FakeSMC.kext 就會被拒絕載入,導致無法開機。

    而 Clover 最常使用的 AppleHDA.kext 音效修正方式,也會跟著出問題。系統一旦發現 Kext 檔案被修改過,也會將它認定為未簽署的 Kext 而拒絕載入。更別說其他第三方 kext 套件,全被 SIP 擋在門外。

    基於上述的安全機制,結果就是將你的黑蘋果系統立刻打回原形。如果你的黑蘋果必需使用一堆第三方 kext 外掛,或是大量修正原生 kext (如顯卡 FrameBuffer / 藍芽及網卡修正支援 Handoff)才能運作,被打回原形之後,恐怕連堪用都成問題。

    所以了,為了將來黑蘋果之路能夠更加平順,一開始採購黑蘋果硬體的 OOB(Out of Box)策略就成了重點,能用最少的修正達到黑蘋果的目的,會減少很多冤枉路,三年前我寫的文章(黑蘋果採購指南:七、後記)就強調過這個重點。我的黑蘋果設備幾乎都是 OOB ,在這次升級之後,只有有線網卡失效,而音效透過 DSDT 修正之後, 至少還有 HDMI 可以用,算是災情很輕微的了。

    一切的問題都圍繞在 SIP 機制上,黑蘋果用戶如果能夠關閉 SIP,相信問題就解決不少。

    黑蘋果關閉 SIP 機制的方法

        1. 使用新版的 Clover EFI(v2.3k_r3252):下載 7311樓 的附件(網址)並安裝。
        2. 掛載 EFI ,並編輯 EFI/CLOVER/config.plist,在 RtVariablies 底下加上 BooterConfig = 0x28 與 CsrActiveConfig = 0x67 兩行。

    config10.11b3

        3. 將 FakeSMC.kext (下載)安裝在 S/L/E。完成後重開機。(註:Clover v2.3k_r2359 已經支援關閉 SIP 後在 /EFI/CLOVER/kexts/10.11/*.kext 注入支援了!不需再安裝至 S/L/E 底下)

        4. 檢查是否已關閉 SIP:開啟終端機,輸入指令:

        csrutil status

    SIP_disable

    確認 SIP 已關閉之後,就可安裝三方 kext 了。

     

    其他資料參考:@FredericJacobsThe Fight for RootClover General discussionSIP/Rootless Internal in El Capitan


    升級到 10.11 Beta5 之後 USB 無法運作

    不少人遇到升級到 Beta 5 之後,出現 USB 2 或 USB 3 無法運作的問題。我的黑蘋果主機板 GA-Z77X-UP4 TH 上面有三個 USB 2.0 10-pin header 插座,只有No.3 這個是正常的,其他兩個不會運作,而 USB 3.0 維持正常。

    Z77X-UP4-TH_USB  

    這個問題依舊導因於 Apple 修改了 USB 的運作規則,針對不同機型加上了指定 USB Port 的限制(Ports Restriction)。如果你的黑蘋果 DSDT 內容的 USB IO 名稱定義剛好落在 Apple 的限制範圍,就會發生這個問題。我的黑蘋果 DSDT 內的 USB 2.0 使用名稱 EHC1 / EHC2 跟 Apple 定義的都一樣,所以很不幸中招了。 

    然而黑蘋果設備中 BCM94360CD WIFI + Bluetooth PCI-e 這個模組必須獨佔一個 USB 2.0 10-pin 插座,於是另一個需要 USB 2.0 10-pin 的讀卡機裝置就掛點了。有的主機板只有兩組以下的 USB 2.0 10-pin ,導致這些 USB 2.0 全數罷工。

    解決方法有三種,擇一即可:

    一、修改 AppleUSBEHCIPCI.kext/Info.plist

    修改 S/L/E 底下 IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBEHCIPCI.kext/Contents/Info.plist 內容,找到對應的機型,刪除 port-count 與 ports 鍵值即可,就可取消 USB Ports Restriction 的限制。

    iMac13.2EHCI  

    (參考來源:insanelymac.com

    二、修改 DSDT.aml

    將 EHC1 / EHC2 變更為 EH01 / EH02,規避蘋果的 USB Ports Restriction 規則,這樣就不需修改 kext ,也就不用擔心 OS X 升級後 kext 被蓋掉的可能性。

    EHC-EH0

    三:修改 EFI/config.plist (*推薦)

    修改 config.plist/ACPI/DSDT/Patches 加上兩個鍵值,作用原理和上面修改 DSDT.aml 一樣,都是將 EHCx 改為 EH0x 來規避蘋果的 USB Ports Restriction 規則。

    <key>Patches</key>
    <array>
    <dict>
    <key>Comment</key>
    <string>Rename EHC1 to EH01</string>
    <key>Find</key>
    <data>
    RUhDMQ==
    </data>
    <key>Replace</key>
    <data>
    RUgwMQ==
    </data>
    </dict>
    <dict>
    <key>Comment</key>
    <string>Rename EHC2 to EH02</string>
    <key>Find</key>
    <data>
    RUhDMg==
    </data>
    <key>Replace</key>
    <data>
    RUgwMg==
    </data>
    </dict>
    </array>
    

    如下:

    EHC-EH0_config

    不太清楚 Apple 為何要這麼做,著名的 RehabMan 大大的說法是, Apple 於 OS X El Capitan 10.11 重新改寫 USB 驅動,綁定更多且更依賴 ACPI 定義的內容,然而某些 Apple 自家 Mac 產品中也存在若干 ACPI 定義上的問題,所以又以 Kext 掛載的方式重新定義 USB 的屬性,再度加深了 OS X  與 Mac 硬體之間彼此綁定的程度。

    對黑蘋果用戶來說,黑蘋果硬體屬性與 Mac 設備之間仍有些不同,外掛綁定暨定義的方式直接影響黑蘋果的 USB 運作,尤其是使用了相同名稱(詳見:[Guide] 10.11+ USB changes and solutions#Post 54),黑蘋果安裝與完美運行 OS X 的難度又拉高了。


    OS X El Capitan 10.11 (Build 15A284) 已於台灣時間 2015.10.1 凌晨 01:00 於 Mac App Store 上架。安裝方式與預覽版相同,詳情可參考這篇文章

    El Capitan on Mac App Store  

     

    12 Comments

    1. 已經跳回 Windows 10了,用起來不會像Windows 8/8.1那樣礙手礙腳!
      (那夭壽的動態磚已經縮去開始功能表了………….)
      承襲 Windows 8/8.1 一樣的缺點是輸入法要用 TSF 版,
      以前都用網路上流傳的「校園版」嘸蝦米,
      現在只好認份掏 990 到官網買= .=(嚴格說來這是應該的)
      另外,Windows 10 終於加入「Print to PDF」這功能,
      之前在 Mac OS X 上用習慣了,
      回去用 Windows 7/8/8.1 變成超不習慣的…..
      目前正努力和 Windows 10 做朋友中…..
      下載鏈結如下,有興趣的人可以下來玩玩!
      http://www.microsoft.com/zh-tw/software-download/windows10?OCID=WIP_r_Win10_Body_AddPC
      版主回覆:(07/31/2015 06:32:59 PM)
      從 Inside Preview 開始我也已經加入了 Windows 10 ,
      安裝在虛擬機跟黑蘋果設備上(用一顆獨立的硬碟來裝),
      直到 10240 版釋出之後,這兩台就直接就給它合法升級 Windows 10 Pro 並啟動啦~
      終於告別快樂版了…XD,
      改天試著重灌 Windows 10 Pro 試試,應該會自動啟用才對…
      上個月抽獎入手的 Surface Pro 3 ,
      前兩天也給它免費升級成 Windows 10 Pro 了,
      目前是 Windows 10 Pro + OS X 10.10.4(黑蘋果) 雙系統。
      可惜我的 MacBook Air 晚了一步… Inside Preview 版已經不能啟動了。

    2. 有一件事想請教BEN大~~~
      你的USB設備都沒問題嗎 ? 因為我的USB2.0沒問題
      但是USB3.0就無法驅動了 !
      版主回覆:(08/02/2015 12:23:46 AM)
      是的,我的版子GA-Z77X-UP4 TH的原生USB2/3全都沒問題(非原生的VIA USB3除外⋯一樣是無法原生驅動)
      不論是2.0裝置插3.0,或3.0裝置插2.0,通通沒問題
      (我有用DSDT修正)

    3. 不曉得是不是它安裝檔有問題???
      用 M$ 官方程式製作的Windows 10 USB安裝碟,
      沒有辦法在 UEFI模式下直接安裝(純 Windows 10)…..
      (在BIOS模式下,直接安裝沒問題)
      只好用安裝碟開機,在命令列用 DISKPART 分割硬碟,然後用 DISM 安裝
      (這命令,說實在我不太會用,目前只會把WIM檔解開到系統碟)
      ,最後再BCDBOOT一下。麻煩,但純Windows 10…..
      至於「啟用」部份,因為之前一直很「快樂」,
      目前只能靠KMSpico啟動神器了。
      Windows Defender 不用更新已經鎖定神器,
      若直接把Defender關掉則會黑畫面…..
      (目前是先灌防毒,讓Defender「被關掉」,再…..)
      版主回覆:(04/17/2016 12:27:46 PM)
      我安裝 Windows 10 倒是沒遇過任何問題,
      記得官版提供的 USB Tools 會把隨身碟格式化成 NTFS ,
      可能是這原因才讓 UEFI 安裝出問題。
      我的做法是先將 USB 以 Fat32 格式化之後,
      用 UltraISO 將 Windows 10 ISO 寫到 USB 上,
      這支 USB 就可以同時對應Windows 10 的 Legacy 與 UEFI 安裝。
      我的黑蘋果設備就是 UEFI 安裝 Windows 10 Inside Preview 之後,
      再直接升級 10240 TH 版。

    4. 你好,看到你的文章獲益良多,自己已經成功組裝了一台黑蘋果
      想請教說:
      藍芽跟Wifi尚未搞定,想啟用Hands-off 以及 Continouty功能
      請問要啟用以上功能還有AirDrop是一定要購買你先前介紹的蘋果原廠Wifi藍牙晶片合卡呢?還是購置國外論壇討論相容的晶片就可以了?
      另外我想在Clover就啟用藍芽鍵盤(單純不想再拿有線鍵盤出來)
      問題也是跟上述一樣非要原廠呢?還是相容的晶片再嘗試尋找kext?
      版主回覆:(08/10/2015 12:59:25 AM)
      1.我所知道的是,Handoff 必須是 Broadcom 的藍芽晶片才會運作。所謂的相容晶片,指的也是前幾代 Mac 使用的 Broadcom 藍芽產品,必須經過破解才會運作。可以參考以下連結
      http://applefans.today/blog/1526011530
      2.在開機階段(Clover 選單)就能啟用藍芽的話,我手邊只有 Apple 原廠的設備,也的確可以這麼做(Magic Trackpad 跟藍芽鍵盤都可以),不清楚非原廠裝置是否也能這麼用。開機階段由 UEFI BIOS負責,與 Kext 無關。

    5. 想請問您一下 您說的fakeSMC安裝在S/L/E下面是指說先想辦法能正常開機進入系統中在裝到S/L/E下面嗎
      謝謝 因為手邊目前還有黑蘋果給我試 不太確定您說的意思
      版主回覆:(08/16/2015 04:24:41 AM)
      我的黑蘋果設備有多顆硬碟,其中也有 Yosemite 10.10。我是從 10.10 開機,再安裝 FakeSMC.kext 到 10.11 的 S/L/E 底下。
      從 10.10 將 FakeSMC 安裝 10.11 的 S/L/E 的做法是:
      – 從 10.10 執行安裝 HWSensors (就是本文中提到的 FakeSMC 下載連結),目標捲冊選 10.11 ,內容選 自訂,將 FakeSMC 勾選起來(預設值是不勾選)。
      接著就可以用 10.11 重開機了。即使 SIP 有打開,這情況下 FakeSMC.kext 至少會被載入一次,倘若沒別的干擾因素時,可以進入 10.11 的桌面。

    6. 請問USB這部份 是不是有用DSDT才需要修改
      因為我沒用DSDT 所以現在USB有點錯亂
      但還是能用 只是希望能 修正
      USB3.0 的功能
      我是B85M-DS3
      該怎麼修改呢?
      我是有找到DSDT
      不知放進去
      會不會有什麼錯誤
      這是我找到的 DSDT 能不能請大大 幫忙指導一下呢?
      https://drive.google.com/file/d/0Bx5DIhB6KCwhT21oLWlPekYzTGc/view?usp=sharing
      版主回覆:(10/31/2015 03:05:49 AM)
      這篇文章提到的方法 3 就是不使用 DSDT.aml 的修正法。
      DSDT 是 ACPI 規範內的配置表,用來定義設備的硬體屬性,
      這份屬性定義存放於 BIOS 內。
      不論是 Mac 或是一般 PC ,少了 DSDT 就無法運作,
      而 OS X 強調與 Mac 之間的軟硬體整合,
      刻意的依賴 DSDT ,所以黑蘋果技術中才會有 DSDT 修正,
      BootLoader 可透過外掛檔案 (DSDT.aml) 的方式來運作,
      用戶也不用冒險更新 BIOS 來修正 DSDT 。
      舊文章「 黑蘋果二號攻略(2)」有比較詳細的 DSDT 說明
      (密碼在「黑蘋果二號攻略(1)內文」)
      錯誤的 DSDT 有可能發生軟硬體衝突,導致 OS X 無法開機喔!

    7. 經過試驗,Windows 8.1 pro 從 快樂版(採非官方「KMS啟動」) 升到
      Windows 10 pro 後會漂白成正式版,會有新序號
      (該序號大家是否一樣或是否被「列管」就不知了)
      但可以確定的是…..新序號無法用在全新安裝!
      升級完、確認已啟動後,最好Ghost一份……

    8. 您好!近期安裝10.11.1後USB3無法使用
      方法3內為USB2修正方法
      那USB3的修正方法該怎麼做呢?
      文內除了更改名稱外data值也做了替換
      請問那個值具體作用為何?
      版主回覆:(11/19/2015 04:22:49 PM)
      我沒有遇到這個問題,的確也看過有人反應 USB3 在 10.11 掛點,
      解法詳情請參考這篇吧~
      http://www.tonymacx86.com/el-capitan-laptop-support/173616-guide-10-11-usb-changes-solutions.html

    9. 您好!我有找到幾段影片教學
      有配合dsdt去修改kext的方法來修正usb
      使用二號攻略文內的dsdt提取程式卻一直跳錯無法提取
      後來找到別的程式,但是在usb那段內容是空的
      看網上的教學,那段應該會有port的資訊等等
      我要是自行加入可行嗎?
      還是會因為主機板不同而語法不一樣?
      版主回覆:(11/21/2015 03:44:48 AM)
      原始的DSDT就儲存在BIOS內,當然和主機板有關,
      自行加入肯定會有影響,但不能確定一定能解決該問題

    10. 您好!
      我在系統資訊內看到usb2.0
      主機控制器驅動程式:AppleUSBEHCIPCI
      3.0是AppleUSBXHCILPTHB
      似乎抓到錯誤的驅動??
      看網上的教學3.0的驅動應該為AppleUSBXHCILPCI?
      版主回覆:(11/24/2015 02:55:02 AM)
      USB 3 的驅動為 XHCIPCI ,USB 2.0 為 EHCIPCI ,
      據我所知 USB 3.0 在 OS X 不太可能有「抓錯驅動」這回事
      (抓錯驅動是 Windows 特性,而 OS X 抓錯驅動大多發生在顯卡上。)
      應該是 OS X 10.11 的 USB 3 驅動與您的黑蘋果硬體相容性不佳導致。

    11. 你好請問我最近安裝好了黑蘋果
      現在發現原生的usb插槽不論是2.0還是3.0的
      都只能讀取到2.0的usb設備
      3.0能使用的方法就是插到原生2.0 usb插槽
      請問這該如何解決?

    發佈回覆給「陳柏元」的留言 取消回覆

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *