技嘉Z390主機板設定KALSR slide(重寫版)

Spread the love

前言:

2019/02/02
大約在去年九月間,我成功構建第八代黑蘋果主機,系統運行升級相當穩定,為了製作編輯影片需要,故在今年開始使用
技嘉Z390 AORUS PRO WIFI主機板,來構建第九代Hackintosh。當下製作CLOVER EFI 引導程序時遇到無法安裝上的問題,我爬文尋找的方法,終於在番茄網站構建Z390黑蘋果文章中,以OsxAptioFix2Drv-free2000.efi啟動模組,在引導參數中加入 slide=0 這樣的參數,順利安裝macOS。

在編譯300系列主機板引導程序時,應捨去原有APTIOMEMORYFIX-64.EFI 改換成 OSXAPTIOFIX2DRV-FREE2000.EFI。主要原因是APTIOMEMORYFIX容易導致300系主板安裝黑蘋果第一遍時候卡在最後2分鐘不能正常重啟進入下一步安裝,或者是導致關機變重啟。而OSXAPTIOFIX2DRV-FREE2000.EFI不存在以上的問題。

 
2019/04/05
正當升級到macOS 10.14.4的版本時(以上),無論在新安裝系統或是升級系統版本的過程當中,雖然在設定上之參數上沒啥問題,但發現某功能失常…。極有可能是BIOS出問題。但在windows上似乎看似正常。個人已察覺有這樣的問題,問題出在BIOS。每當我在安裝全新的系統時,理應該系統是最乾淨的狀態,在未開內顯時,則完全進入系統卻非常正常。

最常見的問題
當我把BIOS開啟內顯後,進入macOS系統時(-v),卻卡在++++++++++++++++++++之前。關閉內顯後則恢復系統正常運作。我個人花了許多的時間查出這個問題已久,確定為BIOS設計上的問題。然而我們都知主機板廠商製作的 BIOS 是針對winOS所設計的,無法從中變更BIOS設定值,當蘋果系統不支持Z390晶片時,意即不支持NVRAM,當下解決的方式只能透過第三方軟體來改變來修正,OsxAptioFix2Drv-free2000.efi是唯一的解決方案,要後續做系統上的調教。

2019/08/01
當OsxAptioFix2Drv-free2000之作者發佈了聲明,該OsxAptioFix2Drv-free2000.efi可能會造成硬體上破壞,建議用戶不要使用OsxAptioFix2Drv-free2000這個啟動模組。由於這樣的聲明,使用Z390、X99、X299主機板使用者,因為遇到 slide 值錯誤,想要了解和修復『無法分配運行時區域』,本文章大致說明如何解決Clover和OpenCore 引導程序的方案。

什麼叫做KASLR呢:

KASLR代表內核地址空間佈局隨機化,它用於安全為目的。具體來說,因為它在電腦和啟動之間始終是隨機的,讓Hack無法得知記憶體的位置所設計的機制。當引入的設備具有較小的記憶體映射或存在太多設備的情況時,就會發生問題。或許Kernel可能有運行的『空間』,但卻Kerml無法完全容納的可用空間。然而macOS在每次引導時無法選擇一個『隨機區域』來操作,但可以在系統在運行的當下,限制Kerml運行挪出512MB的空間,在引導參數中,加入slide=xxx,來重置KASDL的定義。

尚未定義slide=xxx的訊息
系統在引導時,因為沒有足夠空間容納Kernel的硬體的訊息,通常會遇到類似於以下錯誤:

Error allocating 0x11c61 pages at 0x00000000157e9000 alloc type 2
 Couldn't allocate runtime area

在運行macOS時崩潰的訊息:

panic(cpu 6 caller 0xffffff801fc057ba): a freed zone element has been modified in zone kalloc.4096: expected 0x3f00116dbe8a46f6 but found 0x3f00116d00000000

