시스템 사양 선택 | 1번 |
---|
안녕하세요.
예전에 저의 삼성 Galaxy Book NT750XDA-KF59U 노트북에 macOS 해킨토시 설치 후기글을 작성하면서
Intel Iris Xe 내장 그래픽의 QE/CI 그래픽 가속 활성화를 위한 여러 가지의 시도와 연구, 삽질 결과를 정리했었습니다.
최근에, 다시 Xcode 로 WhateverGreen.kext 의 소스 코드를 뜯어서 수정해보고 직접 빌드하여 적용하다가
Intel 11th Gen Tiger Lake 시스템에서도 -igfxcdc, -igfxdvmt 부트 옵션이 작동하게 되었습니다. 🥹
그래서, Unsupported CD Clock Frequency 커널 패닉이 해결되었고,
시스템 정보 화면에서 VRAM 도 1536 MB 로 인식되었습니다. ✨
단, 아직 몇 가지 문제가 남아있으며, 본문의 하단에서 설명하겠습니다.
부팅이 완료된 후에 노트북 내장 디스플레이가 검은색 화면(Black Screen)으로 바뀌는 문제가 있는데,
다행히 고맙게도 macOS 의 화면 공유 기능을 사용하여 동일 네트워크 상에 있는 다른 macOS 해킨토시 컴퓨터로
스크린샷을 캡쳐하고 IOReg 를 덤프하는 등의 작업을 할 수 있었습니다.
⬛️ WhateverGreen.kext 소스 코드에서 수정한 부분
Xcode 로 WhateverGreen 의 소스 코드에서 수정한 파일은 다음과 같습니다.
- kern_igfx.cpp
Switch 문에서 Intel 11th Gen Tiger Lake 도 Ice Lake 와 똑같이
ICLLP Framebuffer 가 지정되도록 하고, modDVMTCalcFix.available 값을 True 로 설정합니다.
https://github.com/lshbluesky/WhateverGreen/commit/a091c30109209265245b9bd2f85f38bcf6e9e158
- kern_model.cpp
Intel 11th Gen Tiger Lake Core i5-1135G7 CPU 의 Intel Iris Xe Graphics G7 내장 그래픽의
Device ID 에 해당하는 0x9A49 값을 추가합니다.
https://github.com/lshbluesky/WhateverGreen/commit/f757d2866abc1559bab750948b4ea667c5eb89fb
https://github.com/lshbluesky/WhateverGreen/commit/0119aa85860271370f914935b38082fed117760d
또한, 제가 Acidanthera 공식 GitHub 의 WhateverGreen 저장소를 Fork 하고
위의 내용대로 소스 코드를 수정하고 직접 빌드한 Debug 버전의 WhateverGreen.kext 를 업로드해 놓았습니다.
혹시, 필요하시거나 사용해 보실 분은 아래의 저의 GitHub 사이트에서 다운로드하면 됩니다.
https://github.com/lshbluesky/WhateverGreen
https://github.com/lshbluesky/WhateverGreen/releases
⬛️ macOS 부팅 로그
[IGPU] Failing probe (-allow3d is NOT set in boot-arg) 라는 로그가 출력된 것을 볼 수 있으며,
-allow3d 부트 옵션이 Metal 가속을 활성화하는 옵션인 것으로 보입니다.
또한, -allow3d 부트 옵션은 WhateverGreen 의 옵션이 아닌 AppleIntelICLGraphics.kext 자체의 부트 옵션입니다.
그래서, -allow3d 부트 옵션을 추가해 보았지만,
macOS Catalina 10.15.7 버전에서는 Unsupported ICL Sku 커널 패닉이 발생하였고
macOS Big Sur 11.x 이상의 버전에서는 저번처럼 그래픽 관련 드라이버가 로드되는 부분에서 부팅이 멈춥니다.
(아마도, Unsupported ICL Sku 커널 패닉이 발생하였지만, 화면에 로그로 보여주지 않는 것 같습니다.)
⬛️ macOS 시스템 로그
또한, [IGFB][ERROR][DISPLAY ] FB1: is not enabled 라는 로그가 일정 시간부터 계속 무한으로 출력됩니다.
이 외의도 나머지 다른 로그는 아래에 첨부한 시스템 로그 파일을 참고해주세요.
⬛️ IOReg 덤프 관찰하기
-igfxcdc 부트 옵션이 작동하여 Unsupported CD Clock Frequency 커널 패닉이 해결되었으므로,
IGPU 장치에 ICLLP Framebuffer 가 로드되었습니다.
하지만, 다른 Ice Lake 노트북의 IOReg 와 비교하였을 때, IGPU 장치 하위에 IntelAccelerator 항목이 존재하지 않습니다.
아마도, 위에서 언급하였던 -allow3d 부트 옵션이 적용되지 않아 Metal 가속이 작동하지 않아서 그런 것 같습니다.
또한, IOReg 에서 조금 이상한/의아한 부분이 있습니다.
1. 노트북 내장 디스플레이가 AppleDisplay 가 아닌 AppleBacklightDisplay 로 인식됩니다.
2. ICLLP Framebuffer 의 첫 번째 커넥터(AppleIntelFramebuffer@0) 가 아닌
두 번째 커넥터(AppleIntelFramebuffer@1) 에 연결됩니다.
추가로, 리눅스에서 이 노트북의 내장 디스플레이 커넥터는 LVDS 가 아닌 eDP 인 것을 확인하였습니다.
⬛️ 아직, 남아 있는 해결이 필요한 문제
1. 실질적인 QE/CI 및 Metal 그래픽 가속이 작동하지 않아서, Blur 효과가 작동하지 않는 문제.
-allow3d 부트 옵션을 적용하면 Unsupported ICL Sku 커널 패닉이 발생합니다.
이를 우회하기 위한 방법을 찾아야 할 것 같습니다.
2. 부팅이 완료된 후에 노트북 내장 디스플레이가 검은색 화면(Black Screen)으로 바뀌는 문제.
-igfxblr, -igfxblt 부트 옵션을 사용해 보았지만, 해결되지 않았습니다.
3. 노트북 내장 디스플레이가 AppleBacklightDisplay 가 아닌 AppleDisplay 로 인식되는 문제.
EDID 인젝션, PNLF Device 의_UID 값을 0x13 으로 직접 수정하여도 해결되지 않았습니다.
4. ICLLP Framebuffer 의 첫 번째 커넥터(AppleIntelFramebuffer@0) 가 아닌
두 번째 커넥터 (AppleIntelFramebuffer@1) 에 연결되는 문제.
Device Properties 로 커넥터 패치 속성을 사용하여 커넥터를 패치하여도 잘 해결되지 않았습니다.
⬛️ 현재, 시도해 보고 있는 작업
WhateverGreen 의 kern_igfx.cpp 소스 코드에서 case CPUInfo::CpuGeneration::TigerLake: 하위 구문에
ICLLP Framebuffer 대신에 KBL/CFL Framebuffer 로 Initialize 되도록 수정해 보려고 합니다.
지금까지는 WhateverGreen 에서 ICLLP Framebuffer 로 Initialize 되도록 한 상태에서 삽질을 해 보았는데,
과연, KBL/CFL Framebuffer 로는 잘 될 지 테스트해 보려고 합니다.
추가로, 저의 GitHub 사이트 Issue 글에서도 이에 대한 정보를 공유하고 있습니다.
https://github.com/lshbluesky/Samsung-NT750XDA-KF59U-Hackintosh/discussions/15
+ KBL/CFL Framebuffer 로 Initialize 되도록 시도해 보았지만,
부팅 도중에 멈추거나 커널 패닉이 발생해서 KBL/CFL Framebuffer 를 로드하는 방법은 포기하였습니다.
위의 문제 중에서 1번 문제를 해결하면 나머지 2, 3, 4번도 같이 해결될 지는 잘 모르겠지만,
1번 문제의 Unsupported ICL Sku 커널 패닉을 우회하여 해결할 수 있다면 성공에 더 가까워질 것 같습니다. 🍀
+ IDA 라는 디스어셈블러 리버스 엔지니어링 앱으로 AppleIntelICLGraphics.kext 의 바이너리 파일을 열어 보았습니다.
IDA Pro 버전은 유료여서 IDA Free 버전을 사용하였는데,
조금 제한적이기는 하지만 F5 키를 누르면 디컴파일러를 사용하여 Pseudo 코드 (C/C++ 스타일 언어)로 변환할 수 있습니다.
+ IDA Free 앱으로 AppleIntelICLGraphics.kext 의 바이너리 파일을 수정하고 교체하였더니
Unsupported ICL Sku 커널 패닉을 우회하는 데에 성공하였습니다.
하지만, 또 다른 커널 패닉이 발생하였지만 기록을 남깁니다.
참고로, AppleIntelICLGraphics.kext 의 바이너리 파일을 수정하는 작업은 macOS Catalina 10.15.7 버전에서 진행하고 있습니다.
macOS Big Sur 11.x 버전부터는 /S/L/E 경로에 있는 Kext 의 바이너리 파일을 직접 수정하기가 어렵습니다.
또한, macOS Monterey 12.x 버전부터는 바이너리 파일이 /S/L/E 경로에 존재하지 않으며, Lilu 를 통해서만 패치해야 합니다.
Intel 내장 그래픽과 관련된 Kext 드라이버가 Auxiliary Kernel Collection (AuxKC) 에 존재하기 때문입니다.
https://github.com/acidanthera/bugtracker/issues/1244#issuecomment-717998779
Unsupported ICL Sku 커널 패닉을 발생시키는 함수가 정의되어 있으며, 그 주소는 def_26885 입니다.
__text:0000000000026BBA def_26885: ; CODE XREF: __text:0000000000026866↑j
__text:0000000000026BBA ; __text:0000000000026871↑j ...
__text:0000000000026BBA call __ZN16IntelAccelerator10getGPUInfoEv_cold_1 ; jumptable 0000000000026885 default case, cases 2,3,5,7
__text:0000000000026BBF nop
또한, getGPUInfo 함수에서 IGPU 를 Initialize 하는 부분의 어셈블리어 코드를 확인해보면, Switch 와 Case 구문이 사용되는 것으로 보입니다.
아마도, GPU Sku 의 값이 무엇인지에 따라서 Case 의 경우가 나뉘어지면서
Unsupported ICL Sku 커널 패닉의 발생 여부가 달라지는 것 같습니다.
그래서, 저는 실제 Intel 10th Gen Ice Lake 노트북에서 부팅할 때 표시되는
"[IGPU] HWCAPS - GPU Sku: ICL GT2 LP" 라는 로그가 있는 코드의 주소를 찾았습니다.
그 주소는 loc_269FB 입니다.
__text:00000000000269FB loc_269FB: ; CODE XREF: __text:0000000000026885↑j
__text:00000000000269FB ; DATA XREF: __text:jpt_26885↓o
__text:00000000000269FB mov eax, 8 ; jumptable 0000000000026885 case 8
__text:0000000000026A00 mov [r15+11A0h], eax
__text:0000000000026A07 mov esi, [r15+1158h]
__text:0000000000026A0E lea r14, aIgpuHwcapsGpuS_3 ; "[IGPU] HWCAPS - GPU Sku: ICL GT2 LP\n"
__text:0000000000026A15 cmp esi, eax
__text:0000000000026A17 jz loc_26AE1
__text:0000000000026A1D lea rbx, aIgpuHwcapsErro_2 ; "[IGPU] HWCAPS - ERROR: GPU Sku (%u) is "...
__text:0000000000026A24 mov rdi, rbx
__text:0000000000026A27 xor eax, eax
__text:0000000000026A29 call _IOLog
__text:0000000000026A2E mov esi, [r15+1158h]
__text:0000000000026A35 mov rdi, rbx
__text:0000000000026A38 xor eax, eax
__text:0000000000026A3A call _kprintf
__text:0000000000026A3F lea rbx, aIgpuHwcapsTemp ; "[IGPU] HWCAPS - TEMP HACK: Forcing GPU "...
__text:0000000000026A46 mov rdi, rbx
__text:0000000000026A49 mov esi, 8
__text:0000000000026A4E xor eax, eax
__text:0000000000026A50 call _IOLog
__text:0000000000026A55 mov rdi, rbx
__text:0000000000026A58 mov esi, 8
__text:0000000000026A5D xor eax, eax
__text:0000000000026A5F call _kprintf
__text:0000000000026A64 mov dword ptr [r15+1158h], 8
__text:0000000000026A6F jmp short loc_26AE1
이제, getGPUInfo 함수의 코드 내용에서 def_26885 로 점프하는 어셈블리어 코드를 모두 jmp loc_269FB 로 수정합니다.
IDA 앱의 상단 메뉴바에서 Edit - Patch Program - Assemble 메뉴를 눌러서 패치하고
Apply patches to input file 메뉴를 눌러서 바이너리 파일을 저장합니다.
그 후에, AppleIntelICLGraphics.kext의 바이너리 파일을 수정한 것으로 교체하고,
권한 복구 & Kernel Cache 재생성 작업을 진행한 후에 다시 부팅합니다.
그 결과는 다음과 같습니다.
Unsupported ICL Sku 커널 패닉을 우회한 후에 출력되는 로그가 실제 Ice Lake 노트북에서 출력되는 로그와 비슷합니다.
이후의 커널 패닉 로그는 igfxfw=2 부트 옵션의 적용 여부에 따라서 다르게 출력되었습니다.
igfxfw=2 부트 옵션을 적용하지 않은 경우 :
igfxfw=2 부트 옵션을 적용한 경우 :
+ InsanelyMac 해외 해킨토시 커뮤니티에서 이와 관련된 글을 작성하였습니다.
shl628님의 새글 알림을 받으실려면 구독
*적용중인 도장
전세계 최초네요 ㅎㅎ
shl628님이 성공할꺼라고 생각했습니다!
vram 인식만 된 것도 기적이네요 ㅎㅋㅋ
요번에 업무용 같은모델로 바꿨느데... 그냥 포기 하고 있었는 대단하신 능력자 이시군요..
더 좋은 만족한 결과 물 올려주지길 부탁드립니다.
고생 하셨습니다.
역시 해당 discussion을 계속 보고계셨군요.
전 discussion 쭉 읽어보다가 디스어셈블러까지 나온 거 보고 벙쪘습니다ㅋㅋ
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +2 | 좌절금지 | 24.09.1917:09 | 69 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +14 | 좌절금지 | 24.09.1723:58 | 174 |
[중급편] 노트북 해킨 +8 | Stultus | 24.07.1219:19 | 750 |
[초급편] 문제 스스로 해결하기 +17 | Stultus | 24.03.2920:07 | 3531 |
[입문편] 첫 해킨 길라잡이 +32 | Stultus | 24.01.1218:54 | 4296 |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +63 | shl628 | 23.01.0913:39 | 5만 |
Sonoma 14.7(23H124) i9-12900, GA-Z690 Proart Creator + BCM WiFi Support +2 | 좌절금지 | 24.09.1722:40 | 195 |
2020 그램 sonoma efi 15Z90N +1 | 맥가즈아 | 24.09.1717:13 | 88 |
macOS Sequoia 15 설치 후기 + Bcm94360NG WiFi 작동함 | 좌절금지 | 24.09.1919:17 | 173 |
좌절금지 | 24.09.1919:17 | 173 | |
좌절금지 | 24.09.1917:09 | 69 | |
Stultus | 24.09.1813:37 | 148 | |
좌절금지 | 24.09.1723:58 | 174 | |
좌절금지 | 24.09.1722:40 | 195 | |
맥가즈아 | 24.09.1717:13 | 88 | |
김경석 | 24.09.1708:13 | 217 | |
Panictosh | 24.09.1617:47 | 96 | |
Tamy | 24.09.1504:35 | 466 | |
Stultus | 24.09.1319:18 | 436 | |
치토 | 24.09.1019:44 | 469 | |
머핀X | 24.09.0118:13 | 393 | |
해킨도전자 | 24.09.0112:54 | 294 | |
머핀X | 24.08.3115:34 | 372 | |
화정큐삼 | 24.08.2601:42 | 239 | |
하나브 | 24.08.2422:59 | 208 | |
화정큐삼 | 24.08.2316:25 | 247 | |
CanBe | 24.08.1810:56 | 328 | |
화정큐삼 | 24.08.1800:04 | 205 | |
화정큐삼 | 24.08.1722:03 | 189 | |
jbhlyk | 24.08.1710:14 | 167 | |
Stultus | 24.08.1622:06 | 251 | |
hackillious | 24.08.1511:16 | 159 | |
세유니 | 24.08.1421:30 | 124 | |
Stultus | 24.08.1419:58 | 345 | |
오디세이 | 24.08.1311:26 | 271 | |
좌절금지 | 24.08.1115:46 | 194 | |
티타보르 | 24.08.1111:21 | 141 | |
Stultus | 24.08.1022:46 | 183 | |
오디세이 | 24.08.1022:10 | 391 | |
jbhlyk | 24.08.1019:05 | 127 | |
RogerT | 24.08.0923:20 | 144 | |
좌절금지 | 24.08.0717:18 | 286 | |
RogerT | 24.08.0609:17 | 115 | |
줌바이퍼 | 24.08.0606:14 | 457 | |
jbhlyk | 24.08.0523:34 | 81 | |
수인과윤슈 | 24.08.0521:10 | 185 | |
좌절금지 | 24.08.0521:08 | 838 | |
Stultus | 24.08.0221:07 | 425 | |
Tamy | 24.07.3019:12 | 328 | |
해킨도전자 | 24.07.2915:37 | 260 | |
june119 | 24.07.2813:52 | 206 | |
Stultus | 24.07.2112:43 | 245 | |
BlueGuerrilla | 23.05.0502:19 | 3993 | |
Stultus | 24.07.1219:19 | 750 | |
김태국 | 21.08.0213:10 | 3679 | |
Stultus | 24.07.1122:47 | 215 | |
Stultus | 24.07.1020:44 | 137 | |
Stultus | 24.07.0921:44 | 137 | |
Stultus | 24.07.0820:57 | 223 | |
의정이 | 24.07.0811:28 | 171 | |
Stultus | 24.07.0721:25 | 264 | |
bsiugr | 24.07.0604:41 | 288 | |
애플브리크 | 24.07.0509:56 | 492 | |
광호 | 24.02.1715:21 | 2184 | |
치토 | 24.06.2723:24 | 398 | |
talas | 24.06.2617:24 | 193 | |
블루사탕 | 24.06.2120:58 | 116 | |
gtrfxdsp | 24.06.1609:01 | 511 | |
Mactopia | 24.06.1401:04 | 345 | |
Stultus | 24.06.1120:40 | 726 | |
새콤칠리 | 24.06.1115:07 | 672 | |
좌절금지 | 23.02.2118:35 | 118만 | |
Steer | 24.06.1001:11 | 275 | |
Door | 24.06.0810:09 | 155 | |
Tamy | 24.06.0107:41 | 415 | |
ssdwe346 | 24.05.2923:53 | 299 | |
joy | 24.05.2809:58 | 264 | |
거니 | 24.05.2601:07 | 243 | |
RogerT | 24.05.2520:14 | 247 | |
좌절금지 | 24.05.1812:40 | 912 | |
wjdgkdus | 24.05.1615:02 | 211 | |
Tamy | 24.05.1417:36 | 797 | |
줌바이퍼 | 24.05.1002:04 | 1007 | |
의정이 | 24.05.0821:05 | 144 | |
ryzen | 23.10.0921:28 | 2404 | |
챠니앤차니 | 24.05.0319:15 | 146 | |
챠니앤차니 | 24.05.0220:17 | 173 | |
고맹이 | 24.05.0210:00 | 635 | |
shl628 | 24.04.3013:54 | 1067 |
언제나 shl628님의 도전과 수고 감사할 따름입니다.
성공을 기원해요~~