[OC 101] 오픈코어 시작전에 준비 사항 #1 - Clover to OpenCore 전환 유저 참고 사항 정리
- Mactopia
- 3215
- 2
Mactopia님의 기기정보
1. 오픈코어로 전환 전에 macOS에서 Clover 정크 청소
정리하려면 SIP를 비활성화해야합니다.
확인 사항 :
/ 볼륨 /EFI/EFI/CLOVER/drivers64UEFI/EmuVariableUefi-64.efi
/Volumes/EFI/nvram.plist
/etc/rc.clover.lib
/etc/rc.boot.d/10.save_and_rotate_boot_log.local
/etc/rc.boot.d/20.mount_ESP.local
/etc/rc.boot.d/70.disable_sleep_proxy_client.local.disabled
/etc/rc.shutdown.d/80.save_nvram_plist.local
폴더가 비어 있으면 다음 폴더도 삭제하십시오.
/etc/rc.boot.d
/etc/rc.shutdown.d
Clover의 Preference Pane 사용자는 다음을 제거해야합니다.
/Library/PreferencePanes/Clover.prefPane
/ 라이브러리 / 애플리케이션 \ 지원 / 클로버
하드웨어에서 Clover 정크 청소
클로버가 숨길 수있는 또 다른 것은 NVRAM 변수입니다. NVRAM-> 블록에있는 차단 기능을 통해 명시 적으로 말하지 않으면
OpenCore가 변수를 덮어 쓰지 않기 때문에 좋지 않습니다. 이 문제를 해결하려면 OpenCore의 ClearNvram 기능을 통해 지워야합니다.
config.plist에서 :
기타-> 보안-> AllowNvramReset-> True
그리고 OpenCore의 초기 부팅시 ClearNvram 부팅 옵션을 선택하십시오. 완료되면 모든 내용이 지워지고 시스템이 재부팅됩니다.
2. EFI 펌웨어 드라이버 Conversion 에 관한 정보
지원되는 것 :
AudioDxe.efi (Goldfish64 또는 Clover의 저장소가 아닌 AppleSupportPkg에서 가져 왔는지 확인)
CsmVideoDxe.efi (BiosVideo.efi가 선호 될 수 있음에 유의하십시오)
EnhancedFatDxe.efi
ExFatDxeLegacy.efi
ExFatDxe.efi
GrubEXFAT.efi
GrubISO9660.efi
GrubNTFS.efi
GrubUDF.efi
HiiDatabase.efi
HfsPlus.efi
HfsPlusLegacy.efi
NTFS.efi
NvmExpressDxe.efi
OpenRuntime.efi
OpenUsbKbDxe.efi
OsxFatBinaryDrv.efi
PS2MouseDxe.efi
TbtForcePower.efi
UsbMouseDxe.efi
VBoxExt2.efi
VBoxExt4.efi
VBoxHfs.efi
VBoxIso9600.efi
XhciDxe.efi
OpenCore에 제공 / 병합되어 더 이상 필요하지 않은 드라이버 :
ApfsDriverLoader.efi
AppleEvent.efi
AppleGenericInput.efi
AppleImageCodec.efi
AppleKeyMapAggregator.efi
AppleUiSupport.efi
AppleUITheme.efi
AptioInputFix.efi
AptioMemoryFix.efi
AudioDxe.efi (AppleSupportPkg와 함께 제공되는 AudioDxe 참조)
BootChimeDxe.efi
DataHubDxe.efi
EmuVariableUEFI.efi
EnglishDxe.efi
펌웨어 볼륨 .efi
HashServiceFix.efi
SMCHelper.efi
OcQuirks.efi
VirtualSMC.efi
명시 적으로 오픈 코어에서 지원되지 않는 드라이버 :
AppleUsbKbDxe.efi (OpenUsbKbDxe.efi로 대체)
FSInject.efi
FwRuntimeServices.efi (OpenRuntime.efi로 대체 됨)
osxaptiofix2drv-free2000.efi
osxaptiofix2drv.efi
osxaptiofix3drv.efi
osxaptiofixdrv.efi
OsxFatBinaryDrv.efi
OsxLowMemFixDrv.efi
UsbKbDxe.efi (OpenUsbKbDxe.efi로 대체 됨)
3. Clover Boot Arg Conversion 에 관한 정보
이 섹션은 주로 더 이상 관련이없는 부팅 인수를 설명하는 데 사용됩니다.
사용자는 최신 버전의 macOS에 거의 영향을 미치지 않거나 OpenCore에서 거의 사용하지 않는 레거시 인수를 계속 사용하는 것이 일반적입니다.
macOS 플래그
다트 = 0 :
VT-D 지원 비활성화에 사용
Clover를 사용하면이 플래그가있을 때 ACPI에서 DMAR 테이블도 삭제됩니다.
이 플래그는 또한 macOS 10.15 Catalina에서 SIP를 비활성화해야하므로 OpenCore에서는이 플래그가 더 이상 권장되지 않으며 대신
커널-> Quirks-> DisableIoMapper로 대체됩니다.
kext-dev-mode = 1 :
서명되지 않은 Kext를로드하는 데 사용되며, 플래그는 요세미티에만 있음
최신 릴리스의 csr-active-config NVRAM 변수에서 CSR_ALLOW_UNSIGNED_KEXTS 비트 플립
사용 된 커널 주입 방법으로 인해 OpenCore에서는 필요하지 않습니다.
Kexts 플래그
nvda_drv = 1 : Nvidia의 웹 드라이버를 활성화하는 데 사용되며 macOS 10.12에서 더 이상 작동하지 않습니다
이 플래그는 실제로 Sierra 및 High Sierra의 경우 nvda_drv_vrl = 1로 설정되었습니다.
더 이상 필요 없는 카멜레온 부트로더 arg 값들
PCIRootUID = 값
이것은 _UID of Device (PCI0)를 레거시 AMD GPU에 필요한 값으로 설정하지만 이는 논란의 여지가 있습니다.
GraphicsEnabler = 예 / 아니오
InjectAMD / Nvidia는 Clover와 동일하지만 WhateverGreen을 실행하는 것 외에 OpenCore에는 기능 패리티가 없습니다.
IGPEnabler = 예 / 아니요
GraphicsEnabler와 같은 아이디어, Clover와 동등한 기능은 InjectIntel이므로 기능 패리티는 WhateverGreen의 Framebuffer 패치입니다.
4. 주요 Kernel and Kext patches 에 대한 정보
General Patches:
MSR 0xE2 _xcpm_idle instant reboot
(c) Pike R. AlphaKernel -> Quirks -> AppleXcpmCfgLock
HEDT Specific Patches:
All of the following patches are inside the Kernel -> Quirk -> AppleXcpmExtraMsrs
- _xcpm_bootstrap © Pike R. Alpha
- xcpm_pkg_scope_msrs © Pike R. Alpha
- _xcpm_SMT_scope_msrs 1 © Pike R. Alpha
- _xcpm_SMT_scope_msrs #2 (c) Pike R. Alpha
- _xcpm_core_scope_msrs © Pike R. Alpha
- _xcpm_ performance_patch © Pike R. Alpha
- xcpm MSR Patch 1 and 2 @Pike R. Alpha
- /0x82D390/MSR_PP0_POLICY 0x63a xcpm support patch 1 and 2 Pike R. Alpha
Kext Patches
- AppleAHCIPort External Icon Patch1
- Kernel -> Quirks -> ExternalDiskIcons
- SSD Trim Enabler
- Kernel -> Quirks -> ThirdPartyDrives
- USB Port Limit Patches
- Kernel -> Quirks -> XhciPortLimit
- FredWst DP/HDMI patch
- AppleALC + WhateverGreen
- IOPCIFamily Patch
- Kernel -> Quirks -> IncreasePciBarSize
- Disable board-ID check
- WhateverGreen
- AppleHDA Patch
- AppleALC
- IONVMe Patches
- Not required anymore on High Sierra and newer
- For power management on Mojave and newer: NVMeFix
OpenCore가 지원하는 전체 패치 목록은 /Library/OcAppleKernelLib/CommonPatches.c를 참조하십시오.
5. Plist 값 Conversion 에 대한 정보
오픈코어에서 필요 없는 것
- EHCI Patches: Recommended to power off the controller with SSDT-EHCx_OFF.
- Skylake and newer users do not have an EHCI controller so no need for this.
- change EHC1 to EH01
- change EHC2 to EH02
- XHCI Patches: Not needed once an Injector kextis made
- change XHCI to XHC
- change XHC1 to XHC
- SATA patches: Purely cosmetic in macOS now
- change SAT0 to SATA
- change SAT1 to SATA
- IMEI Patches: Handled by WhateverGreen
- change HECI to IMEI
- change HEC1 to IMEI
- change MEI to IMEI
- change IDER to MEID
- GFX patches: Handled by WhateverGreen
- change GFX0 to IGPU
- change PEG0 to GFX0
- change PEGP to GFX0
- change SL01 to PEGP
- EC Patches: See here on best solution: Getting started with ACPI
- change EC0 to EC
- change H_EC to EC
- change ECDV to EC
- change PGEC to EC
- Audio renames: Handled by AppleALC
- change HDAS to HDEF
- change CAVS to HDEF
- change AZAL to HDEF
- change ALZA to HDEF
- change B0D3 to HDAU
- Z390 BIOS RTC bug fix: See here on best solution: Getting started with ACPI(SSDT-AWAC)
- change STAS to [Blank]
- Fix Z390 BIOS DSDT Device(RTC) bug
- Fix 300-series RTC Bug
- NVMe patches: NVMeFixfixes power management
- change PXSX to ANS1
- change PXSX to ANS2
- Airport/Wifi Patches: AirportBrcmFixup
- change PXSX to ARPT
- Other purely cosmetic patches:
- change LPC0 to LPCB(use SSDT-SBUS-MCHC for fixing SMBUS support)
- change PC00 to PCIO
- change FPU to MATH
- change TMR to TIMR
- change PIC to IPIC
- change GBE1 to ETH0
Clover Patches to OC
Clover TgtBridge patches: No feature parity in OpenCore, see comments(TgtBridge was very buggy in Clover):
Clover DisableASPM ->
DeviceProperties -> Add -> PciRoot... -> pci-aspm-default | Data | <00>
Clover HaltEnabler ->
ACPI -> Quirks -> FadtEnableReset -> YES
Clover Fixes to OC
FixIPIC -> SSDTTIME
- CorpNewt's SSDTTime to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime to make the proper SSDT,
FixSBUS:
FixShutdown:
FixDisplay -> WEG
- Manual framebuffer patching, WhateverGreen does most of the work already
AddMCHC:
FixHDA -> Apple ALC
FixHPET -> SSDTTIME
- CorpNewt's SSDTTime to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime to make the proper SSDT,
FixSATA
Kernel -> Quirks -> ExternalDiskIcons -> YES
FixADP1
- Renames device
AC0_
toADP1
, see Rename-SSDT for an example - Also injects
Name (_PRW, Package (0x02) {0x1C,0x03})
into the device if not present. Source
- Renames device
FixRTC -> SSDTTIME
- CorpNewt's SSDTTime to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime to make the proper SSDT,
FixTMR -> SSDTTIME
- CorpNewt's SSDTTime to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime to make the proper SSDT,
AddPNLF -> SSDT-PNLF
- See SSDT-PNLF
AddIMEI
- SSDT-SBUS-MCHC
- WhateverGreen will also handle fixing IMEI naming
- For Sandy Bridge on Z77 or IvyBridge on Z67, the IMEI will need to be faked: SSDT-IMEI
FixIntelGfx -> WEG
AddHDMI -> WEG
Clover DropTables section to OC
ACPI -> Block
Clover SSDT sectionto OC
PluginType:
- SSDT-PLUG
- SSDT TIME
: Do note that this SSDT is made for systems where AppleACPICPU attaches CPU0, though some ACPI tables have theirs starting at PR00 so adjust accordingly. CorpNewt's SSDTTime can help you with this though HEDT systems will need to manually make theirs. - See Getting started with ACPI for more details
Generate P States: ssdtPRGen.sh(For Sandy Bridge and IvyBridge)
Generate C States: ssdtPRGen.sh(For Sandy Bridge and IvyBridge)
Clover Boot arg section to OC
Clover Boot arg section to OC
Boot Argument:
NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> boot-args
NeverHibernate:
Misc -> Boot -> HibernateMode -> None
Default Boot Volume:
Misc -> Security -> AllowSetDefault -> True
- Press Ctrl+Enter in the picker to set default device
Clover Boot Graphics section to OC
DefaultBackgroundColor:
NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> DefaultBackgroundColor
00000000
: Syrah BlackBFBFBF00
: Light Gray
EFILoginHiDPI:
NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> EFILoginHiDPI | Data | <>
- 0 ->
<00000000>
- 1 ->
<01000000>
- 0 ->
flagstate:
NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> flagstate | Data | <>
- 0 ->
<00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
(dumped from a mac)
- 0 ->
UIScale:
NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> UIScale | Data | <>
- 1 ->
<01>
- 2 ->
<02>
- 1 ->
Clover Cpu section to OC
Type:
PlatformInfo -> SMBIOS -> ProcessorType
- See EfiPkg for all supported values
HWPEnable: Better alternative is to properly manage MSR 0x770
with HWPEnable
QEMU: 필요 없음
TurboDisable: Better alternative is to control your frequencies with CPUFriend or ssdtPRGen
Devices section to OC
USB:
- FixOwnership:
UEFI -> Quirk -> ReleaseUsbOwnership
- ClockID:
DeviceProperties -> Add -> PciRoot... -> AAPL,clock-id
- HighCurrent:
DeviceProperties -> Add -> PciRoot... -> AAPL, HighCurrent
- 10.11 이상 필요 없음
IOUSBHostFamily.kext -> AppleUSBHostPlatformProperties
또는 USBX SSDT for Skylake SMBIOS and newer
Audio:
다음의 경우 오디오 컨트롤러의 PciRoot와 그 이름 (일반적으로 HDEF라고도하지만 HDAS, HDAU 등)을 알아야합니다.
이는 gfxutil에서 찾을 수 있습니다.
path/to/gfxutil -f HDEF
- Inject:
DeviceProperties -> Add -> PciRoot... -> layout-id
- AFGLowPowerState:
DeviceProperties -> Add -> PciRoot... -> AFGLowPowerState -> <01000000>
- ResetHDA: JackFix(well to be specific it's
jackfix.sh
)
Properties:
DeviceProperties -> Add
FakeID : 다PciRoot를 알고 DeviceProperties-> 추가를 사용하여 해당 속성을 적용해야합니다. gfxutil에서 PciRoot를 찾을 수 있습니다.
USB
device-id
device_type
device_type
IMEI
device-id
vendor-id
WIFI
name
compatible
LAN
device-id
compatible
vendor-id
XHCI
device-id
device_type: UHCI
device_type: OHCI
device_type: EHCI
device-id
AAPL,current-available
AAPL,current-extra
AAPL,current-available
AAPL,current-extra
AAPL,current-in-sleep
built-in
device_type: XHCI
device-id
AAPL,current-available
AAPL,current-extra
AAPL,current-available
AAPL,current-in-sleep
built-in
Gui Graphics section to OC
InjectIntel:
DeviceProperties -> Add -> PciRoot... -> Vendor
DeviceProperties -> Add -> PciRoot... -> deviceID
InjectAti:
DeviceProperties -> Add -> PciRoot... -> deviceID
DeviceProperties -> Add -> PciRoot... -> Connectors
InjectNvidia:
DeviceProperties -> Add -> PciRoot... -> DeviceID
DeviceProperties -> Add -> PciRoot... -> Family
FakeIntel:
DeviceProperties -> Add -> PciRoot... -> device-id
DeviceProperties -> Add -> PciRoot... -> vendor-id
FakeAti:
DeviceProperties -> Add -> PciRoot... -> device-id
DeviceProperties -> Add -> PciRoot... -> ATY,DeviceID
DeviceProperties -> Add -> PciRoot... -> @0,compatible
DeviceProperties -> Add -> PciRoot... -> vendor-id
DeviceProperties -> Add -> PciRoot... -> ATY,VendorID
Note: See here on making an SSDT for GPU Spoofing, DeviceProperties injection via OpenCore seems to fail sometimes when trying to spoof a GPU: Renaming GPUs For others like InjectAti, see the Sample.dsl in the WhateverGreen docs
Custom EDID
Dual Link:
DeviceProperties -> Add -> PciRoot... -> AAPL00,DualLink
- 1 ->
<01000000>
- 0 ->
<00000000>
- 1 ->
NVCAP
DeviceProperties -> Add -> PciRoot... -> NVCAP
- See NVCAP-settings for more details, image courtesy of Clover manual
display-cfg:
DeviceProperties -> Add -> PciRoot... -> @0,display-cfg
- See fassl's post on the matter: Nvidia injection
LoadVBios:
- See sample.dsl for more info on custom VBIOS injection
PatchVBios: See LoadVBIOS
NvidiaGeneric:
DeviceProperties -> Add -> PciRoot... -> model | string | Add the GPU name
NvidiaSingle: See disabling unsupported GPUs
NvidiaNoEFI:
DeviceProperties -> Add -> PciRoot... -> NVDA,noEFI | Boolean | True
- See FredWst' comment for more info: GT 640 scramble
ig-platform-id:
DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0) -> ig-platform-id
BootDisplay:
DeviceProperties -> Add -> PciRoot... -> @0,AAPL,boot-display
RadeonDeInit:
- Radeon-Denit-SSDT
- Do note that this is meant for GFX0, adjust for your system
Kernel and Kext Patches section to OC
Kernel and Kext Patches section to OC
KernelPm:
Kernel -> Quirks -> AppleXcpmCfgLock -> YES
AppleIntelCPUPM:
Kernel -> Quirks -> AppleCpuPmCfgLock -> YES
DellSMBIOSPatch:
Kernel -> Quirks -> CustomSMBIOSGuid -> YES
PlatformInfo -> UpdateSMBIOSMode -> Custom
Kernel LAPIC:
Kernel -> Quirks -> LapicKernelPanic -> YES
KernelXCPM:
Kernel -> Quirks -> AppleXcpmExtraMsrs -> YES
-> 저 사양 Haswell+ like Celerons XCPM 추천 패치: Bugtracker Issues 365
기타 패치 비교
OpenCore's CommonPatches.c
with Clover's kernel_patcher.c
USB Port Limit Patches:
Kernel -> Quirks -> XhciPortLimit -> YES
External Icons Patch:
kernel -> Quirks -> ExternalDiskIcons -> YES
- Used for when you internal disk are seen as external on macOS
AppleRTC
- config.plist -> Kernel -> Quirks -> DisableRtcChecksum -> true
- 추가 문제 발생시 -> RTCMemoryFixup 와 아래 적용 See here for more info
The following boot-arg should handle 99% of cases(pair this with RTCMemoryFixup):
rtcfx_exclude=00-FF
FakeCPUID:
Kernel -> Emulate
:CpuidMask
:<Clover_FCPUID_Extended_to_4_bytes_Swapped_Bytes> | 00 00 00 00 | 00 00 00 00 | 00 00 00 00
- ex(
0x0306A9
):A9060300 00000000 00000000 00000000
- ex(
CpuidData
(Swap00
forFF
if needing to swap with a longer value)- ex:
FFFFFFFF 00000000 00000000 00000000
- ex:
Note: CPUID 찾는 법
Rt Variables section to OC
Rt Variables section to OC
ROM:
UseMacAddr0
값 찾는 법System Preferences -> Network -> Advanced -> Hardware
MLB:
PlatformInfo -> Generic -> MLB
BooterConfig:
NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14-> UIScale
:- 0x28:
Data | <01>
- 0x2A:
Data | <02>
- 0x28:
CsrActiveConfig:
NVRAM -> Add -> csr-active-config
:- 0x0:
00000000
- 0x3:
03000000
- 0x67:
67000000
- 0x3E7:
E7030000
- 0x0:
SMBIOS section to OC
SMBIOS section to OC
Product Name:
PlatformInfo -> Generic -> SystemProductName
Serial Number:
PlatformInfo -> Generic -> SystemSerialNumber
Board Serial Number:
PlatformInfo -> Generic -> MLB
SmUUID:
PlatformInfo -> Generic -> SystemUUID
Memory:
- No way to currently map memory slots
Slots AAPL Injection:
DeviceProperties -> Add -> PciRoot... -> APPL,slot-name | string | Add slot
System Parameters section to OC
System Parameters section to OC
CustomUUID:
- OC 에서는 더이상 사용하지 않음을 추천
InjectSystemID:
- OC 에서는 더이상 사용하지 않음을 추천
BacklightLevel:
NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> backlight-level | Data | <Insert value>
- 0x0101 ->
<0101>
- 0x0101 ->
InjectKexts:
- OC 에서는 더이상 사용안함
NoCaches:
- OC 에서는 더이상 사용안함
ExposeSysVariables:
- Just add your SMBIOS properties under
PlatformInfo
NvidiaWeb:
NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> nvda_drv: <31>
많은 참고가 될듯싶네요..#1부터 쭉 정주행입니다.ㅎ