Giới thiệu sơ lược về OpenCore Bootloader

OpenCore Bootloader là 1 mã nguồn mở được phát triển nhằm thay thế cho Clover Bootloader, về tính năng thì OpenCore sẽ rút gọn đi nhằm tối ưu hiệu suất hơn Clover. Hướng dẫn chính thức của Dortania tại đây

 Các thay đổi chính của OpenCore Bootloader:

  •  Hỗ trợ nhiều macOS hơn các bootloader cũ (e.i macOS Big Sur,..., Mac OS X Tiger)
  • Tăng tốc độ khởi động bằng cách giảm bớt các bản vá được thực hiện
  • Hỗ trợ tốt hơn cho FileVault, không cần phải tắt SIP, hỗ trợ khởi động an toàn qua Vaulting và Secure Boot của Apple
  • Mang lại trải nghiệm giống real Mac hơn với sự hỗ trợ Startup Disk của BootCamp và các phím tắt lúc khới động: giữ Option hoặc ESC để chọn thiết bị khởi động, Cmd+R để vào Recovery hay Command+Option+P+R để reset NVRAM
  • OpenCore vẫn giữ trọn vẹn hệ thống khi tải các phần mở rộng kernel của bên thứ 3

Chú ý:

  • Sự phát triển của AMD OSX sẽ được gắn chặt với OpenCore cho nên các máy dùng CPU AMD khuyến khích sử dụng OpenCore
  • Các kexts sẽ được load theo sự điều chỉnh của bạn trong config.plist vì vậy các kext cần thiết cần được ở vị trí ưu tiên. VD: Lilu phải được tải trước WhateverGreen hoặc VirtualSMC.
  • Các bản vá ACPI và thông tin SMBIOS sẽ được thay đổi cho tất cả các hệ điều hành(macOS, Windows,...) được khởi động qua OpenCore.
  • Một số hệ thống yêu cầu chế độ Windows 8.1/10 UEFI Mode để khởi động.
  • Thiết bị NVME cần được thiếp lập đúng trong BIOS

Dự định phát triển của OpenCore:

 2019: Năm bắt đầu thử nghiệm

2020: Hỗ trợ Secure Boot

2021: Hoàn thiện trình khởi động

Cài đặt OpenCore Bootloader EFI

Bước đầu bạn cần bộ khởi động OpenCore

Nếu bạn đang dùng Clover, các bạn hãy backup Clover EFI hiện tại rồi tải rồi mở script này để xoá NVRam, nhập password chờ quá trình kết thúc. Sau đó, bạn copy folder EFI OpenCore đã chuẩn bị vào EFI của USB/ổ cứng tuỳ bạn thích.

Cấu trúc cơ bản của OpenCore Bootloader

Mình sẽ nêu tác dụng các từng folder/file cho các bạn 

Thư mục EFI

Chứa tất tần tật các boot của các hệ điều hành: OpenCore, Clover, Microsoft cho Windows, Grub cho linux,…

Thư mục BOOT

Nơi chứa BOOTX64.EFI nhằm giúp các hệ thống máy tính uEFI nhận diện và tải thực thi nó đầu tiên

ACPI

Chứa các file .aml đã patch phù hợp với macOS

Drivers

Chứa các drivers giúp bootloader nhận diện và điều khiển các phần cứng BIOS/UEFI của máy tính

Kext

Nơi chứa các trình điều khiển của macOS

Resources

Nơi giúp các bạn thêm GUI cho OpenCore kèm những âm thanh khởi động tương tự realmac

Tools

Nơi chứa các công cụ CleanNvram, HdaCođecump,...

config.plist

File chứa cấu hình giúp OpenCore Bootloader có thể tải hệ thống hackintosh một cách đúng nhất

OpenCore.efi

File boot của OpenCore Bootloader


Kexts

Phần này các bạn không cần thay đổi gì khi chuyển từ Clover sang OpenCore, bạn chỉ cần copy hết từ CLOVER/kexts/Other sang OC/Kexts là được

