하드웨어 세대별 기본 Config 설정 가이드
- Mactopia
- 1594
- 3
Mactopia님의 기기정보
커피레이크 를 우선 소개하며, 구 세대는 이미 많이 알려져 있으므로 필요시 개별 참고 바랍니다
ACPI
Clover의 ACPI 기본 설정은 너무하고 지나친 곳이 있습니다. 따라서 문제를 일으킬 수 있습니다. 그래서 가능한 한 간단하게 다시 작성합니다.
<key> ACPI </ key> <dict> <key> DSDT </ key> <dict> <key> Fixes </ key> <dict> <key> AddMCHC </ key> <true /> <key> FixHPET </ key> <true /> <key> FixIPIC </ key> <true /> <key> FixRTC </ key> <true /> <key> FixShutdown </ key> <true /> <key> FixTMR </ key> <true /> </ dict> <key> Patches </ key> <array> <dict> <key> Comment </ key> <string> change XHCI to XHC </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> WEhDSQ == </ data> <key> Replace </ key> <data> WEhDXw == </ data> </ dict> <dict> <key> Comment </ key> <string> change XHC1 to XHC </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> WEhDMQ == </ data> <key> Replace </ key> <data> WEhDXw == </ data> </ dict> <dict> <key> Comment </ key> <string> change SAT0 to SATA </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> U0FUMA == </ data> <key> Replace </ key> <data> U0FUQQ == </ data> </ dict> </ array> </ dict> <key> DropTables </ key> <array> <dict> <key> Signature </ key> <string> DMAR </ string> </ dict> <dict> <key> Signature </ key> <string> MATS </ string> </ dict> </ array> <key> FixHeaders </ key> <true /> <key> SSDT </ key> <dict> <key> Generate </ key> <dict> <key> PluginType </ key> <true /> </ dict> </ dict> </ dict>
Fixes :
Fixes에서 다음을 지정했습니다.
- FixShutdown - 일부 마더 보드에서 종료하려고해도 다시 시작되는 문제를 해결합니다. 이것을 true로하면 이번에는 반대로 종료 문제를 일으킬 수 있습니다. 이 경우 dsable합니다.
- 이 밖에 IRQ 충돌을 해소하는 등의 지정이되어 있습니다. 이들은 모든 하드웨어에 필요하지 않을지도 모릅니다 만 적용해도 큰 해가되지 않습니다.
Patches :
- XHCI을 XHC 변경 - 이는 built-in USB injectors과의 충돌을 피합니다
- XHC1을 XHC 변경 - 이는 built-in USB injectors과의 충돌을 피합니다
- SAT0를 SATA로 변경 - 잠재적 인 SATA 호환성을 개선합니다
Drop Tables :
- DMAR - 이것은 Vt-d 문제를 방지합니다. Vt-d는 가상 머신을위한 PCI 통과에서 Hackintosh는 거의 전혀 작동하지 않습니다.
- MATS - High Sierra 이상이 테이블이로드 될 때 인쇄 할 수없는 문자에 의해 커널 패닉 할 수 있습니다.
FixHeaders와 SSDT :
여기에서는 다음을 지정합니다.
- FixHeaders - MATS 테이블을 드롭 이외에 만약을 위해 설정합니다. 이것을 true로하면 Clover 인쇄 불가능한 문자에 의한 커널 패닉을 방지합니다.
- PluginType - X86PlatformPlugin를로드하는 데 몇 가지 DSDT 데이터를 인 젝트합니다. 이렇게하면 기본 CPU 전력 제어를 실현하는 데 도움이됩니다. 이 설정은 Hawell 이후의 CPU에서만 작동합니다.
Boot
여기에서는별로 중요한 항목은 없습니다.
<key> Boot </ key> <dict> <key> Arguments </ key> <string> keepsyms = 1 dart = 0 debug = 0x100 shikigva = 40 -v </ string> <key> DefaultVolume </ key> <string> LastBootedVolume </ string> <key> Timeout </ key> <integer> 5 </ integer> </ dict>
Arguments :
여러 부팅 옵션을 추가했습니다.
- -v - verbose 모드로 전환되고 Apple logo 및 진행률 표시 줄의 뒷면에 표시되는 메시지가 보이게됩니다.Hackintosh하는 사람에게 유용한 정보입니다.
- dart = 0 -Vt-d 문제에 대한 또 하나의 대책입니다. 없어도 좋다.
- debug = 0x100 - 커널 패닉시 재부팅을 방지합니다. 운이 좋다면 커널 패닉에 이른 원인을 발견 할 수 있을지도 모릅니다.
- keepsyms = 1 - 이것은 debug = 0x100과 함께 설정하고 macOS가 커널 패닉 화면에 기호를 표시하도록 설정합니다. 이제 커널 패닉의 원인 추구에 도움이 될지도 모릅니다.
- shikigva = 40 - 이것은 iGPU 전용 설정입니다.타 옵션은 아래 링크 참조
DefaultBootVolume와 Timeout :
- DefaultBootVolume - NVRAM이 다음 부팅 드라이브를 기억하는 데 사용합니다.
- Timeout - DefaultBootVolume에서 시작할 때까지의 대기 시간 (초)입니다. 음수하면 제한하지 않습니다. 0으로하면 GUI 화면을 건너 뜁니다.
Devices
WhateverGreen에 대한 설정과 음성의 기본 설정을합니다.
<key> Devices </ key> <dict> <key> Audio </ key> <dict> <key> Inject </ key> <integer> 1 </ integer> <key> ResetHDA </ key> <true /> </ dict> <key> Properties </ key> <dict> <key> PciRoot (0x0) / Pci (0x2,0x0) </ key> <dict> <key> AAPL, ig-platform-id </ key> <data> BwCbPg == </ data> <key> framebuffer-patch-enable </ key> <data> AQAAAA == </ data> <key> framebuffer-stolenmem </ key> <data> AAAwAQ == </ data> </ dict> </ dict> <key> USB </ key> <dict> <key> FixOwnership </ key> <true /> </ dict> </ dict>
Fake ID
이 섹션은 비어 좋습니다. 옛날은 HD4400과 같은 거의 지원되는 iGPU를 지원 된 iGPU에 보이게하기 위해이 기능을 사용했습니다.
하지만 지금은 그런 목적에 더 깨끗한 Properties 섹션을 사용합니다.
이 섹션에서는 FixOwnership을 지정합니다. 이제 -v 옵션으로 표시되는 Enabling Legacy Matching 메시지의 중간 쯤에서 멈춰 버리는 문제를 해결합니다.
이 문제는 HCI Hand Off를 BIOS에서 설정도 해결합니다.
Properties :
이 섹션의 설정은 Headkaze 씨의 Intel Framebuffer Patching Guide 를 참고했습니다. 그리고 ig-platform-id라는 속성을 하나만 작성했습니다.
여기에서 사용 두 ig-platform-id는 다음과 같습니다.
- 0x3E9B0007 - 이것은 iGPU이 디스플레이를 사용하는 경우에 사용됩니다.
- 16 진수를 바꾸면 07009B3E됩니다.
- 교체 버전을 Base 64로 나타내면 BwCbPg ==됩니다.
- 0x3E920003 - 이것은 iGPU가 계산 작업에만 사용되는 경우 (표시는 사용되지 않는 경우)에 사용됩니다.
- 16 진수를 바꾸면 0300923E됩니다.
- 교체 버전을 Base 64로 나타내면 AwCSPg ==됩니다.
여기에서 사용 된 값은 Coffee Lake (8 세대)와 Coffee Lake Refresh (9 세대) 사용되는 인텔 UHD 그래픽 630의 값입니다. macOS 10.12에서 10.13.5는 인텔 UHD 그래픽 630 탑재 CPU의 발매 전 이었기 때문에이 값은 지원되지 않습니다. 그래서 macOS 10.12에서 10.13.5는 Kaby Lake 가이드와 같은 값 (인텔 HD 그래픽 630의 값)에해야합니다.
이 밖에 2 개의 속성을 추가했습니다. framebuffer-patch-enable 및 framebuffer-stolenmem입니다. 전 WhateverGreen.kext 통해하고 패치를 사용하고, 후자는 최소 메모리를 19MB 로 정합니다.
i3-8100의 UHD 630에 대응
i3-8100에도 UHD 630이 탑재되어 있습니다 만, 8700K 등 실제 Mac에 탑재되고있는 CPU와는 device-id가 다릅니다. 구체적으로는 3e918086과 3e928086의 차이입니다. 그래서 i3-8100의 UHD 630을 사용하기 위해서는 ID의 교환이 필요합니다.
이 device-id 교환은 위 ig-platform-id 16 진수 교체와 유사한 단계를 수행합니다. 하지만 이번에는 처음 4 자리 만의 차이입니다. 장치 ID가 0xAABB0000 인 것을 0xBBAA0000처럼 바꾸면 좋습니다. 후반 4 자리는 변경할 필요가 없습니다.
(역주 : 마지막 4 자리의 8086 부분은 제조사 ID로 인텔을 보여줍니다. 역사적으로 유명한 16bit CPU 8086을 나타냅니다. 그 전에 네 자리가 장치 ID입니다 .1 번 차이 다른 장치임을 보여줍니다.)
device-id를 위장하기위한 값은 다음과 같습니다. 이 값을 device-id 항목에 적어 놓으면, 8100 UHD 630가 문제없이 사용할 수 있습니다.
- 0x3e920000 - 이것은 8700K 탑재 UHD 630의 장치 ID입니다.
- 923e0000 처음 두 자리를 바꿉니다.
- kj4AAA == 그 base 64입니다.
이상을 바탕으로 한 Properties 설정입니다. 앞서 설명한 바와 같이, ig-platform-id는 별도의 용법에 맞 춥니 다.
<key> Properties </ key> <dict> <key> PciRoot (0x0) / Pci (0x2,0x0) </ key> <dict> <key> device-id </ key> <data> kj4AAA == </ data> <key> AAPL, ig-platform-id </ key> <data> BwCbPg == </ data> <key> framebuffer-patch-enable </ key> <data> AQAAAA == </ data> <key> framebuffer-stolenmem </ key> <data> AAAwAQ == </ data> </ dict> </ dict>
핑크 문제
UHD 630 iGPU를 HDMI로 사용하면 화면이 핑크 같이되는 문제가 발생할 수 있습니다.
우선 이 문제를 Reddit 게시물 로보고, 디스플레이를 강제로 RGB 모드로 변경하여 해결할 수 있다고 알았습니다.YCbCr 모드라고 결함이 나올 것 같습니다 . 따라서 스크립트 를 만들었습니다. 잘 동작하지만 진짜 해결책이라고는 생각하지 않았습니다. .
IOReg의 Connector Types
그래서 IORegistryExplorer을 열고 검색 창에 IGPU (이것은 ACPI 속의 GFX0되어있을 수 있습니다 만, Lilu + WhateverGreen가 제대로 변경 해주고있는 것입니다.)를 입력하면 다음 화면이 있습니다.
IOReg에 IGPU를 찾으면 검색 창을 지 웁니다. 그러면 IGPU 섹션의 모든 정보가 보이게됩니다.
이 스크린 샷에서 볼 수 있듯이, 여러 가지 AppleIntelFramebuffer connections가 표시되어 있습니다. 디스플레이에 연결된 특정 프레임 버퍼를 찾아 보겠습니다.
저의 경우 이것은 AppleIntelFramebuffer @ 1이었습니다. 이것을 왼쪽 선택하면 connector-type property 를 알 수 있습니다.
저의 경우 이것은 원래 <00 04 00 00>에 설정 되어 있었습니다. 이 connector type은 다음 값을 가질 수 있습니다.
- <00 04 00 00> - 이것은 DisplayPort
- <00 08 00 00> - 이것은 HDMI
- <04 00 00 00> - 이것은 Digital DVI
- <02 00 00 00> - 이것은 LVDS (모바일 PC 용)
- <01 00 00 00> - 이것은 단순한 더미 포트
이제 제 경우 HDMI 포트가 DisplayPort로 인식되고 있었던 것이 판명되었습니다.
그래서 WhateverGreen 패치 기능을 사용하여 connector-type을 변경합니다.
잘못된 포트는 AppleIntelFramebuffer @ 1이었습니다. 이 포트 1입니다. 그래서 Properties에서 port patch를 사용합니다. 그리고 connector type을 HDMI로 변경 합니다. 이를 위해 다음의 Properties 항목을 사용합니다.
- framebuffer-conX-enable = 01000000
- framebuffer-conX-type = 00080000
이를 base 64로 변환하여 항목을 추가 한 결과는 다음입니다.
<key> Properties </ key> <dict> <key> PciRoot (0x0) / Pci (0x2,0x0) </ key> <dict> <key> AAPL, ig-platform-id </ key> <data> BwCbPg == </ data> <key> device-id </ key> <data> kj4AAA == </ data> <key> framebuffer-con1-enable </ key> <data> AQAAAA == </ data> <key> framebuffer-con1-type </ key> <data> AAgAAA == </ data> <key> framebuffer-patch-enable </ key> <data> AQAAAA == </ data> <key> framebuffer-stolenmem </ key> <data> AAAwAQ == </ data> </ dict> </ dict>
이 설정은 내 환경에서 HDMO 오디오도 사용되었습니다.
Disable Drivers
Gui
<key> GUI </ key> <dict> <key> Scan </ key> <dict> <key> Entries </ key> <true /> <key> Tool </ key> <true /> </ dict> </ dict>
Scan :
Scan settings을 변경합니다. 이 설정에서 부팅 할 수없는 항목을 제외합니다.
Hide Volumes :
시작시 표시하지 않으려는 볼륨을 써 둡니다. 이번에는 아무것도 지정하지 않았습니다. 다음이 나타나 곤란 같다면 추가해야합니다.
- Preboot
- VM
이름 이외에 UUID도 지원 합니다. 알기 위해서는 다음과 같이합니다. diskXsY의 X와 Y는 실제 볼륨 번호 입니다.
diskutil info diskXsY | grep -i "Partition UUID"| rev | cut -d ''-f 1 | rev
Graphics
옛날에는 iGPU를 여기에서 설정하고 있었지만, Device 섹션의 Properties에서 이미 설정 했으므로 여기에서는 아무것도 할 필요가 없습니다.
Clover는 인텔의 iGPU를 감지하면 config.plist에 Graphics 섹션이 없어도 자동으로 Intel Injection을 사용합니다. 만약 인텔 iGPU를 disable 할려면 아래와 같이 작성하여 해제 할 수 있습니다.
<key> Graphics </ key> <dict> <key> Inject </ key> <false /> </ dict>
Kernel And Kext Patches
<key> KernelAndKextPatches </ key> <dict> <key> KernelPm </ key> <true /> <key> KextsToPatch </ key> <array> <dict> <key> Comment </ key> <string> Port limit increase </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> g710 //// EA == </ data> <key> InfoPlistPatch </ key> <false /> <key> MatchOS </ key> <string> 10.12.x </ string> <key> Name </ key> <string> com.apple.driver.usb.AppleUSBXHCI </ string> <key> Replace </ key> <data> g710 //// Gw == </ data> </ dict> <dict> <key> Comment </ key> <string> Port limit increase (RehabMan) </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> g32IDw + DpwQAAA == </ data> <key> InfoPlistPatch </ key> <false /> <key> MatchOS </ key> <string> 10.13.x </ string> <key> Name </ key> <string> com.apple.driver.usb.AppleUSBXHCI </ string> <key> Replace </ key> <data> g32ID5CQkJCQkA == </ data> </ dict> <dict> <key> Comment </ key> <string> Port limit increase (PMHeart) </ string> <key> Disabled </ key> <true /> <key> Find </ key> <data> g / sPD4MDBQAA </ data> <key> InfoPlistPatch </ key> <false /> <key> MatchOS </ key> <string> 10.14.0 </ string> <key> Name </ key> <string> com.apple.driver.usb.AppleUSBXHCI </ string> <key> Replace </ key> <data> g / sPkJCQkJCQ </ data> </ dict> <dict> <key> Comment </ key> <string> Port limit increase (Ricky) </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> g / sPD4OPBAAA </ data> <key> InfoPlistPatch </ key> <false /> <key> MatchOS </ key> <string> 10.14.x </ string> <key> Name </ key> <string> com.apple.driver.usb.AppleUSBXHCI </ string> <key> Replace </ key> <data> g / sPkJCQkJCQ </ data> </ dict> <dict> <key> Comment </ key> <string> External Icons Patch </ string> <key> Disabled </ key> <false /> <key> Find </ key> <data> RXh0ZXJuYWw = </ data> <key> InfoPlistPatch </ key> <false /> <key> Name </ key> <string> AppleAHCIPort </ string> <key> Replace </ key> <data> SW50ZXJuYWw = </ data> </ dict> </ array> </ dict>
이 섹션에서는 몇 가지 설정과 kext 패치를 실시하고 있습니다. Clover Configurator를 사용하는 경우 다음 항목을 체크합니다.
- Apple RTC - 그러면 다시 부팅 BIOS가 초기화되어 버리는 현상을 방지합니다.
- KernelPM - 그러면 this setting prevents writing to MSR 0xe2에 버리는 것을 방지하고 부팅시 커널 패닉을 방지합니다.
RtVariables와 SMBIOS
<key> RtVariables </ key> <dict> <key> BooterConfig </ key> <string> 0x28 </ string> <key> CsrActiveConfig </ key> <string> 0x3E7 </ string> <key> MLB </ key> <string> C02726902CDH69F1M </ string> <key> ROM </ key> <string> UseMacAddr0 </ string> </ dict> <key> SMBIOS </ key> <dict> <key> BoardSerialNumber </ key> <string> C02726902CDH69F1M </ string> <key> ProductName </ key> <string> iMac18,1 </ string> <key> SerialNumber </ key> <string> C02TX0VDH7JY </ string> <key> SmUUID </ key> <string> 91492A73-595C-4D97-A6FC-2B5D3ED1B54D </ string> </ dict>
이 Coffee Lake의 예에서는 호환성을 위해 iMac18,1의 SMBIOS를 사용했습니다. Coffee Lake와 호환성 높은 SMBIOS는 다음 두 가지입니다.
- iMac18,1 - 이것은 iGPU를 표시하는 데 사용하는 컴퓨터에서 사용됩니다.
- iMac18,3 - 이것은 dGPU를 표시하는 데 사용, iGPU는 계산에만 사용하는 컴퓨터에서 사용됩니다
macserial 응용 프로그램에서 SMBIOS 정보를 얻기 위해이를 -a 옵션으로 시작합니다. 그러면 일련 번호와 보드 일련 번호를 생성합니다. 또한 grep 명령에서 검색하는 SMBIOS 유형을 제한 할 수 있습니다. iMac18,1의 예는 다음과 같이 macserial 응용 프로그램을 시작합니다.
macserial -a | grep -i iMac18,1
그러면 다음과 같은 결과를 얻을 수 있습니다.
iMac18,1 | C02T8SZNH7JY | C02707101J9H69F1F iMac18,1 | C02VXBYDH7JY | C02753100GUH69FCB iMac18,1 | C02T7RY6H7JY | C02706310GUH69FA8 iMac18,1 | C02VD07ZH7JY | C02737301J9H69FCB iMac18,1 | C02TQPYPH7JY | C02720802CDH69FAD iMac18,1 | C02VXYYVH7JY | C02753207CDH69FJC iMac18,1 | C02VDBZ0H7JY | C02737700QXH69FA8 iMac18,1 | C02VP0H6H7JY | C02746300CDH69FJA iMac18,1 | C02VL0W9H7JY | C02743303CDH69F8C iMac18,1 | C02V2NYMH7JY | C02728600J9H69FAD
순서는 다음과 같습니다.
Product | Serial | Board Serial (MLB)
- iMac18,1 부분은 SMBIOS -> Product Name에 복사합니다.
- Serial 부분은 SMBIOS -> Serial Number에 복사합니다.
- Board 부분은 SMBIOS -> Board Serial Number와 Rt Variables -> MLB에 복사합니다.
SmUUID 값은 터미널의 uuidgen 명령에서 얻을 수 있습니다. 혹은 내 Plist-Tool 스크립트 자동 생성 할 수 있습니다. 이 결과를 SMBIOS -> SmUUID에 복사합니다.
Rt Variables -> ROM을 UseMacAddr0로 설정했습니다. 이것을 설정하면 온보드 MAC 주소를 유용 해줍니다.
BooterConfig은 0x28에 CsrActiveConfig은 0x3e7으로 설정했습니다.
이제 효과적으로 SIP를 해제 해줍니다. 이 외에도 자주 사용되는 값은 다음과 같습니다.
- 0x0 - SIP를 완전히 활성화
- 0x3 - 서명되지 않은 kexts의 사용과 보호 된 디렉토리에 쓰기 가능
- 0x3e7 - SIP를 완전히 비활성화 할
System Parameters
<key> SystemParameters </ key> <dict> <key> InjectKexts </ key> <string> Yes </ string> <key> InjectSystemID </ key> <true /> </ dict>
Inject Kexts :
이 설정에는 세 가지가 있습니다. 그러므로 Yes를 사용했습니다.
- Yes - Clover이 EFI의 kext를 사용하도록 지정한다.
- No - Clover이 EFI의 kext를 사용하지 않도록 지정한다.
- Detect - FakeSMC.kext이 kext 캐시에 존재하지 않는 때만 kext를 사용하도록 Clover에 지정한다.
InjectSystemID :
이 설정은 부팅시 SmUUID를 system-id 설정하도록 Clove에 지시합니다. 이것은 iMessage 등에 중요합니다.
번역 및 수정한 글이며 출처는 아래와 같습니다
https://bootmacos.com/entry/2019/01/13/005222#i3-8100UHD_630
Mactopia
댓글 3
이 글을 아래 글에서 참조하였습니다.
i5-3570K/GA-B75M-D3V (rev1.1) F13/램8G Catalina 10.15 업그레이드 어렵게 성공.
하드웨어 설정 고려할때 가장 큰 영향을 주는건 결국 보드이므로 보드 칩셋이 비호환되는 소켓 변경을 기준으로 조금씩 설정에 차이가 있다고 보면 됩니다
다만 2세대 이상이라면 설치하는데 큰 문제 없습니다 (3세대 이상만 퀵싱크 들어갔으므로 이 이상, 가능하다면 전력 관리나 기타 측면으로 인해 4세대 이상을 추천합니다)