X86 Open로그인

추천하기 twitter 로그인 facebook 로그인 google 로그인 카카오 로그인 네이버 로그인
4

SSDT-1.aml을 이용한 GPU 인젝션 
Arbitrary를 이용한  Cosmetic

 

커스텀 맥 설치 후 디스플레이 블랙 아웃은 AppleGraphicsDevicesPolicy의 설정에 기재된 Board-ID의 ConfigMap 값을 None으로 지정하는 가장 기초적인 방법이 있었습니다만 아래의 단점이 있었습니다.

1) 운영체제 업데이트시마다 매번 수정해야 하는 점
2) 리커버리 모드 진입시 부트 플래그를 적용하고 진행해야 하는점 을 꼽을 수 있겠습니다

따라서 클로버 부트로더를 사용할 경우

1) "클로버 컨피규 레이터/PlistEditor"를 이용해
2) DSDT의 GPU 슬롯 이름을 GFX0~2, PSX1등으로 TEXT to HEX변환을 거쳐 ACPI/DSDT Patches에 등록하고
3) Devices/Arbitrary에 GPU 정보를 입력하여 디스플레이 블랙 아웃을 방지하도록 합니다

준비물)
A) 다윈덤퍼 (또는 클로버 부트로더를 이용해 부팅중 F2를 눌러 PCI정보 출력)
B) 텍스트 / 헥스 변환 웹 사이트 Convert hexadecimal to text 
C) IORegistryExplorer (IORE)
D) 매키ASL (MaciASL)


우선 IORE를 실행하여 그래픽 카드 슬롯 이름을 확인합니다. 
187dd8f1e571060f412357c4bbac5f52.png

위 스샷은 제가 현재 사용중인 HP Z420이므로 HP Z620이외에는 다르게 보일 수 있습니다.

DSDT에서 NPE2슬롯 정보를 확인하기 위해 Cmd-F를 누르고 검색 합니다.
스크린샷 2016-12-02 오전 12.22.08.jpg

위 스샷을 확인하면 NPE2 하위 장치로 SLT2가 있음을 확인할 수 있습니다.
기존 GPU SSDT injection에서는 SLT2의 정보를 지우고 새로운 장치 GFX1을 추가 했었는데요. 이번 작업에선 SLT2의 이름을 Config.plist의 DSDT Patches기능을 이용해 변환하도록 합니다.

 

스크린샷 2016-12-02 오전 12.40.48.jpg

SLT2를 HEX 코드로 변경하면 534C5432입니다. 이것을 GFX1의 HEX코드에 해당하는 47465381로 기재하도록 합니다.
이 과정을 통해 SSDT에 새로운 GFX 인젝션 필요없이 SLT2의 이름을 GFX1으로 손쉽게 변경한 것입니다.

물론, 각 메인보드별 GPU가 장착된 슬롯의 이름은 상이하게 다를 수 있습니다. 따라서 DSDT에 기재된 슬롯 이름과 하위 슬롯 이름을 꼭 확인하시고 변경 작업을 하시면 되겠습니다.

 

screenshot12.png
클로버 부트로더 시작시 F2를 누르면 EFI/Clover/misc폴더에 preboot.log파일이 저장됩니다. 이 파일은 BBEdit등으로 열어서 스크롤를 내리다 보면 아래 스샷처럼 PCI 장치 정보가 나오게 됩니다.

스크린샷 2016-12-02 오전 2.22.40.jpg
PCI 장치 리스트에서 표시되는 것은  Native로 작동하는.. 흔히 말하는 OOB입니다.
(HP Z420의 Ethernet port는 Kext없이 정상 작동하지 않으니 이것만 논외로 하겠습니다)

따라서 GPU 인젝션을 위한 작업은 다윈 덤퍼또는 클로버 부트로더의 Preboot을 이용하면 되겠습니다만, 전체적인 PCI 카드 정보를 Config.plist에 인젝션을 하기 위해서는 다윈 덤퍼가 나을 수 있습니다.


물론 클로버 컨피큐레이터를 이용해 더 간편하게 GPU의 PciAddr을 확인할 수 있습니다
스크린샷 2016-12-02 오전 2.31.23.jpg
클로버 컨피규레이터에서 Boot.log를 생성하고 스크롤를 내리다 보면 PCI카드들의 PciAddr주소가 표시됩니다. 여기에서 GPU의 PciAddr을 찾는건 시간문제가 되겠죠? ^^

그럼 이제 그래픽 카드의 정보를 Config.plist/Devices/Arbitrary에 등록하도록 합니다.
스크린샷 2016-12-02 오전 12.51.55.jpg