Còn với những bạn mới chơi và build lại từ đầu thì mình sẽ nêu tên vài kext cần thiết cũng như bắt buộc cơ bản cho các bạn biết

Kexts

Platform

Function

AppleALC

Desktop&Laptop

Kích hoạt âm thanh

Lilu

Desktop&Laptop

Vá mềm on-the-fly cho nhiều kexts khác mà không cần động tới kexts gốc

VirtualSMC

Desktop&Laptop

Giúp giả lập hệ thống cảm biến của realmac

USBInjectAll

Desktop&Laptop

Nhằm fix các cổng USB

WhateverGreen

Desktop&Laptop

Giải quyết vấn đề cho các ATI/AMD/Intel/Nvidia GPUs

VoodooPS2Controller

Laptop

Fix Touchpad, Mouse, Keyboard PS2 cho đa số Laptop cũng như 1 vài máy Desktop ngày xưa

NVMeFix

Desktop&Laptop

Tránh việc panic khi dùng SSD NVMe PM981,... và kích hoạt quản lí năng lượng


ACPI
Với patch của OpenCore thì việc load patch khá là phiền, bạn hãy chắc chắn rằng patch của bạn đúng để được OpenCore load. Về sự thay đổi thì patch của OpenCore sẽ đơn giản hơn, patch cũng như rename sẽ ít hơn Clover nhiều. Và yêu cầu cần có khi dùng hotpatch đó là ở mỗi Scope patch sẽ cần có một Method _STA như dưới

......

Method (_STA, 0, NotSerialized) // _STA: Status

{

If (_OSI ("Darwin"))

{

Return (0x0F)

}

Else

{

Return (Zero)

}

}

......

Mình sẽ giới thiệu cho các bạn một vài patch cơ bản cho OpenCore, các bạn có thể lấy dùng mà không cần chỉnh sửa gì

Patchs

Platform

Function

SSDT-PLUG

Desktop&Laptop

Kích hoạt CPU Management (Bắt buộc cần có với mọi phần cứng)

SSDT-EC-USBX

Desktop&Laptop

Fix EC(Embedded Controller), USBX(chỉ cần với CPU Skylake+)

SSDT-PMC

Desktop&Laptop

Fix NVRAM cho CPU CoffeeLake+

SSDT-AWAC

Desktop&Laptop

Fix AWAC(Time and Alarm) cho CPU CoffeeLake+

SSDT-UNC

HEDT

Bắt buộc đối với tất cả người dùng Big Sur để đảm bảo thiết bị UNC của họ tương thích

SSDT-RHUB

Desktop&Laptop

Sửa lỗi các cổng USB cho 400 series motherboards

SSDT-PNLF

Laptop

Giúp kích hoạt tuỳ chỉnh độ sáng màn hình cho laptop. Coffee Lake+ thì dùng SSDT-PNLF-CFL

SSDT-CPUR

AMD

Sửa các định nghĩa CPU với bo mạch chủ B550 và A520, không sử dụng nếu bạn không có hệ thống AMD B550 hoặc A520

SSDT-XOSI

Laptop

Đánh lừa phần cứng là bạn đang khởi động Windows nhằm fix Touchpad I2C,...(cần rename _OSI to XOSI)


Với những bạn cần hoàn thiện hơn cho laptop, hãy tham khảo thêm tại đây (hướng dẫn bằng vá bằng tiếng Việt sẽ được cập nhật tại đây)Ở bảng trên mình đã nói rất rõ chức năng cũng như cần có với phần cứng như nào? Mong rằng các bạn sẽ dễ dàng bước qua bước này để đến với bước tiếp theo.

config.plist

Bước cuối cùng luôn luôn là bước khó nhất, thời gian khó khăn cũng như mất nhiều thời gian nhất của các bạn đã tới nhưng đừng ngần ngại. Bắt đầu thôi!

Đây chỉ là guide chỉnh config cơ bản nhất, không phù hợp cho các pro muốn tìm hiểu sâu. Nếu cần bạn hãy đọc Configuration.pdf từ repo OpenCorePkg.

