. _., 잉여로운 백수인 저에게 있어 커맥에 관한 글을 쓸때는
즐거움으로 인해 멈출 수 없는 욕구를 들게 만듭니다.
물론 삽질말이죠.
(한번 맛본 분들은 스스로 삽질의 세계로 뛰어드시기도 하더군요. 저도 그런 부류이구요..)
시작하기 전에, 여러분들께 감사의 말씀을 먼저 드리고 싶어요.
약간 짜깁기 형식으로 되어있기도 하고, 이곳 저곳 정보들이 섞여있는
다소 부족한 글임에도 덧글을 달아주시고, 추천해주시고.
감사하다고 해주셔서, 도움이 된다고 해주셔서
글을 작성할 때마다 의욕이 마구마구 샘솟네요.
읽어주시는 분들께, 정말 감사하다고
말씀드리고 싶어요. ^^
감사해요, 여러분@@
오늘은 데이타테이블의 구조에 대해서 살펴보도록 하겠습니다.
구조라고 하면 크게 다른 것은 없어요.
거의 첫 글에서 보셨던 IORegistryExplorer의 구조를 그대로
폴더처럼 정리해둔 것과 흡사하거든요.
그래도 조금은, 알아보아야 할 부분들이 있어
살펴보도록 하겠습니다.
그리고 살펴보면서 dsdt가 원래 경로를 가질 수 있도록!
깔끔 정리를 하도록 하겠습니다 -_-++ 후훗
우선 아래 스샷을 살펴보겠습니다.
경로가 너무 많아서 -_-.. 한 화면에 다 안찍혀요. (맙소사)
일단 먼저 아랫부분은 있다가 보고
윗부분부터 살펴보도록 하죠.
최상위 경로는 \ 로 시작하게됩니다.
그런데 조금 재미난게 있다면 \와 _SB는 대체로 따로 분류해둔다는 것이죠.
그래서 정리할 때에 같이 경로를 합치지는 않을거에요.
그리고 _sb 디렉토리는 밑으로 . (콤마)로 구분을 하게 되며,
그 이하의 경로는 계속~~~ 있답니다.
대충 정리하자면 이런거에요.
\ --> _SB & _PR & _~~~ (기타폴더) --> .PCI0, TPM ...... -> .LPCB, .RP01, .HPET...등등
이런식으로 들어가게됩니다.
이렇게 수많은 폴더들과 경로들을 살펴보고 있자니, 참 답답하죠.
그래도 저희가 이 많은 경로들 중에서 건드리게 될 것들은
딱 2군데 밖에 없어요.
바로, _PR, _SB.PCI0 이 두곳이죠.
_pr은 ssdt의 정보가 인젝션, 즉
포함되는 곳이에요.
아마, 스피드 스텝 관련해서
SSDT Injection라는 단어를 한두번쯤은 들어보셨을거에요.
바로 이 인젝션을 하는 곳이 DSDT에서 _PR이라는 곳이라는거죠.
좀 횡설수설하는 감이 없잖아 있는데,
뭐라고 말씀드리는게 좋을지... 음,
한문장으로 정의하자면 CPU에 관한 SSDT정보를 데이타 테이블에
굳이 넣는다면 _PR이라는 경로에 넣을 수 있다!
정도로 말할 수 있을 것 같아요.
_SB.PCI0 경로에는 모든 칩셋 드라이버들에 대한
정보와 기기들에 관한 정보를 넣을 수 있어요.
이런 정보가 들어가 있기도 하구요.
그래서 인식이 되지 않는 장치에 관한 정보를
이곳에 추가시켜서 마음대로 다뤄줄 수 있답니다.
DSDT를 정리하는건 생각보다 매우 쉬워요!
그냥 같은 경로선상에서 폴더가 나뉘어져 있는 것을
올바른 경로에 맞춰서 한곳에 몰아넣어 주는것과 같으니까요.
한번 정리해볼까요?
우선 폴더들 중에서 _SB.PCI0.XXXX로 되어있는 폴더들은
_SB.PCI폴더 안에 맞춰서 넣어주면 돼요.
위 사진을 보면, _SB.PCI0.LPCB, SB.PCI0.RP0X 폴더들이 많은데요
이 폴더들은 아래 사진에 해당되는 경로에 넣어주면 된답니다.
해당 폴더랑 똑같은 경로에 위치해있는 정보들이 보이시나요?
바로 저곳에다가 모두 넣어주게 될거에요.
아래는 텍스트로.. 대체할게요.
Scope (_SB.PCI0.LPCB)
{
OperationRegion (CPSB, SystemMemory, 0xDA25CE18, 0x10)
Field (CPSB, AnyAcc, NoLock, Preserve)
{
RTCX, 1,
SBB0, 7,
SBB1, 8,
SBB2, 8,
SBB3, 8,
SBB4, 8,
SBB5, 8,
SBB6, 8,
SBB7, 8,
SBB8, 8,
SBB9, 8,
SBBA, 8,
SBBB, 8,
...
...
... . .... .
..
.
.
..
등등
}
이런식으로 _SB.PCI0.LPCB폴더 부분을 클릭하면
정보가 나오게되는데, 해당 부분을 옮겨줄 때에는
이부분을 통째로 옮기는 것이 아니라,
Scope (_SB.PCI0.LPCB)
{ 와
맨 마지막 끝단의
} 를 제외한
안의 내용만을 복사해서
위 스샷에 맞는 경로로 복사 붙여넣기 하는 형태로 옮겨지게 됍니당.
위의 사진을 보시면 있었던 엘피씨비 폴더가 사라지고
원래 경로에 인젝션된걸 알 수 있어요. @_@
이런식으로 원래자리만 잘 찾아가게 되면,
오류도 안나고 커널패닉이 날 염려가 없습니다!
경로를 잘못찾으면 커널패닉이 날 가능성이 높아지기 때문에,
항상 백업과 만발의 사태에 대한 준비를 꼬옥 해주셔야해요.
아무리 잘 옮겨도 가끔 드물게 기종마다 나는 경우도 있더라구요;
이런 작업을 모두 마무리 해주시면,
아래의 스샷처럼 깔끔하게 정리가 된 데이타 테이블을 만나보실 수 있게 됩니다 -_-++ 후후
매ㅐㅐㅐ우 깔끔해진 것을 볼 수 있겠습니다.
(해당 파일은.. 제가 자료실 게시판에 올려둔 GA-H87M0-D3H.AML 파일입니다.)
이렇게 경로에 대해서, 대략적으로 살펴보았는데요
마샤에셀(저는 이렇게 부릅니다..MACIASL이지만 말이죠;)
에는 다른 기능들이 존재해요.
바로 dsdt 외의 SSDT Series를 추출할 수 있는 기능인데요,
저렇게 이상한 테이블들을 -_-.. 다 뽑아서 볼 수 있겠습니다.
그런데 이부분들은 인젝션 하는 방법이 따로 있지는 않아요.
현재 거의 많이 사용하는건 CPU관련한 부분인데,
SSDT, SSDT-1 이 2가지 부분에 대한 부분들만 DSDT -> _PR 안에 들어가게 됩니다.
주의사항!이 있어요.
해당 마샤에셀로 뽑은 세컨더리 시스템 디스크립션을 가지고 절대로
데이타 테이블에 인젝션 하시면 안됩니다.
절.대.로. 말이죠
거의 50%이상은 커널패닉이나요.
해당 정보를 가지고 자신의 CPU에 맞게 가공을 해서, DSDT에 넣어주어야 하는데
이게 너무 까다롭고, 씨피유가 지원하는 모든 정보를 넣기에는
난이도가 너무 높아요.
그래서 외국의 어느 개발자가 감사하게도
ssdtPRGen.sh 이라는걸 만들어주었다죠.
이걸 사용해서 만들어진 SSDT정보를 그대로 _PR에 넣어야
커널패닉이 안나고 문제가 없어요.
해당 사용법은 팁공유 게시판에 올려진 글들이 있으니, 참고하셔서
추출해보시는 것도 좋을 것 같아요 @_@
좋은 강좌 감사합니다.
솔직히 dsdt 수정해야지? 하고 에디터 띄워 놓고도
뭘해야지 하면서 다시 닫아버린 경우가 다반사였습니다.
어쩔 수 없지라고 포기했던 경우도 많았고요.
소중한 강좌 덕분에 삽을 들 용기가 생겼네요.^^
DSDT와 같은 고급 강좌를 올려주셔서 감사합니다.
언제나 수정방법을 찾아 구글링하다 포기했었는데, 덕분에
다시 한번 삽질을 해볼까 고민하고 있습니다. ^^;
3가지 정도 질문이 있습니다.
1. 폴더 정리는 반드시 해야하는 작업인가요?
2. 폴더 정리시 Scope 문구는 남겨둔채 내용만을 복사하여 붙여 넣는다고 하셨는데,
Scope 문구를 삭제하지 않으면 폴더가 남아있습니다.
Scope 문구도 삭제해야하는지요?
3. 폴더 정리시 _SB.PC0.LPCB의 내용을 LPCB안에 복사해서 넣는다고 하셨는데
LPCB의 기존 내용은 전부 삭제해야하는지요?
감사합니다.
좋은 질문 감사드립니다, 제로님!
이에대해 말씀드리자면,
1. 폴더정리는 반드시 할 필요는 없습니다.
다만, 정리를 하면 가독성이라고 해야할까요? 작업의 수월성을 위한 정도라고
생각해주시면 되겠습니다.
2. 내용을 복사하신 후에는 내용이 중복되므로 새로 붙여넣은 곳이 아닌
복사했던 곳의 Scope는 제거해주시면 되겠습니다. 내용까지 같이요 :)
3. 아니요 LPCB에 넣어주실 때에 위치만 옮겨주는 것이 되므로
기존 내용을 전부삭제하시면 심각한 오류가 발생합니다.
삭제하는 것은 복사하셨던 위치의 _SB.PCI0.LPCB만 제거해주시면 되겠습니다.
감사합니다~
좋은 강좌 감사드립니다.
DSDT를 정리도중 막힌 부분이 존재하는데요.
Scope들을 합치는 도중 Scope{}가 If문에 종속되어 있는 경우가 있습니다.
예를 들면
if(blabla){
scope(_SB.PCI0){
}
}
scope(_SB.PCI0){
}
위와 같이 2개의 scope가 존재하는 경우는 어떻게 합쳐야 할지 난해해서 질문드립니다..
아래와 같이 바꾸면 될까요?
scope(_SB.PCI0){
if(blabla){
}
}
답변 감사드립니다.
즉, If문에 종속된 Scope는
특정 조건에서 장치를 생성?로드?하는 경우(Ex..외부 USB 장치)가 되는것이라 생각하면 될까요?
따라서 PCI0의 경우 일반적으로 M/B에 기본 탑재된 장치드를 로드하는 것이기 때문에 If문이 필요 없을것이며, 보다 정확한 확인을 위해 IOreg를 이용해 PCI0가 기본로드 되는지 확인하면 되는거구요..
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 937 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 575 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1402 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 575 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 909 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4002 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5086 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 106 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 102 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 119 | 24.10.2321:29 | 해킨도전자 |
119 | 24.10.2321:29 | 해킨도전자 | |
106 | 24.10.2319:04 | 사노라맨 | |
784 | 24.10.1412:27 | shl628 | |
664 | 24.10.1316:00 | 수박 | |
937 | 24.10.1121:10 | 좌절금지 | |
575 | 24.10.0900:22 | 줌바이퍼 | |
1402 | 24.07.1219:19 | Stultus | |
1210 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
463 | 24.09.2808:22 | Tamy | |
894 | 24.09.2321:32 | Stultus | |
601 | 24.09.1722:40 | 좌절금지 | |
562 | 24.09.1708:13 | 김경석 | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
462 | 24.09.0112:54 | 해킨도전자 | |
546 | 24.08.3115:34 | 머핀X | |
306 | 24.08.2601:42 | 화정큐삼 | |
305 | 24.08.2422:59 | 하나브 | |
318 | 24.08.2316:25 | 화정큐삼 | |
415 | 24.08.1810:56 | CanBe | |
363 | 24.08.1800:04 | 화정큐삼 | |
300 | 24.08.1722:03 | 화정큐삼 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
233 | 24.08.1022:46 | Stultus | |
131 | 24.08.0609:17 | RogerT | |
88 | 24.08.0523:34 | jbhlyk | |
267 | 24.08.0521:10 | 수인과윤슈 | |
622 | 24.08.0221:07 | Stultus | |
391 | 24.07.3019:12 | Tamy | |
308 | 24.07.2112:43 | Stultus | |
284 | 24.07.1122:47 | Stultus | |
215 | 24.07.1020:44 | Stultus | |
257 | 24.07.0921:44 | Stultus | |
384 | 24.07.0820:57 | Stultus | |
397 | 24.07.0721:25 | Stultus | |
359 | 24.07.0604:41 | bsiugr | |
650 | 24.07.0509:56 | 애플브리크 | |
472 | 24.06.2723:24 | 치토 | |
852 | 24.06.1120:40 | Stultus | |
1447 | 24.04.3022:28 | Stultus | |
1027 | 24.04.2718:46 | Stultus | |
3084 | 24.04.1312:15 | Stultus | |
3049 | 24.04.0712:49 | Stultus | |
1537 | 24.04.0619:59 | Stultus | |
1517 | 24.04.0613:43 | Stultus | |
2667 | 24.04.0521:57 | Stultus |
소중한 강좌 감사합니다.