그래픽카드에 대한 모든것.
(이 글은 제가 사용하는 카드가 엔비디아 이기에 엔비디아 중심이지만 ATI 계열도 부분 적용될수있습니다)
-리테일 설치를 기본으로 작성하였습니다. 배포본설치시에도 적용될 수 있습니다.
-초보분들을 기준으로 가능하면 복잡하지 않게,
com.apple.boot.plist 파일내용을 긁어 복사하거나하는 방식은
배제하였습니다.
------------------------------------------------------------------------------------
그동안
그래픽카드를 연구하며(?) 여기저기 흝어뜨려놓았던 내용들을 하나의 글로 정리해 올려봅니다. 전에 몇시간동안 정리해보았는데 로그아웃이 풀리며 모두
거품이 되었던 관계로...제가 아는 한도내에서 정리해봅니다.
사실상
해킨토시에서 가장 중요한 성능의 영역을 차지하는 것이 바로
그래픽카드를
제대로 설정하는 일일 것입니다. 사운드와 cpu 영역도 역시 중요합니다만, 맥os 만의 성능을 제대로 구현해주는 것은 바로
그래픽효과이기
때문입니다.
-------------------------------------------------------------------------------------
how
do work in hackintoshi-해킨에서의 그래픽카드 동작 원리
크게 ATI 계열과 NVDIA 계열로 나뉘는 그래픽카드을
동작하게 만드는 드라이버는 대부분 맥 OS 의 extensions 폴더에 드라이버가 들어있습니다.
때문에 따로 Nvkush,
natti , Nvdarwin 등의 "사제" 드라이버를 설치하거나 하는 것은 크게 바람직하지 못합니다. 대부분의 배포본에서 쉽게 그래픽카드를
사용하게 하기 위해 적용하고 있지만, 실제 성능의 구현면에서는 완벽하지 않을 수 있습니다.
(혹은 완벽할수도 있습니다. 검증된것은
없으므로...)
우리가 그래픽카드의 성능을 제대로 내기 위해서 해 주어야 할일은 바로 이 Extensions 에 있는 NV로 시작하는
파일들과 ATI 로 시작하는 파일들에게 내 그래픽카드 모델을 "디텍팅" 하여 인식하게 하는 것입니다.
해킨에서의 그래픽카드
드라이버는 "까는것" 이 아니고 이미 깔려 있는 드라이버에 자신의 카드를 맥에서 요구하는 방식으로 "인식" 시키는
것입니다.
-----------------------------------------------------------------------------------
그래픽카드에서
중요한것은 무엇?
QE/CI
하드웨어 가속기능이며
애플 맥OS 를 사용하는데 가장 중심되는 요소라 할 수
있겠습니다.
때문에 초기 해킨 설치시 가장 화두가 되는 것도 QE/CI 입니다. 그래픽카드를 제대로 인식하지 못할경우 QE/CI 를
소프트웨어로 잡기 때문에 훨훨 날아다니는 맥의 현란함을 느끼지 못합니다.
QE/CI 가 잡혔는지 확인하는 방법은 스노우
레오파드/레오파드 모두 F12 키를 눌러서 + 마크를 누르신 후 아래 있는
대시보드에 있는 아이콘 아무것이나 클릭하여 추가 시킬때 약 4초간 짜라랑~~ 하며 모니터 전체에 물결이 퍼지는지를 보면
됩니다.
OPEN CL
스노우
레오파드에서는 OPEN CL 이라는 새로운 그래픽기술을 사용합니다만 아직
어떻게 적용되는지는 크게 확인 된 것이 없습니다. QE/CI 가 잡혔다면 CL 도 당연히 적용되고 있는 것으로 보면
옳습니다.
QG
리얼맥에서도 이 기능에 대해 OFF 되어 나오는모델이 있다고 합니다. 굳이
키지 않아도 별 상관은 없어 보이는 기능이지만 자료실의 OSX Tools를 이용하면 쉽게 "On/Off" 시킬 수 있습니다. 별 문제 없다면
ON
-------------------------------------------------------------------------------------
그래픽카드를
어떻게 잡나요?
가장 보편적인 방법이 GFX String 값을 EFI Studio,OSX Tools, Uinstaller 등을
이용하여 그래픽 관련 코드를 com.apple.boot.plist 파일에 넣어주는
것입니다.
--------------------------------------------------------------------------------------
지워야
할 파일들
초보시절 배포본을 들고 엔비디아에서 자주 사용되는 "비 오리지널" 그래픽 드라이버들에 대한 상식이 없기때문에 유통되는 파일들을
정리해드립니다.
아래와 같은 파일들이 있으면 오리지널 맥OSX 에서 제공하는 그래픽 드라이버를 사용할 수
없습니다.
----------------------------------------------------------------------------------
nvinject.kext
nvkush.kext
nvdarwin.kext
/system/library/extensions
혹은 /extra 폴더에서
삭제해주세요
-----------------------------------------------------------------------------------
EFI
스튜디오의 간단 사용법 - EFI studio 구하는 방법 -> 자료실에서 studio 로 검색
EFI 스튜디오를 실행하시면
Device =Display 라고 되어있는 부분에서 자신의 그래픽 카드,
혹은 그래픽카드가 변종 (끝 숫자가 50 등으로 끝나는)이라면
숫자 50을 낮추고 그래픽카드 메모리에 맞는 카드를 선택 후 "Add device" 를 누릅니다.
editor 가 나타나는데 write
to com.apple.boot.plist 를 누르면 com.apple.boot.plist 에 적용됩니다. 재부팅하면 QE/CI 가 잡히고
자신의 카드를 확인할 수 있을 겁니다.
** 이런경우****
간혹 자신에게 맞는 GFX String 을 넣어 주었음에도,
그래픽카드를 인식하지 못하는 것은 com.apple.boot.plist 파일이 이곳저곳에 여러개 산재해 있기 때문에 삽질도중 부트로더를 여러
프로그램으로 설치 히도해 보았다면, EFI 파티션과 /Extra 폴더등에 여기저기 여러개 들어가 있는 경우가 있어서 EFI Studio 등으로
작업했을 때 /Library/Preferences/SystemConfiguration 에 있는 Com.apple.boot.plist 파일
내용을 수정하게 될 확율이 높습니다.
그렇다면 실제 부트로더가 읽어들일 파일인 EFi 파티션의 /Extra 나 부팅 파티션의
/extra 에 있는 com.apple.boot.plist 파일엔 적용한 EFi 스트링 값이 적용되지 않게 됩니다.
이런 경우 각자의
부트로더나 시스템 속성이 다르므로, 찾아낼수있는 모든 com.apple.boot.plist 파일을 열어본 후 추가된 GFX String 값을
다른 파일들에도 추가시켜주십시요.
(자신의 오리지널 com.apple.boot.plist 를 모두 백업해 두시고 write
하십시요. 나중에 쓸데가
있습니다)
------------------------------------------------------------------------------------
일단은
EFI studio 로 GFX 스트링으로 QE/CI 그래픽카드 잡기에 성공하셔야합니다.
com.apple.boot.plist 가 부트로더
설치할때 여기저기 복사되기때문에 EFI STUDIO 가 모든 com.apple.boot.plist 파일에 GFX 스트링을 적용해주지 않습니다.
어딘가 숨어있는. 실제 동작하는 파일을 찾아내셔야 GFX 스트링을 적용시키실수있을 겁니다. 동작하지 않는 엉뚱한 파일에
com.apple.boot.plist 를 적용시키신다면 당연히 QE/CI 를 잡지 못합니다.
EFI 파티션에 부트로더를
설치하셨다면 EFI 파티션상에 com.apple.boot.plist 파일이 숨어있어서 골탕먹기 좋습니다.
때문에 저는 EFI 파티션을 전혀
사용하지 않습니다. 장점도 있지만 진정 고수가 아니라면 차후 불편한 문제들이 생겨날 여지가 많습니다.관리상의 불편요소가
산재.
********************************************************************************************************
(뒤에서
말씀드리겠지만 EFI 스튜디오는 1차 도구입니다. EFI 스튜디오를 추천하지 않습니다)
일단 GFX 스트링이 적용된
com.apple.boot.plist 를 하나 만들어 바탕화면에 복사해두세요. 쓸데가
있습니다
********************************************************************************************************
이과정에서
재부팅했을때모니터가 먹통이 되신다면 반대쪽 포트에 꼽고 일단 재부팅,
반대쪽 포트에 꼽아도 먹통이시라면
부팅옵션에서 boot: -s
명령 mout -uw /(엔터)
sudo rm -R
/library/Preferences/SystemConfiguration/
sudo rm -R
/Extra/com.apple.boot.plist
카멜레온 RC2를 설치하셨다면 부팅시 "/.Chameleon/Extra/" 에
있는 com.apple.boot.plist 파일을 읽어올 확율이 많습니다. (맥 윈도우상에서는 숨김파일 보기를
해야보입니다)
수동명령은 (그냥 제가 아는 방법대로)
cd /
cd .chameleon
cd
extra
sudo rm -R com.apple.boot.plist
재부팅하시면 일단 적용된 값이 모두 지워질 것이므로
이런식으로 재부팅하세요.
(다른방법은 제가 모르겠습니다 부팅옵션으로 -f 나 -x 를 주면 화면 잡으며 부팅이 될지..일단은 초기화를
시켜야 모니터를 보시며 작업을 하시겠죠?)
----------------------------------------------------------------------------
NVCAP
값이 무엇인가요?
NVCAP 값은 그래픽카드가 가진 개별적인 포트 구성들을 가진 값의 나열입니다
보통 0000000
00000000 00000000 00000000 00000000
NVCAP 값의 역할은?
모니터 출력부분에 절대적
권한을 행사합니다. 듀얼 모니터 구성이나, RGB,DVI 출력등이 되지 않는 가장 중요한 원인이 NVCAP 값이 틀려서
입니다.
NVCAP 값은 어떻게 생겼나요?
이런식으로 8자리 의 코드가 5개 씩 있습니다
EFI studio 의
editor 가 열렸을때 찾아보면 이런 값이
있습니다
(key>NVCAP(/key)
(data)
BAAAAAAAAwAMAAAAAAAABwAAAAA=
(/data)
(원래기호는
괄호가 아니고 꺽쇠입니다 꺽쇠에 넣으면 글이 보이지 않아서...)
여기서 (data) 와 (/data) 사이에 있는
BAAAAAAAAwAMAAAAAAAABwAAAAA=
이 값이 NVCAP 값입니다.
EFI 스튜디오가 제공하는 NVCAP 값은
모든 그래픽카드에 적용되는 값이 아니므로, 자신의 그래픽카드에서 직접 뽑아낸 NVCAP 값이 아니면 동작의 오류가 생길 수
있습니다
https://x86osx.com/bbs/view.php?id=osxtips&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=nvcap&select_arrange=reg_update&desc=desc&no=1798손쉽게
NVCAP 값을 뽑아내는 링크입니다. 참고하시고
도스를 만질 수 있는 고수분들은 가능한 도스부팅으로 NVflash.exe 를 실행하여
자신의 그래픽카드 롬을 백업해오세요.
그리고 nvcap 값을 nvcap maker 로 뽑아내시면
됩니다.
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
NVCAP maker 는이런 값을
내줄겁니다 띄어쓰기는 안되어있을 수 있습니다. 편의상 하는 띄어쓰기이므로.
그럼 이런 값을 어떻게 EFI String 에서처럼
BAAAAAAAAwAMAAAAAAAABwAAAAA= 이런식으로
만드느냐.
----------------------------------------------------------------------------------------------
숫자로
된 NVCAP 값을 영문값으로
바꿔야합니다
--------------------------------------------------------------------------------------------
Property
list Editor 를 이용합니다. (자료실에서 검색)
GFx String 값이 적용된 com.apple.boot.plist 파일을
바탕화면에 복사해두시고 로 열어서 뒤져보시면 NVCAP 라는 란이 있습니다. 열리지 않은 세모 키테고리를 쑥쑥 찾아들어가시면
있어요
010101010101010101010c010101010101010101
편의상 대충 썼습니다만 이런식의 숫자와
영문이 뒤섞여 nvcap 값이 나열되어있습니다.
(띄어쓰기가 되어있었는지 기억나지 않습니다만 되어있으면 되어있는대로 되어있지 않다면
되어있지 않는대로 자릿수에만 맞게 자신의 카드에서 뽑은 nvcap 값을 적용하는 것입니다)
그 nvcap 우측에 보면 숫자들이
나열되어있습니다. EFI studio 가 자기가 가진 기준대로 적용한 NVCAP 값입니다. xxxxxxxx xxxxxxxx 이런식으로 된
nvcap 값을 위에서 뽑은 자신의 nvcap 값으로 치환하고, 우측 상단의 Dump 버튼을 눌러보세요
화면 하단에 EFI
스튜디오에서 보았던
(key>NVCAP(/key)
(data)
BAAAAAAAAwAMAAAAAAAABwAAAAA=
(/data)
이런
값이 있을겁니다.
EFI 스튜디오로 뽑았던 값과는 다른
값일겁니다.
---------------------------------------------------------------------------------------------
*새로운
NVCAP 값을 적용시키기위해 백업해두었던 자신의 원본 com.apppe.boot.plist 를 모두 원위치 시키세요.
덮어쓰기.
-----------------------------------------------------------------------------------------------
다시
EFI studio 를 실행시키고 종전과 같이 EFI 스튜디오를 실행하셔서 그래픽카드를 잡은 후 뜨는 editor 의 NVCAP 값에
property list editor 로 뽑았던 이런식의 nvcap
값
BAAAAAAAAwAMAAAAAAAABwAAAAA=
이 값만을 긁어서 복사한 후.
(마우스로 긁은 후 드래그 하시는게 편합니다)
자신있으시면 키보드로 치셔도 되고, EFI studio 에서 마우스로 오른쪽버튼으로
붙여넣기는 동작하지 않습니다.
여튼 property list editor 로 생성한 NVCAP 값을 EFI studio 에서 뜨는
에디터에 적용해줍니다.
그리고 EFI 스튜디오에서 write com.apple.boot.plist 버튼을 눌러주시면 자신의 그래픽카드가
가진 고유의 NVCAP 값으로 그래픽카드를 잡으며 재부팅하시면 모든 출력 포트가 동작하는 것을 확인하실 수
있습니다.
-------------------------------------------------------------------------------------
네...뭔가
문제가 있으신가요??
네..문제 발생요지가 많습니다. 정말 완벽히 잡혔는지 알아보는
테스트 방법은 다음과 같습니다.
F12 를 누른신 후
대시보드에서 맨 밑바닥 프로그램 아무거나 하나를 추가해보세요 물결이 치지요? Qe/CI 가 잡혔군요. 그럼 당신의 그래픽카드는 정말 잘 잡혔다고
확신하시나요??
다음을
테스트 해 볼까요?
동영상을 하나 실행해보세요. 아무것이나
좋습니다.
간단히 사파리를 실행시키면
애플 홈피가 뜨며 우리의 스티브 밥스~~씨가 나오는 웹 동영상도 좋고,
동영상 플레이어로 실행하는 동영상도 좋습니다. 실행해서 창으로 띄워보시고 다른 창을 하나 준비하신 후 동영상 창이 아닌 다른창을 마우스로
이리저리 움직여보세요.
잘 나오나요? 그렇다면 좋습니다.
다음
테스트.
모니터 해상도를 전환해보세요.
여기서
화면이 먹통이 된다면 리셋버튼을 누르시고 다시 이 팁 게시물로 돌아오셔서 다음 내용들을 준수해주세요.
여기까지의
테스트를 잘 통과하셨다면 그냥 쓰셔도 무방하리라
생각합니다.
---------------------------------------------------------------------------------
DVI+DVI
카드의 경우 잡히니까 쓰는경우가 많은데 문제가 있다면 반대쪽 포트로 사용하셔야합니다.
같은 DVI 포트라도 1번포트가 따로있으니 1번포트로
사용하셔야합니다. 2번포트의
성능저하.
---------------------------------------------------------------------------------------
자
무엇이 문제일까요?
**참고- 듀얼모니터를 쓰실경우 아래에서 생겨날 문제의 가능성은 낮아집니다. 모든 포트를 사용하고 있으므로
OSX 가 햇갈려 하지 않습니다 **
모든 출력포트가 동작하게 하기위해 내 카드에서 뽑아낸 고유의 NVCAP 값을
적용시켰는데요.
모든 문제의 원인은 바로 출력포트입니다.
자신의 그래픽카드 고유의 NVCAP 값을 적용하여 포트는 작동하게
만들었지만, 애초에
리얼맥에 제공된 그래픽카드는 아니기 때문에 맥OS 가 동작하는 원리에
적합하지 않은
것입니다.
-----------------------------------------------------------------------------------------------
그렇다면
NVCAP 값에서 포트출력을 담당하는 부분을 살펴보겠습니다.
이곳의 대부이신 Niky 님이 제공해주셨던 해외사이트를
참조하였습니다.
https://nvinject.free.fr/forums/viewtopic.php?t=214Anyway,
first I'll show what are the important part in NVCAP and how they work :
04000000 0000xx00 xx000000 00000000 00000000
자. 위의 NVCAp 값에서 XX
로 표현된 두 파트가 중요해집니다. 바로 "내 그래픽카드의 출력은 이런것이다" 라고 말해주는 부분인데요
첫번째 XX 에 들어가는
코드가 채널1을 담당합니다
두번째 XX 에 들어가는 코드가 채널2를 담당합니다. 여기에서 채널2는 신경쓰지 않으셔도
됩니다.
일단 내용을
살펴볼까요?
-------------------------------------------------------------------------------------------------
ost
cards are using 4 or 5 outputs :
1/ DVI - 2/ VGA, 3/ VGA, 4/ TV out
1/ DVI - 2/ VGA, 3/ DVI - 4/ VGA, 5/ TV out
Later I'll show how this
is defined in a PC NVIDIA ROM for GeForce 5/6/7/8 series.
- so most dual
DVI cards will have channels using this settings (5 different outputs) :
channel 1 :
DVI + VGA --> bitmap 0 0 0 1 1 --> hex 03
channel 2 :
DVI + VGA + TV --> bitmap 1 1 1 0 0 --> hex 1c
or
channel 1 :
DVI + VGA + TV --> bitmap 1 0 0 1 1 -->
hex 13
channel 2 :
DVI + VGA + TV --> bitmap 0 1 1 0 0 --> hex 0c
TV output is usually defined a the last entry in the output definitions
in VGA ROM, that's why it is using the last position (5th position on dual DVI
cards, or 4th position on DVI + VGA cards)
- for DVI + VGA cards (4
different outputs) :
channel 1 :
DVI + VGA --> bitmap 0 0 1 1
--> hex 03
channel 2 :
VGA + TV --> bitmap 1 1 0 0 --> hex 0c
or
channel 1 :
DVI + VGA + TV--> bitmap 1 0 1 1 -->
hex 0b
channel 2 :
VGA --> bitmap 0 1 0 0 --> hex 04
(as you
can see, TV out is on last available postition, so 4th position for 4 available
outputs)
or
channel 1 :
VGA --> bitmap 0 0 0 1 --> hex
01
channel 2 :
DVI + VGA + TV --> bitmap 1 1 1 0 --> hex 0e
or
channel 1 :
VGA + TV --> bitmap 1 0 0 1 --> hex 09
channel
2 :
DVI + VGA --> bitmap 0 1 1 0 --> hex 06
The main
difference with windows behaviour is that Windows NVIDIA drivers are able to
dynamically define which channel to use for TV output, whereas OS X drivers use
a fixed position for TV out, NVCAP being defined in VGA ROM and saved in IOreg.
This setting is not able to change in OS X once drivers are loaded.
So
usual NVCAP for standard cards would be :
dual DVI cards :
04000000 00000300 0c000000 00000000 00000000 --> disabling 5th
position, no TV output.
04000000 00001300 0c000000 00000000 00000000 -->
5th position for TV out set on channel 1, TV out available when no other display
is connected on channel 1.
04000000 00000300 1c000000 00000000 00000000
--> 5th position for TV out set on channel 2, TV out available when no other
display is connected on channel 2.
DVI + VGA cards :
04000000
00000100 06000000 00000000 00000000 --> disabling 4th position, no TV output,
only 1 output on channel 1 and DVI + VGA on channel 2
04000000 00000300
04000000 00000000 00000000 --> disabling 4th position, no TV output, only 1
output on channel 2 and DVI + VGA on channel 1
04000000 00000300 0e000000
00000000 00000000 --> VGA only on channel 1, 4th position for TV out set on
channel 2, TV out available when no other display is connected on channel 2.
04000000 00000900 06000000 00000000 00000000 --> VGA only on channel 1,
4th position for TV out set on channel 1, TV out available when no other display
is connected on channel 1 (DVI + VGA on channel 2 using position 2 and 3, bitmap
0 1 1 0)
Laptops usually have first channel using only 1 output for
internal panel, on position 1, and depending on how many other outputs are
available, second channel can use positions 2, 3, and 4 :
04000000 00000100
02000000 00000000 00000000
04000000 00000100 06000000 00000000 00000000
04000000 00000100 0e000000 00000000 00000000
------------------------------------------------------------------------------------------
네.여기까지가
원문입니다. 일단 대충 이해는 하실수 있더라도 좀 복잡해보입니다.
하나의 샘플을 정리해드리면
채널1 의 포트 구성이
DVI + VGA(RGB포트) 라면 첫번째 xx 에 03 을
채널2 의 포트 구성이 DVI+VGA+TV 라면 두번째 XX 란에 1c 를
적용
간단해 보이는듯 어렵기도 합니다.
저의 경우는 카드는 VGA+DVI 이지만 DVI 를 1번 포트로 사용할것이므로
DVI+VGA 이므로, com.apple.boot.plist 에서 첫번째 xx 에 해당하는 값을 03 으로 적용하고 부팅해 보았습니다. 제
롬에서 뽑아낸 NVCAP 값만으로는 DVI 포트가 정상 동작하지 않았기 때문이지요. 정상작동했을까요? 아닙니다. 해상도 전환시 여전히
파란화면만 둥둥
뜹니다.
---------------------------------------------------------------------------
그
원인은 다음과 같습니다.
리얼맥에서는 기본적으로 1번 포트를 중요시 합니다. 맥OS 는 당연하게도
1번포트를 중심으로 프로그래밍 되어있구요, 예를들어 본인 카드 고유의 1번포트가 RGB 이고 2번포트가 DVI 라면 DVI 에 꼽고 부팅해서
해상도를 전환하게 될 경우,
맥OS 는 화면을 리플래시 하는 과정에서 1번 포트인 실제 꼽혀있지도 않은 RGB(VGA) 로 바탕화면과
메뉴, 아이콘,마우스 등을 모두 보내버립니다. 때문에 출력의 기본 화면인 푸른색 화면만 둥둥 뜨게 되는 것이지요.
분명 DVI 를
1번 포트로 하고 RGB(VGA) 를 2번 포트로 하는 값인 03 을 적용했는데도 왜 그런 것일까요? 원인은
04000000
0000xx00 xx000000 00000000 00000000 와 같이 생긴 NVCAP 값에서
두번째 xx 영역인 채널2를 나타내는
코드가 가지고 있습니다. 윈도우등에서도 TV 아웃 포트 출력을 함께 할때 아마 채널2를 사용할겁니다. 문제는 2 채널2가 가진 값이 맥OS를
햇갈리게 하는것에
있습니다.
--------------------------------------------------------------------------------------------------
많은
고민을 해 보았습니다. "어떻게 해야할까..."
험난한 과정이 있었지만 답은 생각보다 간단했습니다. 하등 쓸모없는 채널2를
날려버리십시요.
어쩌면 채널1을 날려버리고 채널2의 값을 자신이 원하는 값으로 적용해도 될지도 모릅니다만 본인은 정신건강상
테스트 해보지 않았습니다.
위에서 채널2 를 담당한다고 xx 로
표시되었던 부분을 00으로 바꾸어주면 됩니다
이런식입니다.
GGGGGGGG GGGG03GG 00GGGGGG
GGGGGGGG GGGGGGGG
G 로 표시된 첫번째 8자리,4번째 8자리,5번째 8자리는 그대로
놓아두십시요.
--------------------------------------------------------------------------------------------
이런식으로
채널2의 xx 영역을 숫자 00으로 바꾸어서 저 위에서 진행했던 과정대로 NVCAp 값을 치환하여 나온 AAAAAAAbAAAAd= 식으로 바꾼
후 EFI 스튜디오를 이용 com.apple.boot.plist 에 적용하면 해상도 전환에서 자유로울 수 있습니다. OSX 가 채널 1 와 채널
2 의 복잡한 과정에서 탈출하게 되기
때문이죠
-----------------------------------------------------------------------------------------------
자..
몇몇개 정리해 보겠습니다.
첫번째 XX 를 바꾸는 코드들 입니다.
DVI(1번 기본 포트) + VGA(2번포트) =
03
DVI+VGA+TV = 0b
VGA only = 01
VGA+TV = 09
가
되겠습니다.
-------------------------------------------------------------------------------------------------
채널
2를 날리는 것은 싱글 모니터 사용자를 위한 것입니다. 제 RGB(1번) +DVI(2번) 인 그래픽 카드의 경우에도 듀얼모니터를 사용할땐
그래픽카드 자체에서 뽑은 NVCAP 값만으로도 모두 정상동작 합니다. 다만 평소 싱글 모니터를 사용하므로 OSX 가 햇갈려 하는 것을 보정해
주기 위한 방법으로 채널2를 날린 것입니다.
다른 값들은 그래픽카드 자체에서 뽑아낸 nvcap 값이 고유의 값이므로 그대로
적용하시면 됩니다. 첫번째 xx 와 두번째 xx 값만이
중요합니다.
------------------------------------------------------------------------------------
그래픽이
완벽히 동작하기 위해선 DSDT로 잡아야한다.
-------------------------------------------------------------------------------------
자..여기까지
왔습니다.
DVI 출력이 제대로 되나요?.. 여기까지 자신의 NVCAP 값을 잘 적용하였다면 해상도 전환의 문제도 사라졌을
것입니다.
동영상을 실행 한 후 다른 창을 이리저리 움직여보세요.
동영상이 끊기나요? 혹은 끊기지 않나요?
시스템빨로 동영상이 끊기지 않을 수도 있습니다. 추측과
테스트에 의한 검증만 했을 뿐.
저도 정확한 원인은 모르지만
기본적으로 그래픽 가속기능들은 원활하게 동작하는데 ,
멀티테스킹에 그래픽카드가 일족의 렉이나 딜레이 현상을 가지는 것을
발견했습니다.
근래 제가 그래픽카드는 반드시 DSDT 로 잡아야만 한다고 강력히 주장하고 있습니다.
이유인즉. DSDT 는
하드웨어의 값을 "후킹" 시켜주기 때문입니다. 그렇다면 com.apple.boot.plist 에 적용시키는 GFx 스트링 과는 어떤것이 다르게
작용할까요?
사실 DSDT 와 GFX 스트링(EFI 스튜디오를 이용해 잡는) 가 그래픽카드를 잡는 방식은 위에서도 말했다시피,
OSX 자체가 가진 그래픽카드 드라이버가 내 그래픽카드를 "디텍팅" 하여 인식할수있게 하기위한 코드의 조합에 불과합니다. DSDT 에도 GFX
스트링과 같은 NVCAP 값이 있고, 사실상의 기능이나 방식은 전혀 다르지 않습니다. 하지만 중요한것은 . 구현 원리가 다름에
있습니다.
명확한 것은 없기 때문에
테스트에 의한 가설입니다만, EFI studio 의 GFX
string만으로 적용시키는 값들은 OSX 에 일종의 "강제력" 을 행사합니다.
실제 하드웨어는 A 라고 말하고있는데 "넌 A 가
아니고 B 다!" 라고 "억지력"을 사용하고있기 때문에, 해킨에서는 명확히 규명할순 없지만, 그래픽카드의 성능을 저해하고, 또한 그때문에 눈에
보이지 않는 트래픽, 이나 저항, 딜레이, 오류. 등이 있을 수 있습니다.
DSDT 는 조금 다릅니다.
DSDT 는
"후킹"은 물리적 하드웨어를 OSX 에 "후킹" 으로 적용시키는 방식입니다.
어떤 방식이냐 하면 하드웨어 값A 가 있다면 OSX 에서
사용해야할 값 B 로서 "물리적인 적용"이 될수 있게 소통시켜주는 것이 바로 이 DSDT 의 역할인 것입니다.
실제 몇몇분의
테스트결과 GFX 스트링이 아닌 DSDT 로 그래픽카드를 잡았을 경우
문제가 사라졌다는 리플의 간증의 시간들이 있었습니다.
EFI 스튜디오의 스트링으로 문제가 있다면 당연히 DSDT 로 적용해야 할
것이고,
또한 본인이 문제없이 느껴진다 하더라도 눈에 보이지 않게 발생할 수 있는 문제들에 대해 자유롭고 싶다면,
EFI studio 를 버리고DSDT 로 그래픽을 잡는 "삽" 을 드시기를 적극
권장합니다.
---------------------------------------------------------------------------------------
DSDT
로 그래픽 잡기
https://x86osx.com/bbs/view.php?id=osxtips&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=dsdt&select_arrange=reg_update&desc=desc&no=1622니키본좌님의
DSDT 로 그래픽 잡는 강좌입니다.
참고하시고, 니키님이 잘 설명해 주셨기 때문에 저는 보완설명과 참고정도
해드리겠습니다.
1.일단 본인의 DSDT 가 하나 준비되어 있다는 것을 전제로 합니다.
윈도우용 ACPI patcher 의
컴파일을 통과할수 있어야겠지요?
2. 그래픽스 란의 빨간 글자로 된 파트들은 ATI 사용자 용 이라고 합니다. EFI 스튜디오로
그래픽카드만 잡아도 devid 는 맥 시스템 정보보기상에도 나타납니다. (지포스는 안넣으시는게 좋습니다.가능한 안넣는쪽이 성공확율이
높을거예요)
3. DSDT 로 그래픽카드를 잡을때 가장 중요한것은 하드웨어 로케이션(위치)입니다. 니키님 강좌를 보더라도
포트문제에서 가장 많이 막히는 부분을 볼수 있습니다. IORegistryExplorer 을 이용하는데 저 역시도 무수히 머리쥐어짜 보았지만 제
정확한 포지션을 알아낼 수
없었습니다.
----------------------------------------------------------------------------------------------
일단
편법입니다만 지식이 부족하거나 시스템마다의 차이가 크기때문에, 자신의 그래픽카드 이름이나 메모리를 선택하는 부분은 어렵지 않습니다. 일단
선택하시고,
ACPI patcher 05 를 실행하시면 Hardware location 부분에 pci, pex , p0p 세가지가
있습니다.
일단 윈도우의 c:에 폴더를 많이
만드세요
c:pci0
c:pci1
c:pci2
c:pex0
c:pex1
c:pex2
c:p0p0
c:p0p1
c:p0p2
일단
패치방식중 2번째 메뉴인 DSDT Patch 를 기본으로 하겠습니다.정상 동작하는 자신의 DSDT.aml 파일이 있다는 것을 전제로 하기
때문에.. 바이오스에서 처음 dsdt.aml을 만드시는 분이라면 좀 더 복잡해지기때문이죠..그래픽을 제외한 dsdt 가 정상 동작하는 여부도
불분명하구요.
폴더를 각각 0,1,2 세가지밖에 만들지 않는것은 그래픽카드는 대부분 PCI-EXpress 를 사용하고 그 포트넘버가
2를 넘어가지 않기 때문입니다.
NVCAP 값을 설정하시고(DVI+DVI , 혹은 DVI+VGA) Use DSDt GFX 만
체크하세요. (시스템에 따라 다를 수 있습니다만...)
PEGP 옵션이 바이오스에서도 있다면 체크하시고 Patcher 에서도
체크하세요.
PEGP옵션 여부에 따라 달라질수도 있으니, 일단 모두 켜고 해보셔야
합니다.
--------------------------------------------------------------------
**중요해서
추가기록** 기본적으로 다른 패치들은 모두 언체크 하고 컴파일 해보세요
HPET,RTC
등...
----------------------------------------------------------------------------
중요*** DTGP (프로그램하며 미스했는지 DGPT 등으로 이름박힌 프로그램도
있습니다)
확인한바 패쳐의 다른 픽스 옵션들 보시면 DTGP 라는 옵션이 있습니다.그냥 컴파일하면 묘하게 컴파일이 안되는 파일이
있을겁니다.
RTC 등이 있는 메뉴에서 버튼을 누르면 DTGP옵션이 나옵니디.
영문 설명을 읽어보면 VGa 랜카드 사운드등을
포트에 관계없이 잡게 해주는 기능입니다.
PCI0 에서는 DTGP 를 체크하지 않고서는 컴파일이 안되었으며,
PCI1 의 경우는
DTPG 체크하지 않고 컴파일 되었습니다.
그러나 실제로 DTPG 를 체크하지 않고 컴파일하면 그래픽관련 정보가 DSDT 에 들어가지 않는
경우가 많았습니다.
일단 DTGP 옵션을 more fix 에서 체크하시고 파일 만드는 작업을 시작하세요
시스템에 따른것이지
잠자기 신경쓰지 마시고. 그냥 DTGP 를 체크하세요.
변환하시며 강제력 "Force" 강제 파일 만들기 체크하시면
안됩니다.
DTPG 패치는 해당하는 모든 포트를 사용할수있게 후킹(?) 해주지만, 잠자기를 저해할수 있습니다.
시스템에 따라
다르지만 아마도 모든 포트를 열어두기에 잠자다가 깨어나는 듯 합니다.
DTPG 패치를 하시면 비교적 수월하게 그래픽카드를 DSDT 로
잡아내실수 있습니다.
잠자기때문에 테스트결과 이 경우 PCI0(DTGP체크) 과 PCI1(DTGP 노체크)
두개 모두 QE 가 잡혔습니다
일단 DTGP 를 이용해 잡으신후 잠자기 문제가 생기신다면, 그땐 알아서 당신의 몫으로
DTGP 없이 노가다
해보셔야합니다.---------------------------------------------------------------------------------------
자
이제 만들어둔 pci0 폴더에 pci 0 으로 설정된 dsdt 를 하나 변환시키세요
pci1 폴더에는 pci 1 으로 셋팅하여
저장하시고..
옵션과 저장 폴더 위치를 바꿔가며 하나씩
저장하세요
---------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
어쨌거나
변환에 성공해야합니다. 애초에 DSDT 내용중 HPET 나 RTC 패치등 다른부분들이 제대로 패치되어있다면 패치의 다른부분들은 건들이지
않으셔도 정상 패치가 되실겁니다.(패치되어있는것을 또 패치 코드를 넣으면 중복되는 경우도 있습니다 참고하시고)
OSX 에서
NTFS 윈도우 폴더를 읽을 수 있다면 그냥 OSX 로 부팅하시고 아니시라면 USB 에 폴더들을 저장하거나 압축해서 본인의 메일로 보내주시고
레오파드에서
다운받으셔야겠죠?
------------------------------------------------------------------------------------
OSX
로 부팅하여 폴더들을 모읍니다.
패치된 파일이름은 fixedsdt.aml 이나 dsdtfix.aml 대략 이런 이름들로 되어있을
겁니다.
** DSDT Se 로 열었을때 Search 를 통해 그래픽카드 코드가 들어갔는지부터 확인하세요 실수할경우 안들어가는경우가
있습니다 ) ㅇ예))
8600 예)Grforce
---------------------------------------------------------------
여기서
EFI studio 로 잡은 com.apple.boot.plist 의 GFX 스트링이 있거나 Nvkush,nvdarwin,rabbit 등이
extensions 에 있다면 모두 삭제해주세요. 카멜레온으로 잡는 그래픽 설정들도 모두 off.
-----------------------------------------------------------------
무식하지만
본인의 정확한 포트를 알기 어렵기 때문에 하는 일이므로 만들어둔 dsdt 파일들을
하나하나 대입하고 재부팅해
봅니다
--삽질횟수를 줄이기 위해 각 pci,p0p,pex 의 0번들 부터
테스트하세요. 대부분 0번에 있을확율이 높습니다.
니키님은 p0p 2
쪽이 많다고 하셨으니 p0p 의 경우는 2번 먼저 해보시고
(모두 대입해보는데 생각보다 시간 얼마나 안걸립니다. 약 5에서 10분)
pci0 에 있는 놈부터 엔터 쳐서 dsdt.aml 로 아름을 바꾸신후 본인이 dsdt 파일을 넣는 위치에 덮어쓰셔서 대치해서 한번씩 재부팅
해봅니다
부팅하자마자 F12 눌러서 대시보드 하나씩 추가해 보시면 물결 여부에 따라 QE/CI 가 잡혔는지 알수있죠?
------------------------------------------------------------------------------
**혹은
아예 검은화면이 나와서 OSX 를 사용할 수 없으면 그래픽이 DSDT 로 잡힌겁니다.
DSDT 로 잡혔기 때문에 나오는 검은화면이므로
오히려 기뻐하십시요. NVCAP 값을 바꾸어주면
됩니다.
--------------------------------------------------------------------------------
그동안
해온 방법과 같이 모니터 포트를 바꿔끼시거나 바꿔껴도 검은화면이라면
일단 transmac 을 이용 삭제하시거나 기존 dsdt 로
덮어씌우시고.
여유치 않다면
-s 옵션으로 부팅
mount -uw /
cd /
cd extra
(dsdt.aml 이 엑스트라에 있다면)
등으로 dsdt.aml 경로로 이동하셔서
sudo rm -R
dsdt.aml
혹은 백업해둔 dsdt.aml 경로로 이동하셔서
sudo cp -R dsdt.aml
/
혹은
sudo cp -R dsdt.aml /Extra
자신의 경로에 맞게 부팅잘되는 원본 DSDT 로
치환하시고
일단 부팅하세요.
여기까지 따라왔는데도 DSDt 로 QE/CI 가 잡히지 않으셨다면
위로
돌아가셔서 PEGP 옵션을 체크해제 하시고 같은 작업을 반복하시면 본인의 포트에 맞춰진
그래픽 잡은 DSDT 파일을 얻을 수
있습니다.
----------------------------------
자..내 하드웨어 주소가 어디인지 이제 알아냈습니다
.
NVCAP 값에 문제가 없다면
테스트후 그냥 쓰시면 됩니다.
동영상을 틀어놓고 멀티테스킹에도 문제
없을
것입니다.
---------------------------------------------------
자..DSDT.aml
을 작성하며 위에서 작업했던 NVCAP 값은 적용되지 않았으므로
EFI 스튜디오로 잡을때처럼 내가 사용할 NVCAp 값을 DSDT.aml
에 적용해야 합니다 쉽습니다.
좀전에 QE/CI 가 잡혔던 dsdt 파일을
자료실의 DSDT SE
1.2 영어버전으로 오픈하여 열어봅니다.
Search 란에 NVCAP 을 입력하신 후 서치버튼을
누르세요
"NVCAP",
Buffer
(0x18)
{
/*
0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07,
/* 0010
*/ 0x00, 0x00, 0x00, 0x00
},
이런것이 나올겁니다. 어째 아까랑 좀 달라서 햇갈리시나요? 자릴수도 틀려보이고.
똑같습니다 xxxxxxxx
(8자리 가 5개)
앞의 0x 는 무시하시고 0x 뒤에 붙은 뒤에 00 혹은 04 혹은 03 이런식으로 된 코드들이 nvcap 숫자값과
일치할겁니다.
자릿수를 하나씩 세어보 면
/* 0000 */ 0x04, 0x00, 0x00,
0x00,(여기까지가 처음 8자리) 0x00, 0x00, 0x03, 0x00, (두번째 8자리)
총 8개가
있군요
첫번째줄이 숫자로 된 nvcap 값의 xxxxxxxx xxxxxxxx 00000000 0000000 0000000
000000
여기서 xx 로 표시된 값들이군요. 0x 로 표시된 뒷자리 코드들만 참고하시면 됩니다
내
nvcap 값이 04000000 00000300 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
이므로 맞게
되어있군요.
두번째 줄도 같은 방식입니다.
xxxxxxxx xxxxxxxx 00000000 00000000
xxxxxxxx
마지막 3번째 줄 코드는 당연히 마지막 8자리 숫자입니다.
이렇게 자릿수에 맞게 자신이 위에서 뽑았거나
수정했던 NVCAP 값으로 잘 바꾸어주시고~!
컴파일 하신 후. DSDT SE 에서 인스톨 하시거나, 저장하셔서 현재의 DSDT.aml 에
덮어써주시면 됩니다.
재부팅 해보세요~
해상도 변환, 동영상 재생시의 멀티테스킹 끊김 문제없이
원활하게 동작하고 있을
것입니다.
--------------------------------------------------------------------------------------
다른
방법들...........
니키님이 카멜레온 Rc3 에서 자신의 그래픽카드에서 뽑은 Rom 파일을이용해 부팅하는 방법에 대한
링크입니다.
https://x86osx.com/bbs/view.php?id=freeboard&page=1&sn1=&divpage=4&sn=off&ss=on&sc=off&keyword=%BB%F0%C1%FA&select_arrange=reg_update&desc=desc&no=20072이
방법은 실제 rom 파일에 nvcap 값을 수정할 수 없지만, rom 파일 자체만으로 그래픽카드를 잡아주는 카멜레온2 RC3 의
기능입니다.
문제는...... 여러
테스트를 해보았지만 되는분만 되는 방법이며,
시도해보았습니다만 저의
경우는 잡히지 않았습니다.
잡힌다하더라도 nvcap 를 수정하기 어렵기 때문에 언급하지 않았습니다.
-------------------------------------------------------------------------------------
EDID
에 대한 언급
EDID 는 모니터의 해상도와 같은 부분에 대한 정보를 담고있는 "모니터" 의 롬파일 정도로 이해하실 수 있습니다.
중소기업 모니터의 경우 이 EDID 값이 없거나 하는 경우가 있습니다.
때문에 Edid 값이 없어서 해상도 전환이 되지 않는다고
하는데,
시스템 정보보기에서 반드시 모니터 회사이름이 나와야만 모니터가 잡힌것은 아닙니다.
DIGITAL 이라고 나올수도있고
LCD 라고 나올수도있습니다
저도 처음에는 해상도 전환 문제가 EDID 때문인가 하여 삼성의 EDID 로 바꾸어 보았습니다만, 다른 회사
모니터의 EDID 값으로 바꾸다가 모니터가 나오지 않거나 할 경우 낭패를 볼수 있습니다
가급적 추천하지 않습니다.
본인의
EDID 값을 뽑았을때 뽑히는 값이 있다면 EDID 가 있는 것이므로, EDID 업데이트라던가 하는 시도를 하지 마시기 바랍니다. (값을 뽑아만
보는것은 아무 리스크없습니다)
그래픽카드를 잡는 것에 대한 팁이므로,
EDID 에 대한 언급이나 방법은 설명 하지 않겠습니다.
다만 여기까지 따라오셨는데도 DVI 상에서 해상도에 문제가 있다면, 자신의 모니터의 EDID 를 체크정도만 해 보시기
바랍니다.
------------------------------------------------------------------------------------
자...
적어도 Geforce 에서 그래픽카드를 잡고, 또한 발생할 수 있는 문제들에 대처할 수 있는 모든 방법을 정리해 보았습니다.
제가
해킨을 하며 가장 애먹었던 부분도 바로 그래픽카드이기에 언제 한번 쭉 정리해보아야겠다는 생각을 하였는데 이제서야 정리하는군요.
기존에
엉성하게 그저 자료로 남긴다고 여기저기 뿌려두었던 그래픽 카드 관련 글들을 모두 삭제하고 이 자료로 대치해야겠습니다.
여담입니다만
그래픽을 DSDT 로 잡는 것 만큼이나 중요한것이, 사운드일 것입니다.
물론 가장 가깝게 느껴지는것은 그래픽이지만, 블루레이동영상을
재생해보면 DSDT 로 잡은 그래픽은 끊김이 없는데 울며겨자먹기로 VOODOOHDA 로 잡은 사운드는 10여초에 한번씩 머뭇거리며 0.5초정도씩
소리가 끊기더군요. DSDT 로 잡기 전의 그래픽카드와 비슷하게 사운드카드의 성능을 제대로 사용하지 못하는 현상이라
생각합니다.
단순히 동작하는 것과 성능을 발휘하는 것은 또 다른 이야기이지요.
사운드카드란에 "겨울" 님께서 올려주신
안되면 되게 하라~!
AppleHDA 삽질 Project - Chapter 1 시리즈가 있습니다. 그래픽카드를 잡는것과는 상대도
안되는 방대한 스케일의 강좌인데 정말 대단하다고 밖에 생각할수가 없군요.
읽는것 조차도 보통일이 아닌지라 아직 시도하지 못하고
있지만, 사운드역시 그래픽만큼이나 중요하므로, 제대로 잡아야 겠다는 생각이 듭니다. DSDT 로 사운드 쉽게 잡히시는 분들이 부러울 따릅입니다
^^
오래된 팁입니다. 하지만 처음이시라면 한번쯤은 읽어 보시는게 좋습니다.