Bước đầu, bạn cần tải PlistEdit Pro hoặc ProperTree để chỉnh sửa file config.plist hoặc là dùng chính app cơ bản như TextEdit hay Wordpad để chỉnh cũng được.

Để OpenCore load những thành phần như file Patch, Kext hay Driver thì phải thêm (snapshoot) chúng vào config.plist. Các bạn có thể dùng ProperTree để snapshoot trên cả Window lẫn macOS nhé.

Sau khi mở config.plist chưa chỉnh sửa thì bạn sẽ được như sau.

Chúng ta sẽ đi từ trên xuống, đến với ACPI, mình đã chỉnh sửa chút ít cho các bạn dễ hình dung như dưới

ACPI

Add

Ở đây từng Item sẽ dành cho một SSDT được load:

Enable có tác dụng kiểm soát việc load SSDT

Path sẽ là tên đầy đủ của patch.

Delete

Các bạn chỉ chuyển Enable thành YES ở 2 Item khi bạn dùng CPU Ivy Bridge hoặc cũ hơn

Patch

Từng Item sẽ tương ứng với từng patch giống như ACPI/DSDT/Patches trong config.plist của Clover

 Trong từng Item các bạn sẽ cần quan tâm tới Find và Replace mà thôi, Comment thì không ảnh hưởng đến việc rename nha.

Với PC thì chả cần rename để dùng patch gì hết nhé các bạn(trong phạm vi bài viết này)

 Vậy cách Find và Replace là như nào? Mình sẽ hướng dẫn cho các bạn ngay

 VD: mình cần rename _OSI to XOSI

Vậy lần lượt mình cần chuyển _OSI và XOSI thành HEX bằng bất kì 1 công cụ chuyển đổi nào

Như vậy Find là 5f4f5349 còn Replace là 584f5349
 

 Booter

mục này chúng ta chỉ cần quan tâm phần Quirks

Quirks

AvoidRuntimeDefrag

Boolean

sửa lỗi ngày giờ, NVRAM, điều khiển nguồn,... bắt buộc với mọi phần cứng, hãy bật nó

DevirtualiseMmio

Boolean

chọn YES để sửa lỗi Memory Allocation dành cho Z390 và Z490 series mainboards, yêu cầu bật ProtectUefiServices

EnableSafeModeSlide

Boolean

bật nó khi chế độ safemode không thể khởi động, yêu cầu bật ProvideCustomSlide

EnableWriteUnprotector

Boolean

cho phép quyền ghi vào UEFI runtime services, mắc định là bật, yêu cầu bật RebuildAppleMemoryMap nếu phần cứng của bạn có bảng MAT

ProtectUefiServices

Boolean

bảo vệ các dịch vụ UEFI khỏi phần mềm bị ghi đè chỉ dàng cho Z390 và Z490 series mainboards

ProvideCustomSlide

Boolean

có tác dụng tương tự bootarg slide bên Clover nhằm sửa lỗi "Only N/256 slide values are usable!"

RebuildAppleMemoryMap

Boolean

tạo Memory Map thích hợp cho macOS, nếu bạn gặp lỗi restart ngay lúc vào macOS thì hãy tắt nó

SetupVirtualMap

Boolean

sửa lỗi SetVirtualAddresses dành cho CPU Broadwell trở về trước hoặc những mainboard Gigabyte có thể sẽ cần bật cái này khi gặp kernel panic. Với những mainboard ASUS, Gigabyte, ASRock Z490 sẽ không cần lựa chọn này

SyncRuntimePermissions

Boolean

sửa lỗi bảng MAT để khởi động Windows, Linux,... Chỉ cần với các CPU Skylake hoặc mới hơn

DeviceProperties

Tương tự Devices/Properties trong config.plist của CloverDeviceProperties

Add

Ở phần này sẽ giúp các bạn kích hoạt Intel GPU và âm thanh.

Kernel

Add

