시스템 사양 선택 | 2번 |
---|
안녕하세요, shl628 입니다. :)
예전에 RTC Fix 패치를 적용하여 BIOS 설정이 초기화되는 문제를 해결하는 내용에 대한 Tip 글을 작성한 적이 있습니다.
그런데, OpenCore 의 경우에는 ACPI 설정 및 패치한 내용을 모든 OS 에 적용하기도 하고 DSDT 보다는 SSDT 를 사용하는 것을 권장하고 있습니다.
그래서, OpenCore 에서 Mac OS 에만 패치가 적용되고 Windows 등의 다른 OS 에는 패치가 적용되지 않도록
_STA Method 를 사용하여 RTC Fix 를 적용하는 과정에 대하여 설명하고자 합니다.
☘️ RTC Fix 과정 안내
1. RTC 디바이스의 _CRS 항목에서 Length 값을 0x02 로 변경합니다.
2. IRQNoFlags 관련 항목의 구문을 삭제합니다.
저번 Tip 글에서는 OEM DSDT 에 존재하는 실제 RTC Device 의 내용을 직접 수정하여 RTC Fix 패치를 적용하였습니다.
하지만, 이번 Tip 글에서는 SSDT 에서 _STA Method 를 사용하여 Mac OS 에서만 사용할 Fake 의 RTC0 Device 를 추가한 다음에
Mac OS 에서는 OEM DSDT 에 존재하는 RTC Device 를 비활성화하고 RTC0 Device 를 활성화하여 사용하고
Windows 등의 다른 OS 에서는 OEM DSDT 에 존재하는 기존의 RTC Device 를 사용합니다.
먼저, Fake 로 추가할 RTC0 Device 의 ACPI 절대 경로는 \_SB.PCI0.LPCB.RTC0 이며
OEM DSDT 에 존재하는 RTC Device 와 상위 Scope 의 경로가 같으므로 SSDT 에서 Scope (\_SB.PCI0.LPCB) 를 생성합니다.
그리고, _STA Method 의 이름을 RTC._STA 로 추가하고 Mac OS 에서는 비활성화되도록 합니다.
단, OEM DSDT 의 RTC Device 에서 _STA Method 가 이미 존재하는 경우에는
특정 변수의 값에 따라서 활성화되거나 비활성화되도록 If 조건문이 있을 거예요.
이의 경우에는 Preset Variable Method 방식으로 패치하는 것도 좋은 방법입니다.
_STA 와 Preset Variable Method 방식에 대한 자세한 내용은 아래의 뽀로로님의 Tip 글을 참고해주세요.
또한, 혹시 OEM DSDT 에서 LPC 에 해당하는 장치의 이름이 LPCB 가 아닌 LPC 이거나 SBRG 인 경우에는
Scope 와 External Declaration 등의 경로도 모두 자신의 것으로 수정해야 합니다.
RTC0 Device 는 각자 자신의 OEM DSDT 에서 그대로
Scope (\_SB.PCI0.LPCB) 의 하위 항목으로 가져온 후에 RTC Fix 패치를 적용합니다.
그리고, 아래의 사진과 같이_STA Method 를 추가하여 Mac OS 에서만 활성화되어 사용될 수 있도록 합니다.
또한, MaciASL 에서 컴파일 버튼을 누르면 해당 Object 에 대한 External References 가 누락되어서
Error 가 발생하는 Object 에 대하여 External Declaration 도 추가합니다.
완성된 SSDT 의 ACPI 트리 구조와 전체적인 내용은 다음과 같습니다.
이제, 완성된 SSDT 를 .aml 로 컴파일하여 저장하고 OpenCore 의 ACPI 폴더에 넣고
Config.plist 의 ACPI - Add 에도 추가한 후에 저장하고 다시 부팅합니다.
그러면, SSDT 에서 _STA Method 를 활용한 RTC Fix 를 적용하여 BIOS Reset 문제를 해결할 수 있게 됩니다.
완성된 SSDT-RTC.aml 을 아래에 업로드합니다.
저는 SSDT 이름을 SSDT-RTC.aml 라고 하였습니다.
Mac OS X Lion 10.7.5 가 설치된 저의 삼성 구형 센스 Q36 노트북에 적용하고 IOReg 를 살펴보면
아래의 사진과 같이 기존의 RTC Device 는 비활성화되어 보이지 않고 RTC0 Device 가 활성화되어 보이는 것을 확인할 수 있습니다.
BIOS 설정이 초기화되는 문제도 해결되었습니다.
참고 자료
https://github.com/daliansky/OC-little/tree/master/保留部件/CMOS重置补丁
https://github.com/daliansky/OC-little/blob/master/保留部件/CMOS重置补丁/SSDT-RTC0-NoFlags.dsl
https://github.com/jsassu20/OpenCore-HotPatching-Guide/tree/master/18-CMOS%20reset%20patch
그런데, 위의 패치는 오직 RTC Fix 패치만 적용하기 위한 목적입니다.
추가로, HPET의 IRQ 와 다른 장치의 IRQ 충돌을 패치하려는 경우에도 위의 방식으로 비슷하게 패치할 수 있습니다.
그 내용이 저의 LG Ultra PC 15U480 - KA56K 노트북의 설치 후기글에서 뽀로로님의 댓글의 내용입니다.
사진 출처
https://x86.co.kr/mymac/5003460#comment_5076601
그러면, 다음 사진과 같이 SSDT 에 위의 패치 내용과 비슷하게 내용을 조금 더 추가하여 사용할 수도 있게 됩니다.
Mac OS 에서는 다음과 같은 항목을 사용합니다.
- HPET._CRS (SSDTTime 을 사용하여 패치한 _CRS 를 사용)
- RTC0 (Mac OS 에서만 활성화하여 사용할 Fake 장치)
- TIM0 (Mac OS 에서만 활성화하여 사용할 Fake 장치)
Windows 등의 다른 OS 에서는 다음과 같은 항목을 사용합니다.
- HPET.XCRS (Rename 패치만 적용된 OEM DSDT의 내용)
- RTC (기존의 OEM DSDT 내용)
- TIMR (기존의 OEM DSDT 내용)
참고 자료
https://github.com/daliansky/OC-little/tree/master/保留部件/声卡IRQ补丁
https://github.com/daliansky/OC-little/blob/master/保留部件/声卡IRQ补丁/SSDT-HPET_RTC_TIMR-fix.dsl
https://github.com/jsassu20/OpenCore-HotPatching-Guide/tree/master/23-HPET_RTC_TIMR%203-in-1%20patch
단, 위의 뽀로로님의 댓글의 내용대로 HPET 가 HPE0 등으로 이름이 다르면 부팅하고 나서 얼마 후에 커널 패닉으로 재부팅되는 문제가 발생하므로
HPET의 IRQ 와 다른 장치의 IRQ 충돌을 패치하는 SSDT 는 아래의 뽀로로님의 Github 를 참고해주세요.
https://github.com/whatnameisit/hackinTOSHIBA-Satellite-C665/blob/master/OC/ACPI/SSDT-HPET.aml
또한, ACPI 와 DSDT & SSDT 패치에 관심이 많은 분들은 아래의 Github 사이트를 참고해보세요.
여러 가지의 ACPI Hot Patch 에 대한 많은 정보와 샘플 자료를 얻으실 수 있습니다. :)
단, 중국어로 되어 있다는 것이 단점입니다.
https://github.com/daliansky/OC-little
영어 번역본도 있긴 하지만, 업데이트가 잘 이루어지지 않아서 현재 최신 OC-Little 의 Github 와 내용이 약간 다를 수 있습니다.
https://github.com/jsassu20/OpenCore-HotPatching-Guide
OpenCore 에서 사용하기 적합하도록 SSDT 에서 _STA 를 활용한 RTC Fix 를 적용하여
BIOS 설정이 초기화되는 문제를 해결하는 내용에 대한 Tip 글은 여기까지 작성하고 마치겠습니다. :)
Thanks to OC-Little Github, 뽀로로님 ✨
shl628님의 새글 알림을 받으실려면 구독
*적용중인 도장
봐도 이해 못하지만.. 열심히 공부하겠습니다.
근데 dsdt와 같은 것을 공부하려면 어떤책을 봐야 할까요? 컴알못이 이해하기엔 너무 어려워서
컴 언어 기초좀 공부해보고 싶은데... ^^
저는 처음에 ACPI 와 DSDT & SSDT 에 대한 내용은 KsJ 님의 글을 보면서 입문했습니다. :)
또한, 궁금하거나 조금 더 자세하게 알고 싶은 부분은 ACPI Specification 기술 문서에서 찾아보기도 하였습니다.
DSDT 에서 많이 보이는 키워드가 ACPI Specification 기술 문서에서 자세하게 설명되어 있습니다.
_DSM, _HID, _INI, _OSI, _PRW, _PTS, _STA, _UID, _WAK 등의 여러 가지 키워드와 ACPI Source Language 문법에 대한 설명도 있습니다.
https://uefi.org/sites/default/files/resources/ACPI_Spec_6_3_A_Oct_6_2020.pdf
여러사람들께 도움되게 정성들여 작성한 내용이네요.
제가 따라하기는 내공 부족으로 힘들것 같지만 오려주신 피일로 한번 도전해 보겠습니다.
수고 많으셨습니다. 감사합니다.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +2 | 좌절금지 | 24.09.1917:09 | 55 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +13 | 좌절금지 | 24.09.1723:58 | 167 |
[중급편] 노트북 해킨 +8 | Stultus | 24.07.1219:19 | 746 |
[초급편] 문제 스스로 해결하기 +17 | Stultus | 24.03.2920:07 | 3526 |
[입문편] 첫 해킨 길라잡이 +32 | Stultus | 24.01.1218:54 | 4291 |
[필독 - 안정화] 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 | 190 |
OpenCore Legacy Patcher 2.0.1 +2 | 김경석 | 24.09.1708:13 | 214 |
2020 그램 sonoma efi 15Z90N +1 | 맥가즈아 | 24.09.1717:13 | 83 |
좌절금지 | 24.09.1919:17 | 111 | |
좌절금지 | 24.09.1917:09 | 55 | |
좌절금지 | 24.09.1723:58 | 167 | |
좌절금지 | 24.09.1722:40 | 190 | |
김경석 | 24.09.1708:13 | 214 | |
Tamy | 24.09.1504:35 | 462 | |
Stultus | 24.09.1319:18 | 430 | |
치토 | 24.09.1019:44 | 466 | |
해킨도전자 | 24.09.0112:54 | 293 | |
머핀X | 24.08.3115:34 | 369 | |
화정큐삼 | 24.08.2601:42 | 238 | |
하나브 | 24.08.2422:59 | 205 | |
화정큐삼 | 24.08.2316:25 | 247 | |
CanBe | 24.08.1810:56 | 327 | |
화정큐삼 | 24.08.1800:04 | 205 | |
화정큐삼 | 24.08.1722:03 | 189 | |
Stultus | 24.08.1419:58 | 345 | |
오디세이 | 24.08.1311:26 | 270 | |
좌절금지 | 24.08.1115:46 | 194 | |
Stultus | 24.08.1022:46 | 183 | |
RogerT | 24.08.0609:17 | 115 | |
jbhlyk | 24.08.0523:34 | 81 | |
수인과윤슈 | 24.08.0521:10 | 185 | |
Stultus | 24.08.0221:07 | 421 | |
Tamy | 24.07.3019:12 | 328 | |
Stultus | 24.07.2112:43 | 231 | |
Stultus | 24.07.1219:19 | 746 | |
Stultus | 24.07.1122:47 | 215 | |
Stultus | 24.07.1020:44 | 137 | |
Stultus | 24.07.0921:44 | 137 | |
Stultus | 24.07.0820:57 | 223 | |
Stultus | 24.07.0721:25 | 264 | |
bsiugr | 24.07.0604:41 | 287 | |
애플브리크 | 24.07.0509:56 | 491 | |
치토 | 24.06.2723:24 | 397 | |
Stultus | 24.06.1120:40 | 725 | |
Stultus | 24.04.3022:28 | 1097 | |
Stultus | 24.04.2718:46 | 1006 | |
Stultus | 24.04.1312:15 | 3048 | |
Stultus | 24.04.0712:49 | 2900 | |
Stultus | 24.04.0619:59 | 1530 | |
Stultus | 24.04.0613:43 | 1468 | |
Stultus | 24.04.0521:57 | 2555 | |
Stultus | 24.03.2920:07 | 3526 | |
Stultus | 24.03.2823:08 | 1410 | |
Stultus | 24.03.2322:35 | 1120 | |
Stultus | 24.03.2123:12 | 769 | |
Stultus | 24.03.0818:26 | 645 | |
Stultus | 24.02.1621:54 | 1088 | |
Stultus | 24.01.2321:47 | 941 | |
Stultus | 24.01.1218:54 | 4291 | |
Stultus | 24.01.1121:20 | 844 | |
Stultus | 24.01.0921:31 | 902 | |
Stultus | 24.01.0822:35 | 1330 | |
Stultus | 23.11.0920:54 | 4532 | |
Stultus | 23.10.2723:10 | 6430 | |
Stultus | 23.10.2722:40 | 6432 | |
Stultus | 23.10.2100:08 | 6965 | |
Stultus | 23.10.1700:57 | 3490 | |
Stultus | 23.09.2707:11 | 4703 | |
Stultus | 23.09.1022:47 | 8858 | |
Stultus | 23.08.2521:36 | 9224 | |
Stultus | 23.08.2313:42 | 9504 | |
Stultus | 23.08.2216:27 | 3862 | |
Stultus | 23.08.2115:14 | 9666 | |
Stultus | 23.08.2114:43 | 1만 | |
Stultus | 23.07.1318:42 | 1.6만 | |
Stultus | 23.07.0619:38 | 1.2만 | |
Stultus | 23.05.2512:02 | 1.7만 | |
Stultus | 23.04.0517:11 | 2.3만 | |
Stultus | 23.03.2800:39 | 5733 | |
Stultus | 23.03.2313:35 | 1.4만 | |
Stultus | 23.03.1211:40 | 3.2만 | |
Stultus | 23.03.0621:32 | 4.1만 | |
shl628 | 23.01.0913:39 | 5만 | |
곰비 | 21.02.1223:08 | 1311 | |
JGP | 21.02.1115:54 | 1985 | |
닉네임이당 | 21.02.1001:47 | 1344 | |
HKDavid | 21.02.0822:41 | 2076 | |
자유로이 | 21.02.0819:08 | 1264 |
좋은 정보 감사드립니다. 즐거운 하루 되세요.