위 스샷은  GTX760기준이며, 만약 라데온 280X라면 ( http://sixflow.net/osx86/System/86307 )을 확인해 주세요

스크린샷 2016-12-02 오전 12.56.56.jpg
그리고 GPU의 HDMI 오디오포트로 위 스샷과 같이 등록하여 주도록 합니다.

 

여기에서 PciAddr 값은 Lspci값을 가져오는 방법을 이용할 경우 아래 스샷처럼 하시면 됩니다
1ae1d0c888a3650c7b09354e1ead30ee.jpg
다윈 덤퍼를 실행하여 LSPCI만 체크하여 추출 합니다

01815d1fcddda07b26f0e29e0e232cc8.jpg
추출된 파일중 lspci detailed (nnvvbxxxx).txt 파일을 열어본 다음 "Audio"를 검색하시면 아래 스샷처럼 나옵니다


스크린샷 2016-12-02 오전 1.00.09.jpg
위 스샷에서 05:00.1이 바로 GPU/HDMI Audio PciAddr입니다.
그외 다른 PCI카드나 메인보드 칩셋의 코스메틱을 작업할 경우 해당 PciAddr 주소는 위와 같이 찾으시면 되겠습니다.

 

스크린샷 2016-12-02 오전 2.09.38.jpg
혹시라도 DSDT에서 GPU 슬롯의 구문에서 _SUN 구문이 있다면, _SUN ☛ _CUN등으로 이름 변경을 해야 합니다.
이를테면 _ZUN으로 해도 상관은 없지만 차후 수정이 용이한 4자리 문구로 넣어 주시면 됩니다.

단, TEXT to HEX과정을 거쳐야 합니다.

스크린샷 2016-12-02 오전 2.11.39.jpg


바로 위 스샷처럼 ACPI/DSDT/Patches항목에 Find/Replace값을 넣어주셔야 합니다. 그래야 _SUN이 _CUN으로 읽혀지게되어 

스크린샷 2016-12-02 오전 2.12.48.jpg
Arbitrary에서 슬롯 이름을 AAPL,slot-name으로 변경한 값이 적용될 수 있기 때문입니다.

* 만약 _SUN이 리셋 안된 경우 SM951 NVMe는 외장형 장치로 읽혀지게 됩니다.
* 또는 AAPL,slot-name이 Arbitrary에 적용됐음에도 불구하고 엉뚱한 Slot name이 표시될 수 있습니다
* NVMe의 경우 큰 문제는 없지만 장치 추출 버튼이 "파인더"에서 보이므로 장치를 추출하면 컴퓨터를 재부팅해야 합니다
* 그외에는 기분이 탐탁치 않다는 점이랄까요? (코스메틱의 꽃은 사용자가 원하는 이름으로 나와줬으면 하는것 아니겠습니까?)
* 사용자의 마음이란 커스텀 맥이지만 리얼맥의 그 것처럼 보이게 한다는 의미이기도 합니다
 

아무튼 지금까지 작업한 Config.plist파일을 저장하고 재부팅한다음 올바른 값이 적용되었는지 확인하시면 됩니다.
만약 기존에 SSDT에  GPU인젝션을 하셨다면 해당 파일을 백업한 다음 EFI/ACPI/Patched에서 해당 ssdt를 삭제하고 재부팅 하시면 됩니다

 

**

Dummy.plist.zip  본문에서 사용한 Config.plist 예제입니다.

good poor

칡죽 아이뱅크 BBongs Mactopia님
4명이 이글을 호평하셨습니다. 0명이 불평하셨습니다.

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 추천 정보가 입력되지 않았습니다.
twitter 공유 facebook 공유 googleplus 공유 카카오스토리 공유 네이버라인으로 공유

글쓴이의 서명이 비어 있습니다.

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 추천 정보가 입력되지 않았습니다.
  • Profile
    2016/12/03
    0 0

    보충해서 올려주셨네요

    감사합니다.

  • Profile
    2016/12/04
    0 0
    아이뱅크 : 보충해서 올려주셨네요 감사합니다. 에 달린 대댓글입니다.

    네 조금 더 보충해서 올려놓았습니다.. ^^ 얼마전만해도 SSDT에서 DSDT의 GPU정보를 교정하는 인젝션을 썼는데..
    어느새 Device Properties를 Gfxutil을 이용해서 인젝션하고.. 결국엔 이 방법을 통해서 인젝션을 하니까 확실히 DSDT는 손안대는 선에서 Config.plist만 교정하는 방법이라서 상당히 간결해진 느낌입니다 ^^ 즐거운 주말 되세요!

일반로그인 twitter 로그인 facebook 로그인 google 로그인 카카오 로그인 네이버 로그인
서버에 요청 중입니다. 잠시만 기다려 주십시오...