Thêm các kext vào để chạy
Với OpenCore thì việc load kext sẽ dựa vào sự sắp xếp thứ tự của bạn cho nên các bạn có thể tham khảo qua thứ tự kext sau hoặc là tự sắp xếp tuỳ thích nhưng bắt buộc cần Lilu.kext đứng đầu nhé!

Lilu.kext -> VirtualSMC/FakeSMC -> WhateverGreen -> AppleALC/VoodooHDA -> WiFi/Ethernet -> VoodooPS2+(VoodooI2C) -> USB -> SSD -> .....

Emulate

Phần này chúng ta bỏ qua nếu không dùng CPU Pentiums, Celeron và 1 vài trường hợp đặc biệt của Xenon.
Đối với các CPU Pentiums and Celerons, chúng ta thêm giá trị sau vào

CpuidData: A9060300 00000000 00000000 00000000

CpuidMask: FFFFFFFF 00000000 00000000 00000000

Force

mục này tương tự như mục ForceKextToLoad bên Clover.

Patch

Với những CPU AMD với các patch tại đây

 Còn với các CPUs Pentiums and Celerons thì cần thêm 2 trong 3 patchs sau

 Với tất cả macOS

Base: [EMPTY]

Comment: Haswell+ low-end Celeron/Pentium cpuid_set_info_rdmsr (c) vit9696

Count: 1

Enabled: YES

Find: B9A00100000F32

Identifier: kernel

Limit: 0

Mask: [EMPTY]

MatchKernel: [EMPTY]

Replace: B9A001000031C0

ReplaceMask: [EMPTY]

Skip: 0

Với macOS 10.12

Base: _xcpm_bootstrap

Comment: _xcpm_bootstrap (Haswell+ low-end Celeron/Pentium) 10.12

Count: 1

Enabled: YES

Find: C4830022

Identifier: kernel

Limit: 0

Mask: FFFF00FF

MatchKernel: 16.

Replace: C6830022

ReplaceMask: FFFF00FF

Skip: 0

hoặc macOS 10.13 trở đi

Base: _xcpm_bootstrap

Comment: _xcpm_bootstrap (Haswell+ low-end Celeron/Pentium) 10.13+

Count: 1

Enabled: YES

Find: 00C43C22

Identifier: kernel

Limit: 0

Mask: 00FFFFFF

MatchKernel: 16.

Replace: 00C63C22

ReplaceMask: 00FFFFFF

Skip: 0

Quirks 

AppleCpuPmCfgLock

Cần thiết nếu BIOS không cho tắt CFG-Lock

AppleXcpmCfgLock

Cần thiết nếu BIOS không cho tắt CFG-Lock

AppleXcpmExtraMsrs

Tắt nhiều quyền truy cập MSR quan trọng đối với một số CPU như Haswell-E, Broadwell-E, Skylake-SP và các CPU tương tự không hỗ trợ XCPM (không thích hợp với các CPUs Pentium hoặc Ivy Bridge, Sandy Bridge)

AppleXcpmForceBoost

Bắt buộc chạy hiệu suất tối đa ở chế độ XCPM nhưng chỉ phù hợp với số ít CPU Xeon

CustomSMBIOSGuid

Vá GUID cho UpdateSMBIOSMode: Custom. Khuyến khích bật với các phần cứng của Dell

DisableIoMapper

Hãy bật nếu bạn không dùng tới VT-D

DisableRtcChecksum

Vô hiệu hóa tổng kiểm tra chính (0x58-0x59) bằng AppleRTC. Khuyến khích dùng RTCMemoryFixup để hoạt động tốt nhất

DummyPowerManagement

Tác dụng tương tự với NullCPUPowerManagement.kext

ExternalDiskIcons

Áp dụng biểu tượng ổ cứng bên trong cho tất cả các ổ cứng AHCI

IncreasePciBarSize

Tăng kích thước thanh PCI 32 bit trong IOPCIF Family từ 1 đến 4 GB. Hay tính toán trước khi dùng tránh việc hỏng phần cứng.

LapicKernelPanic

Vô hiệu hóa nhân hoảng loạn trên các ngắt LAPIC. Khuyến khích bật với các phần cứng của HP