遇到這個狀況時,我發現關閉『內顯』時系統便成功的macOS系統。但過去構建黑蘋果者,採用技嘉主機板為首選的原因在於BIOS的架構:

  1. 2個128 Mbit flash
  2. 使用經授權AMI UEFI BIOS
  3. 支援DualBIOS™
  4. PnP 1.0a、DMI 2.7、WfM 2.0、SM BIOS 2.7、ACPI 5.0

所以,我可以任意更新BIOS版本時,在開啟『內顯』功能時有時能夠成功開啟,但並非是常態。我多次以相同的方式來確認原因後,故當下判定是技嘉主機板BIOS的問題,這也是我在社團常常發文有這樣的問題,導致我對該主機板有十足厭惡感(不敢向社團成員推薦的原因)。
備註:其實是技嘉主機板的BIOS採用KASLR的架構,以安全的目的所致。

如何解決:

Clover和OpenCore用戶的過程都是相同的,解決方法非常簡單:

  • CLOVER使用者:
    • AptioMemoryFix 不要Aptio修復混合在一起,或使用OsxAptioFixDrvX、AptioMemoryFix、OsxAptioFix3Drv.efi,目前我使用OsxAptioFix3Drv.efi,比較穩定。
    • Clover Shell(大多數用戶已經包含了它,通常稱為shell64.efi或某些變體值)
    • 關閉內顯。
    • MemoryAllocation.efi:這是建立一個固定512MB的記憶體訪問空間,好讓硬體訊息寫入在這裡。當slide值算好之後,再加入該模組,內顯重新開啟,即可順利進入系統。這是針對不支援NVRAM主板有效。
  • OpenCore用戶:
    • FwRuntimeServices
    • OpenCoreShell(需啟用該功能)Root->Misc->Tools
    • Config.plist設置:
      • PreventRuntimeDefrag:修復UEFI運行時服務,例如日期,時間,NVRAM等
      • DevirtualiseMmio:減少了被盜的內存佔用,因此我們為幻燈片值提供了更多選擇
      • DisableVariableWrite:將不支援NVRAM的主機板(B360,B365,H310,H370,Q370,Z390)的系統所需的NVRAM,重新轉寫到nvram.plist。部分主機板C612、X79、X99、X299系統也將需要此功能。
      • EnableSafeModeSlide:允許我們在安全模式下使用KALSR SLIDE,若遇到其他硬體設備問題時,也不會弄亂這個值。
      • EnableWriteUnprotector:允許我們寫入firmware(固件=韌體)鎖定的某些區域,特別是CR0寄存器。
      • ProvideCustomSlide:Kinda需要該KALSR才能執行任何實際工作。
      • SetupVirtualMap:在macOS和您的內存映射之間創建一個層,以提供更大的支持和更少的不安全寫訪問機會。
      • ShrinkMemoryMap:修復了無法容納的非常大的內存映射的問題,這對於Z390、X299平台非常有用。

重置記憶體訪問

我們需要重置記憶體訪問的原因,是因為啟動時記憶體訪問並不總是一致的,所以我們希望讓它更具確定性,讓每次啟動時變化時更少,故制定一個512MB記憶體空間。

準備:

  • 更新BIOS版本(由於早期所提供的BIOS版本,可能有記憶體訪問的問題,尤其是Z390主機板,這非常重要)
  • 清除CMOS
  • 開啟BIOS的設置值:
    • Above 4G Decoding注意:這使設備可以使用4GB以上的內存區域,這意味著macOS可以容納更多空間,在X99和X299上可能會出現問題,因此建議禁用它們。
    • Boot Options -> Windows8.1/10 mode:它僅設計用於引導Windows的較早版本,不適用other OS
    • 在BIOS中禁用盡可能多的不需要的設備(這意味著每次引導時映射中的變化較小,因此引導失敗的可能性較小)。常用設置:
    • CSM:對於舊版硬體的支持,添加了一些我們不想要的訊息。該功能需禁用。
    • Intel SGX:Software Guard Extensions,佔用大量空間,在macOS中不執行任何操作。
    • Parallel Port並列埠Parallel Port),又稱平行埠LPT(Line Printer Terminal),是電腦上資料以並列方式傳遞的,這裏選擇關閉。
    • Serial Port:主要用於序列式逐位資料傳輸。 常見的有一般電腦應用的RS-232(使用25 針或9 針連接器)和工業電腦應用的半雙工RS-485與全雙工RS-422。這裡選擇關閉。
    • iGPU:一種專門在個人電腦工作站遊戲機和一些行動裝置(如平板電腦智慧型手機等)上執行繪圖運算工作的微處理器。這裏我們俗稱『內顯』。依據使用者設定maOS SMBIOS 值,來決定是否開啟。
    • Thunderbolt:無需要雷電功能者,可選擇較低階主板來建構黑果。
    • LED lighting:對光害懼怕的朋友,可以關閉它。
    • Legacy USB:這是一定要開啟它。廢話。

