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  

 

benjenq 發表在 痞客邦 PIXNET 留言(12) 人氣()


留言列表 (12)

發表留言
  • Lionel Luthor 2011
  • 已經跳回 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
  • 從 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 版已經不能啟動了。

    benjenq 於 2015/07/31 18:32 回覆

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

    benjenq 於 2015/08/02 00:23 回覆

  • Lionel Luthor 2011
  • 不曉得是不是它安裝檔有問題???
    用 M$ 官方程式製作的Windows 10 USB安裝碟,
    沒有辦法在 UEFI模式下直接安裝(純 Windows 10).....
    (在BIOS模式下,直接安裝沒問題)

    只好用安裝碟開機,在命令列用 DISKPART 分割硬碟,然後用 DISM 安裝
    (這命令,說實在我不太會用,目前只會把WIM檔解開到系統碟)
    ,最後再BCDBOOT一下。麻煩,但純Windows 10.....

    至於「啟用」部份,因為之前一直很「快樂」,
    目前只能靠KMSpico啟動神器了。

    Windows Defender 不用更新已經鎖定神器,
    若直接把Defender關掉則會黑畫面.....
    (目前是先灌防毒,讓Defender「被關掉」,再.....)
  • 我安裝 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 版。

    benjenq 於 2016/04/17 12:27 回覆

  • Gbanyan
  • 你好,看到你的文章獲益良多,自己已經成功組裝了一台黑蘋果
    想請教說:
    藍芽跟Wifi尚未搞定,想啟用Hands-off 以及 Continouty功能
    請問要啟用以上功能還有AirDrop是一定要購買你先前介紹的蘋果原廠Wifi藍牙晶片合卡呢?還是購置國外論壇討論相容的晶片就可以了?

    另外我想在Clover就啟用藍芽鍵盤(單純不想再拿有線鍵盤出來)
    問題也是跟上述一樣非要原廠呢?還是相容的晶片再嘗試尋找kext?
  • 1.我所知道的是,Handoff 必須是 Broadcom 的藍芽晶片才會運作。所謂的相容晶片,指的也是前幾代 Mac 使用的 Broadcom 藍芽產品,必須經過破解才會運作。可以參考以下連結
    http://applefans.today/blog/1526011530

    2.在開機階段(Clover 選單)就能啟用藍芽的話,我手邊只有 Apple 原廠的設備,也的確可以這麼做(Magic Trackpad 跟藍芽鍵盤都可以),不清楚非原廠裝置是否也能這麼用。開機階段由 UEFI BIOS負責,與 Kext 無關。

    benjenq 於 2015/08/10 00:59 回覆

  • THE
  • 想請問您一下 您說的fakeSMC安裝在S/L/E下面是指說先想辦法能正常開機進入系統中在裝到S/L/E下面嗎

    謝謝 因為手邊目前還有黑蘋果給我試 不太確定您說的意思
  • 我的黑蘋果設備有多顆硬碟,其中也有 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 的桌面。

    benjenq 於 2015/08/16 04:24 回覆

  • renhong.yang
  • 請問USB這部份 是不是有用DSDT才需要修改
    因為我沒用DSDT 所以現在USB有點錯亂
    但還是能用 只是希望能 修正
    USB3.0 的功能
    我是B85M-DS3
    該怎麼修改呢?
    我是有找到DSDT
    不知放進去
    會不會有什麼錯誤

    這是我找到的 DSDT 能不能請大大 幫忙指導一下呢?
    https://drive.google.com/file/d/0Bx5DIhB6KCwhT21oLWlPekYzTGc/view?usp=sharing
  • 這篇文章提到的方法 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 無法開機喔!

    benjenq 於 2015/10/31 03:05 回覆

  • Lionel Luthor 2011
  • 經過試驗,Windows 8.1 pro 從 快樂版(採非官方「KMS啟動」) 升到
    Windows 10 pro 後會漂白成正式版,會有新序號
    (該序號大家是否一樣或是否被「列管」就不知了)

    但可以確定的是.....新序號無法用在全新安裝!
    升級完、確認已啟動後,最好Ghost一份......
  • 訪客
  • 您好!我有找到幾段影片教學
    有配合dsdt去修改kext的方法來修正usb
    使用二號攻略文內的dsdt提取程式卻一直跳錯無法提取
    後來找到別的程式,但是在usb那段內容是空的
    看網上的教學,那段應該會有port的資訊等等
    我要是自行加入可行嗎?
    還是會因為主機板不同而語法不一樣?
  • 原始的DSDT就儲存在BIOS內,當然和主機板有關,
    自行加入肯定會有影響,但不能確定一定能解決該問題

    benjenq 於 2015/11/21 03:44 回覆

  • 訪客
  • 您好!
    我在系統資訊內看到usb2.0
    主機控制器驅動程式:AppleUSBEHCIPCI
    3.0是AppleUSBXHCILPTHB
    似乎抓到錯誤的驅動??
    看網上的教學3.0的驅動應該為AppleUSBXHCILPCI?
  • USB 3 的驅動為 XHCIPCI ,USB 2.0 為 EHCIPCI ,
    據我所知 USB 3.0 在 OS X 不太可能有「抓錯驅動」這回事
    (抓錯驅動是 Windows 特性,而 OS X 抓錯驅動大多發生在顯卡上。)

    應該是 OS X 10.11 的 USB 3 驅動與您的黑蘋果硬體相容性不佳導致。

    benjenq 於 2015/11/24 02:55 回覆

  • 索尼
  • 你好請問我最近安裝好了黑蘋果
    現在發現原生的usb插槽不論是2.0還是3.0的
    都只能讀取到2.0的usb設備
    3.0能使用的方法就是插到原生2.0 usb插槽
    請問這該如何解決?
  • 陳柏元
  • 版主 有沒有FB呀 我有辦法解決usb的問題 只要是Intel原廠的USB都可用喔
【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消