PanicNoKextDump

Cho phép đọc nhật ký kernel panic từ macOS 10.13 trở đi

PowerTimeoutKernelPanic

Giúp khắc phục kernel panic liên quan đến thay đổi năng lượng với trình điều khiển Apple và âm thanh kỹ thuật số.

ThirdPartyDrives

Áp dụng các bản vá nhằm kích hoạt cách tính năng có sẳn ở SSD ví dụ như TRIM, hibernation,... từ macOS 10.15 trở đi

XhciPortLimit

Vá USB kexts để loại bỏ giới hạn 15 cổng USB. Từ macOS 11.3+, hãy tắt để tránh lỗi không nhận USB

Misc

Boot

ConsoleAttributes

Number

Đặt các thuộc tính cụ thể cho bảng điều khiển. Để mắc định

HibernateMode

String

• None — Không ngủ đông

• Auto — Sử dụng RTC hoặc NVRAM ngẫu nhiên

• RTC — Sử dụng RTC

• NVRAM — Sử dụng NVRAM

HideAuxiliary

Boolean

Ẩn hiện các phân vùng Recovery hay các tùy chọn ResetNvram và các công cụ trong mục Tools 

PickerAttributes

Number

Đặt thuộc tính cụ thể cho bộ chọn

PickerAudioAssist

Boolean

Nếu thấy việc lựa chọn khởi động quá nhàm chán thì hãy chọn YES để có thêm 1 giọng nói đọc tên option boot cho bạn.

PickerMode

String

Sửa thành External nếu muốn dùng Theme ở màn hình menu OpenCore

PollAppleHotKeys

Boolean

Hãy chọn YES nếu bạn cần dùng các phím tắt sau

• CMD+C+MINUS — Vô hiệu hóa kiểm tra tương thích

• CMD+K — Khởi động release kernel

• CMD+S — Khởi động với chế độ single user

• CMD+S+MINUS — Vô hiệu hoá KASLR slide

• CMD+V — Khởi động với 1 đống chữ rườm rà (-v)

• Shift — Khởi động với chế độ an toàn

ShowPicker

Boolean

Bật tắt menu boot của OpenCore

TakeoffDelay

Number

Đặt thời gian delay (ms) trước khi thực hiện các phím tắt hoặc lựa chọn khởi động

Timeout

Number

Thay đổi thời gian suy nghĩ để lựa chọn OS của bạn tại đây

Debug

AppleDebug

Boolean

Ghi nhật ký boot.efi, hữu ích để gỡ lỗi. Chỉ hỗ trợ với 10.15.4+

ApplePanic

Boolean

Ghi lại nhật ký kernel panic

DisableWatchDog

Boolean

Tắt giám sát UEFI, có thể giúp tránh việc gặp panic ngay khi khởi động

DisplayDelay

Number

Độ trễ tính bằng ms được thực hiện sau mỗi dòng in trên màn hình

DisplayLevel

Number

Hiển thị nhiều thông tin gỡ lỗi hơn với 2147483650

SerialInit

Boolean

Cần thiết để thiết lập output với OpenCore

SysReport

Boolean

Cần thiết cho việc gỡ lỗi xuất phát SSDT

Target

Number

Nếu cần bạn cần xem lại quá trình khởi động, hãy chuyển 3 thành 67

Entries

Giúp OpenCore biết được thêm những đường dẫn khởi động khác người từ nhiều OS khác. Nên để mặc định.

 Security

AllowNvramReset

Boolean

Chọn YES để dùng hotkey CMD+OPT+P+R để Reset NVRAM hoặc hiển thị tool Reset NVRAM trong bộ khởi động

AllowSetDefault

Boolean

Chọn YES để dùng hotkeys CTRL+Enter và CTRL+Index nhằm thiết lập lựa chọn khởi động mắc định trong bộ khởi động

ApECID

Number

Được sử dụng để tạo mã nhận dạng khởi động an toàn được cá nhân hóa, hiện tại điều này không đáng tin cậy do có lỗi trong trình cài đặt macOS, vì vậy chúng tôi đặc biệt khuyến khích bạn để điều này làm mặc định.