​在開始重置記憶體訪問之前,我們需要做的就是觸發它,因此我們有一個乾淨的引導程序,(對於運行CLOVER EFI 而使用OsxAptioFree2000.efi需要的用戶而言,這很重要,記得刪除,改用AptioMemoryFix,否則可能會出現錯誤的情形發生)。有三種常見方式:

  • 啟用XMP:如果你是使用超頻記憶體,改為標準值DDR4 2666(macOS 標準配置),進行儲存或是禁用。
  • 關閉主機電源,拔掉電源線,讓CMS短路5~15秒,拆除主機板鋰電池,再依序放回,重置BIOS設定值。
  • 重置BIOS值。完整升級版本(這裡我用的是技嘉Z390主機板,BIOS版本為F12)。

查找KALSR值

我們把錯誤的訊息拍照下來,Error allocating 0x0x11c61 pages at 0x00000000157e9000 alloc type 2 注意0x11c61,因為每個人BIOS版本所生成的值都會不一樣唷。
透過CLOVER EFI引導程序到主介面,打開UEFI Shell 64並運行memmap -b,將會出現以下提供所有頁面及其大小的列表。好戲就上場了。

您將看到的範例:

TupeStartEND#PagesAttributes
Available00000000000010000000000000057FFF0000000000000057000000000000000F
Reserved00000000000580000000000000058FFF0000000000000001000000000000000F
Available0000000016C3B00000000082CAB7FFFF000000000015E7D000000000000000F

現在,我們要從這些值當中,挑選該列的最大的可用值,轉換為KALSR SLIDE。然而這些都是十六進制的,因此,如果有多個彼此靠近的值,則可能需要將它們轉換為十進制。
要計算KALSR值(macOS 內建的計算機,按⌘+ 3 啟用編程功能):首先從左邊上方Type欄位找到 Available 列值,找出Start欄位最大值。技嘉Z390主機板 BIOS:F12
Start0000000016C3B000

0000000016C3B000 = 0x16C3B000. 十六進制
套用公式:(HEX- 0x100000)/ 0x200000=十六進制:slide 值,計算出Slide值:16C3B000 / 200000 = 0(忽略小数點後面數字,四捨五入),0 + 1 = 1(16進制),轉換為10進制,得到的值 slide=1

電腦重啟後,開啟config.plist編譯,並將KALSR SLIDE與其餘的啟動參數一起添加。同時把MemoryAllocation.efi 放入在EFI/CLOVER/drivers/UEFI/ 裡面,進行緩存重啟,把內顯開啟,就可以順利的進入macOS系統了。

特別要注意,假設,你算出的 slide=xxx 遠高於256值!這是由包含無法使用的扇區的記憶體訪問引起的。所以需要繼續瀏覽列表,直到找到足夠小的值為止,依據Above 4G Decoding 0000000000100000的標準。

結論:

計算公式:(HEX- )/ =十六進制中的滑動值0x1000000x200000

0x100000+(十六進制中的KALSR SLIDE* )=您原始的十六進制值(如果沒有,則將+1加到您的幻燈片值中)0x200000

開啟config.plist並將KALSR SLIDE與其餘的啟動參數一起添加。如果該值仍然出現錯誤,則可以繼續使用第二大的值,依此類推。slide=00x100000Start