AuthRestart

Boolean

Cho phép khởi động lại xác thực tương thích VirtualSMC nhằm kích hoạt FileVault

BlacklistAppleUpdate

Boolean

Được sử dụng để chặn cập nhật chương trình cơ sở, được sử dụng như một cấp bảo vệ bổ sung vì macOS Big Sur không còn sử dụng biến run-efi-updater

DmgLoading

String

Đảm bảo chỉ tải các DMG đã cấp phép

ExposeSensitive Data

Number

Hiển thị thêm thông tin gỡ lỗi, yêu cầu phiên bản Debug của OpenCore

Vault

String

Hãy chỉnh Secure thành Optional

ScanPolicy

Number

Hãy đặt từ 17760515 thành 0 để OpenCore hiển thị đầy đủ các trình khởi động từ ổ cứng lẫn USB

SecureBootModel

String

Bật chức năng khởi động an toàn của Apple trong macOS. Disable nếu bạn cần cài Nvidia Web Driver.

Tools

Hãy thêm công cụ vào nếu bạn cần dùng 1 trong số các công cụ sẳn trong /EFI/OC/Tools/Tools

 NVRAM

Add

4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14

DefaultBackgroundColor

Data

00000000 (Black) hoặc BFBFBF00 (Light)

UIScale

Data

01 (Standard) hoặc 02 (HiDPI)


7C436110-AB2A-4BBB-A880-FE41995C9F82


SystemAudioVolume

Data

Để mặc định

boot-args

String

-v debug=0x100 keepsyms=1 alcid=3 agdpmod=pikera

csr-active-config

Data

mặc định để bật SIP. muốn tắt SIP thì các bạn thay giá trị sau. FF0F0000 (Big Sur), FF070000(Catalina + Mojave), FF030000(High Sierra)

run-efi-updater

String

No

prev-lang:kbd

Data

Bỏ trống hoặc để 76692D566965746E616D6573653A30


Giải thích bootargs:

-v (Verbose)

Giúp hiển thị các dòng lệnh khi boot để dễ dàng xác định lỗi và sửa

debug=0x100 và keepsyms=1

giúp chặn máy restart khi gặp panic

alcid=1

kích hoạt âm thanh với layout id 1, tìm layout ID phù hợp ở đây.

agdpmod=pikera

cần thiết với GPU RX 5000 series nhằm fix lỗi black screen

nvda_drv_vrl=1

tác dụng tương tự như nvda_drv=1 để kích hoạt NVIDIA GPU ở macOS 10.13-

LegacyEnable

Cho phép lưu trữ NVRAM vào nvram.plist, hãy bật nếu máy bạn không có NVRAM gốc

LegacyOverwrite

Cho phép ghi đè giá trị từ nvram.plist, hãy bật nếu máy bạn không có NVRAM gốc

LegacySchema

Sẽ được áp dụng khi LegacyEnable được bật

WriteFlash

Hãy bật nó để cho phép việc ghi giá trị vào bộ nhớ 

PlatformInfo


Automatic

Boolean

Nếu chọn YES thì PlatformInfo sẽ được tạo từ Generic còn không thì sẽ được lấy dữ liệu từ SMBIOS, DataHub, và NVRAM

UpdateDataHub

Boolean

Cập nhật DataHub từ Generic hoặc DataHub tùy thuộc vào giá trị tự động

UpdateNVRAM

Boolean

Cập nhật NVRAM liên quan đến thông tin SMBIOS

UpdateSMBIOS

Boolean

Cập nhật SMBIOS từ Generic hoặc SMBIOS tùy thuộc vào giá trị tự động

UpdateSMBIOSMode

String

Hãy giữ nguyên còn nếu với phần cứng Dell thì bạn hãy chuyển từ Create thành Custom


Generic

AdviseWindows

Boolean

Buộc Windows hỗ trợ trong FirmwareFeatures nhằm khắc phục những vấn đề xoay quanh phân vùng EFI khi xài dualboot

MLB

String

Hướng dẫn ở dưới

ROM

Data

Các bạn lấy địa chỉ MAC từ đây rồi xoá đi dấu 2 chấm để vào là được.

macOS: System Preferences -> Network -> Ethernet -> Advanced -> MAC Address

Windows: Settings -> Network & Internet -> Ethernet -> Ethernet -> Physical MAC Address

SpoofVendor

Boolean

Đặt thông tin hãng cung cấp SMBIOS thành Acidanthera

SystemProductName

String

Sandy Bridge: iMac12,2(Desktop), MacBookPro8,1(Laptop)

Ivy Bridge: iMac13,2(Desktop), MacBookPro9,2(Laptop)

Haswell: iMac14.2(Desktop), MacBookPro11,1(Laptop), MacBookAir6,2(Laptop)

Broadwell: MacBookPro12,1(Laptop), MacBook8,1(Laptop), MacBookAir7,1(Laptop)

Skylake: iMac17,1(Desktop), MacBookPro13,1(Laptop)

Kabylake: iMac17,1(Desktop), MacBookPro14,1(Laptop)

Coffeelake: iMac18,3(Desktop), MacBookPro15,2(Laptop)

Coffeelake-r: Macmini8,1(only iGPU), iMac19,2(iGPU + dGPU), MacBookPro15,2(Laptop)

CPU dòng F: iMacPro1,1

SystemSerialNumber

String

Hướng dẫn ở dưới

SystemUUID

String

Hướng dẫn ở dưới

Để có được thông tin điền vào MLB, SystemSerialNumber và SystemUUID, hãy tải repo GenSMBIOS rồi chạy GenSMBIOS.bat với Windows còn GenSMBIOS.command với macOS sau đó gõ 3 rồi copy SMBIOS phù hợp với cấu hình của bạn ở trên vào nhấn Enter, ngay lập tức những thông tin cần thiết sẽ hiện ra cho bạn

UEFI

Audio

phần này các bạn nên để mặc định.

ConnectDrivers

Nếu tắt đi thì bootloader sẽ tự load đa số các trình điều khiển uEFI có trong /EFI/OC/Drivers/ và sẽ làm tăng tốc độ khởi động lên chút ít

Drivers

Hãy thêm tên các trình điều khiển mà máy bạn cần vào đây, với 2 drivers sau sẽ cần dùng với mọi máy:

OpenRuntime.efi

driver thay thế cho FwRuntimeServices.efi, AptioMemoryFix, OSXAptioFixDrv,...

HFSBox.efi

bạn có thể dùng driver từ Clover sang hoặc tải từ đây rồi copy vào /EFI/OC/Drivers/

và 1 số drivers khác: (đa số không cần quan tâm)

AudioDxe.efi

hỗ trợ âm thanh cho uEFI

CrScreenshotDxe.efi

để chụp ảnh màn hình

HiiDatabase.efi

sửa lỗi GUI cho dòng CPU Sandy Bridge và cũ hơn

NvmExpressDxe.efi

dùng khi không có driver NVMe tích hợp sẵn ở dùng CPU Haswell hoặc cũ hơn

OpenCanopy.efi

đây là tuỳ chọn GUI của OpenCore (mình hướng dẫn ở dưới)

AppleUsbKbDxe.efi + UsbMouseDxe.efi

chỉ dùng với CPU Sandy Bridge và cũ hơn khi hệ thống chạy DuetPkg

Ps2KeyboardDxe.efi + Ps2MouseDxe.efi

cần thêm với những Desktop dùng Keyboard&Mouse PS2

XhciDxe.ef

XhciDxe.efi: dùng khi không có driver XHCI tích hợp sẵn ở CPU Sandy Bridge hoặc cũ hơn

 Quirks

DisableSecurityPolicy

Nếu đang chạy thiết bị Microsoft Surface, bạn nên bật tùy chọn này

ExitBootServicesDelay