OpenCore部分:

在OC引導程序當中,有一個簡單的解決方案。
備註:OC引導程序這部分我還沒測試過。
在shell中運行後,運行:memmap

memmap > memmap.txt

這會將文件添加到OpenCore用戶的EFI根目錄中(例如您可能需要指定開機硬碟位置),然後可以繼續將其放入硬碟並且輸入。請注意,可能仍需要手動進行。memmap.txtfs0:$slide [insert a link to memmap.txt]

OpenCore 進階篇:開啟CFB

10 comments

  1. 真心覺得為何產品問題,在結尾卻是已售後服務很差來做結尾?!

    您技術高超BIOS發現問題,跟售後服務之差的對比感覺只是你個人的情緒罷了….

    請客觀理性的去說明產品,不然我要建構黑蘋果都不知道要看售後服務,還是主板問題…

    1. 感謝你的回覆,這一塊板子我買了二塊同型號的板子,問題都一樣。原本我以為是個案,但事實不然,幾乎所有使用技嘉Z390 系列的主機板都有類似的問題。如有機會,你可到論壇看看網友的回覆,在做定論。

      至於售後服來說,客服方面讓我不敢領教,光是今天我進線後與客服談話之間非常不愉快,讓我線上等待快要十分鐘,斷線後,我原本以為他會與我聯繫,等了5分鐘後,我還是進線…光憑這一點,讓消費者等待是非常不禮貌的行為,一個在台灣第二大家主機板製造商,客服若是做到這樣,那個消費者能接受?

      若是需要向某單位請益,也至少要跟消費者等候回覆電話吧,不是叫消費者『苦苦等待』。我相信一個企業面對所有消費者的重視,最起碼的尊重,總該有吧,而不是讓消費者『苦等』在電話機旁。

      至於你是否構建『黑蘋果』的部分,主機板目前個人的建議,暫時技嘉主機板不要列入考慮,萬一出了問題,別說我沒跟你說喔!

      最後一個問題,所有廠商所設計的主機板是針對Windows而來,對於其他的作業系統一概不負責。官網都有說明。主機板有任何問題,皆屬硬體維修的部分。自然有廠商負責。若是你用在『黑蘋果』上,廠商自然就無法提出保固之理由。希望你明白。

      過去技嘉主機板構建黑蘋果的難易度和門檻很低,很容易構建。但以Z390 部分,雖是新品,但BIOS仍處不穩定之狀態,目前我所測試是如此。你若以構建『黑蘋果』為主要工具,請你暫時參考其他廠牌之產品,我不希望我個人的案例,造成其他人步入我的後塵。或是改用Z370 系列或許會比較好,國外資訊比較豐富。問題也比較少!

  2. 有關技嘉主機板Z390 系列,在安裝或是開機碟的部分,已知問題要加入SLIDE=0,最主要的問題在於macOS 10.14.5版本當中,BIOS裡面顯卡記憶體大小不能調,不然進不去桌面。

    個人嘗試了很多遍,十分確認這個問題。一旦開啟內顯,無法進入系統。同時macOS 10.14.5 版本可以執行『單卡硬件加速』,已來不足『iGPU+GPU』 硬件加速的部分。

    我在論壇的文章當中,有做些幾個EFI的選項,提供社團朋友。請大家多多利用。

    至於其他主機板,像是ASUS、MSI、華擎主機版等等,應該不受BIOS 影響。

    本文章會建立論壇技嘉主機板異常的文章下。往後社團朋友要構建Z390系列黑蘋果,請選擇其他廠牌。

  3. 先前內顯無法開啟進入系統的問題,已獲得解決。
    在macOS 10.14.5 的版本當中,修正系統偵測改寫BIOS的部分,可以透過ACPI的補丁來解決開啟內顯卡無法進入系統的問題。

  4. 要不要看看 macOS 的授權?僅允許安裝在蘋果公司生產或銷售的電腦上,搞不懂技嘉為什麼要為這個負責?當然,安裝在非蘋果公司生產或是銷售的電腦也不是不行,如果自己有能力修改 BIOS 或是修改 DSDT 也是可以。

    要不要試著與蘋果公司聯繫,請他們不要搞什麼 nvram。

    1. 謝謝你的提議,你提出的問題和見解,非常有幫助,我相信有許多使用技嘉主機板的人,都希望主機板都能夠運用在『不同領域』的地方。而非限制於某個區塊。

      有關這個問題部分,我已經解決了。

  5. 在過去幾個月當中,我曾發文過有關技嘉Z390系列開啟BIOS 中的內顯後無法順利開機的問題。對此,我曾一度懷疑是否技嘉主機板『似乎』已不再支援構建黑蘋果之首選呢?
    打從使用Z390主機板之後,使用Mojave 系統。就針對內顯開啟的問題,無法找出真正原因。自從macOS 10.14.4以後,發現可以使用『單卡硬件加速』這樣的方式,可以讓我在製作影片編輯時,把引導程序設定SMBIOS iMacpro 1,1來達到HEVC,總算是找到一條出路。
    直到最近再研究OC時,我無意間在設定BIOS 版本以及OC屌程序時,居然在BIOS 開啟內顯之後,利用OC引導系統可以順利進入。若是使用CLOVER EFI引導則出現禁止 符號。這讓我感到困惑?為何會這樣呢?
    我試圖找出所有黑蘋果網站找尋相關資續,似乎沒有我我想要的文獻。有點心灰意冷想要放棄了。乖乖地還是回去過去原本的設定。
    每天一早下班後,回到家裡的電腦面前,打從心底不再搞引導程序了….可是手實在是『太賤』了,又開始搞OC and Clovr 和BIOS,每天搞了約10小時時間,就這樣過了一過了一個星期,這兩天我找出真正原因了。解決了內顯開啟後無法進入系統的真正原因。

  6. 該搞還是要搞,放棄不了,黑蘋果就是你的宿命,我都快被老婆大大罵死了,從10.9就開始了,看了你的歷程跟我很像,只是你厲害很多,我們就像是兩津勘吉的朋友本田速人,手放在鍵盤上就變成了另一個人,可以在一顆小燈炮下徹夜不成眠,做的卻是重覆的動作,開機/重開機/關機,為得就是那顆有支蟲在裡邊竄來竄去還會三不五時變換位置的黑色爛蘋果,說它爛卻又深深的愛上它,我也搞了好幾台了。GA Z270M-DS3H/Z370M-DS3H/Z390 Gaming X/Z390 M.
    我現在用的規格:
    GA Z390 M
    MSI RX580 Armor 8G OC
    i5-8500
    DDR4-2400 32G
    ADATA SX8200PNP 512G M.2 pci-e
    WDC 256G SSD 藍標
    TOSHIBA 2T SATA3 (Time Machine Backup & Store DATA)
    ——————————
    Igpu enable
    Catalina 10.15.1
    Clover V5098
    3e928080/32920003
    imacpro1,1 有HEVC 硬解,BruceX Test – 5K 約9秒(FCPX 10.4.7)
    USB3.0 有,要定制port (10.15.1 port limited patch 沒用,10.15可以)

    本來想收山了,看到你的Youtube (HD630 連接3螢幕),把HD630 及RX580 的Metal 都啟動了,真是厲害,
    可以跟你請教一下,要如何達到這個境界呢?感謝。

  7. 更正是 3e928086/3e920003
    Sleep/Wake up 都正常(Hibernate Mode:0, 沒有存Sleep image)
    32G DDR4(其中16G 是DDR4-3200),我試過用DDR4-3200 ,並Enable BIOS XMP Profile時,如果休眠再換醒,USB Flash 會出現 USB disk not ejected properly,(如果Disable BIOS XMP, 改在Clover Enable XMP,就不會出現, 有看到文章說 10.15 后可以正常,我手上沒有USB3,沒試),請問你的會這樣嗎?

    感謝

Leave a Reply

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