Việc thực thi mã song song giữa FileVault 2 và EXIT_BOOT_SERVICE làm bộ điều khiển SATA không thể truy cập được từ macOS nên cần delay 3 đến 5s để giải quyết vấn đề với các BIOS APTIO IV (cụ thể với ASUS Z87-Pro)

IgnoreInvalidFlexRatio

Các giá trị không hợp lệ trong thanh ghi MSR_FLEX_RATIO (0x194) MSR (cụ thể với BIOS APTIO IV) có thể gây ra lỗi khởi động macOS trên nền tảng Intel. Không nên sử dụng nếu không được yêu cầu

ReleaseUsbOwnership

Cố gắng tách quyền sở hữu bộ điều khiển USB khỏi trình điều khiển. Nếu stuck ở apfs_module_start:1683 thì hãy bật

RequestBootVarRouting

Bật tính năng này để ngăn tùy chọn Startup Disk trong những firmware không tương thích với các mục khởi động của macOS

TscSyncTimeout

Đồng bộ hóa TSC sớm trên một số máy tính xách tay khi chạy hạt nhân XNU gỡ lỗi. Đây chỉ là giải pháp tạm thời, khuyến khích dùng VoodooTSCSync.kext

UnblockFsConnect

Chủ yếu bật với phần cứng HP khi không có ổ cứng nào được liệt kê bởi chế độ By Driver

Đây là phần không bắt buộc nhưng nếu bạn muốn máy bạn giống realmac thêm nữa thì hãy làm nhé! Tinh chỉnh GUI của OpenCore và thêm Boot-chime

 GUI

Bước đầu bạn cần tải OcBinaryData về và giải nén nó sau đó các bạn ghi đè các folder /EFI/OC/Resources/. Làm theo hướng dẫn mình đính kèm bên trong đó là được.



 Restart và tận hưởng thành quả. Nếu bị lỗi, bạn hãy kiểm tra lại các bước làm của bạn nhé!

 Boot-chime

Bước đầu các bạn cần ghi đè folder Audio từ OcBinaryData-master/Resources sau khi giải nén vào /EFI/OC/Resources/ (do quá nhiều file con nên mình không chụp rõ cho các bạn được)

Tiếp theo bạn cần chỉnh trong config.plist/NVRAM như dưới

Để nhập 0x46 vào các bạn hãy gõ <46> nhé!

Tiếp theo các bạn cần thêm driver AudioDxe.efi vào /EFI/OC/Drivers/ cũng như thêm AudioDxe.efi vào config.plist/UEFI/Drivers như sau

Sau đó các bạn lần lượt tìm kiếm như mình qua app IORegistryExplorer

Vậy AudioCodec là 0

Các bạn tìm đến PCIe -> IOReg Name -> "HDEF" để biết AudioDevice

Vậy AudioDevice là PciRoot(0x0)/Pci(0x1F,0x3)

 Với AudioOut, các bạn chỉ việc kiểm tra xem có bao nhiêu đầu ra âm thanh trên máy bạn là được. VD với máy mình sẽ là 2

 Với MinimumVolume bạn cần chỉnh nó thấp hơn SystemAudioVolume trong NVRAM đã chỉnh trên, mình sẽ chọn 50

 Đến thông số cuối cùng là VolumeAmplifier, các bạn chỉ việc theo công thức là xong: VolumeAmplifier= (100 * Raw Volume)/SystemAudioVolume

 VD: ở đây SystemAudioVolume là 0x46(HEX) chuyển thành DEC được 70 và Raw Volume sẽ không được vượt quá 100 nên mình sẽ chọn 90

Vậy áp dụng công thức ta được (100 * 90) / 70 = 128.5 (mình sẽ làm tròn nó lên 129)

 Sau khi đã có đầy đủ thông tin cần thiết, bây giờ chỉ việc cho vào config.plist/UEFI/Audio thôi

Ở AudioSupport và PlayChime thì bạn cứ chọn YES nhé!

 

Vậy là xong, Chúc các bạn may mắn nhé!

Để tìm hiểu thêm về Hackintosh. Hãy tham gia group HSVN - Hackintosh Vietnam của chúng tôi.