Tìm hiểu về kext

Kext là gì? Kext (Kernel Extension) là 1 trình điểu khiển phần cứng mà bên Windows gọi là driver.

Chú ý:

Đối với linux và windows kext sẽ có dạng 1 folder bình thường. Và folder đó sẽ có extension.kext

Và nếu trong kext của bạn có chứa các file có extension là .dSYM thì bạn chỉ cần delete nó đi

Bởi vì những file đó chỉ dành cho những người dev cần kiểm tra và gỡ lỗi kext

Và hãy nhớ rằng hãy thêm các file đấy vào EFI --> OC --> Kext và phải OC_snapshot config bằng propertree

Hoặc EFI --> Clover --> Kext --> Other

Riêng đối với OpenCore các kext được load theo một thứ tự xác định

Tức là kext nào được load trước sẽ được quyết định trong config.plist

Cụ thể là trong Kernel -> Add

Ở trong đây kext nào được liệt kê trước sẽ được load trước

Kext bắt buộc

  • Không có kext này bạn sẽ không thể boot được

    • Hơn nữa nó còn là một kext với rất nhiều plugin kext kèm theo cực kì hữu dụng

      • Ví dụ: AppleALC, WhateverGreen, VirtualSMC và còn rất nhiều kext khác phụ thuộc vào Lilu

  • VirtualSMC

    • Giả lập SMC chip có trong macreal

    • Không có nó macos không thể khởi động được

    • Bắt buộc trên Mac OS X 10.4 hoặc mới hơn

VirtualSMC Plugins

Các plugin này không bắt buộc nó chỉ là patch một số tình năng cho device của bạn. Khuyến khích thêm ở phần post install

Những kext này là plugin của VirtualSMC. Các plugin cần version VirtualSMC phù hợp

Tốt nhất cứ tải VirtualSMC bản mới nhất

  • SMCProcessor.kext

    • Sử dụng cho theo dỗi nhiệt độ CPU intel

  • SMCAMDProcessor.kext

    • Sử dụng để theo dỗi nhiệt độ trên AMD CPU

    • Kext vẫn đang trong quá tình phát triển

      • Có thể không ổn định

    • Yêu cầu phải có kext AMDRyzenCPUPowerManagement.kext

    • Yêu cầu macos 10.13 và mới hơn

  • SMCRadeonGPU.kext

    • Sử dụng để theo dõi nhiệt độ GPU AMD

    • Yêu cầu phải có kext RadeonSensor.kext

    • Yêu cầu Macos 11 và mới hơn

  • SMCSuperIO.kext

    • Sử dụng cho theo dõi tốc độ quạt trên CPU intel

    • Không hỗ trợ AMD

    • Yêu cầu Mac OS X 10.6 và mới hơn

  • SMCLightSensor.kext

    • Sử dụng cho cảm biến ánh sáng trên laptop

    • Không sử dụng nếu bạn ko có các cảm biến ánh sáng

      • Chẳng hạn ở desktop

      • Có thể sinh ra lỗi nếu như bạn thêm kext nhưng ko có cảm biến

    • SMCBatteryManager.kext

      • Sử dụng hiển thị phần trăm pin cho laptop

      • Không sử dụng ở Desktop

      • Yêu cầu trên Mac OS X 10.7 và mới hơn

    • SMCDellSensors.kext

      • Cho phép theo dõi và quản lý quạt trên các thiết bị dell có support System Management Mode (SMM)

      • Không sử dụng kext này trên các thiết bị Dell không support System Management Mode (SMM)

        • Hầu hết các thiết bị Dell đều được hỗ trợ System Management Mode (SMM) và có thể sử dụng kext này

      • Yêu cầu trên Mac OS X 10.7 và mới hơn

Graphics

  • WhateverGreen.kext

    • Sử dụng cho graphics patching, DRM fixes, board ID checks, framebuffer fixes,...

    • Sử dụng cho IGPU intel hoặc AMD DGPU và NVIDIA GPU

    • Cũng cần thiết khi enable backlight với SSDT-PNLF

    • Yêu cầu Mac OS X 10.6 và mới hơn

  • NootedRed.kext

    • Sử dụng để enable AMD APU

    • Xem chi tiết ở mục phía dưới

    • Yêu càu Bigsur trở lên

    • Thường được sử dụng sau khi cài đặt (Post-install)

      • Để tránh gây lỗi

Chú ý cho NootedRed.kext

Danh sách hỗ trợ

  • 1xxx to 5xxx series

    • Ví dụ: AMD Ryzen™ 7 5700G

    • Hoặc ví dụ khác: AMD Ryzen™ 3 3200G

  • 7x30 series

    • Ví dụ: AMD Ryzen™ 3 7330U

Các bạn sẽ làm như sau đễ enable được AMD APU

Đặc biệt hãy nhớ rằng không bao giờ được sử dụng 2 kext ở trên cùng lúc

Audio

  • AppleALC.kext

    • Sử dụng để patch AppleHDA.kext

      • Chắc có lẽ các bạn đã biết Patch AppleHda là phần cuối cùng của hackintosh

        • Đây cũng là phần khó nhất. Để có thể có được âm thanh hoàn hảo

        • Tuy nhiên do nó quá khó patch nên gần như không mấy ai làm được. Vì thế AppleALC ra đời

        • Thật chất AppleALC chính là patch AppleHDA tuy nhiên đây là các bản patch AppleHDA sẵn của cộng đồng được inject thông qua các layout-id nên mới cần phải thử nhiều layout-id để có thể patch được âm thanh

      • AMD 15h/16h có thể gặp issue với AppleALC

      • AMD Ryzen/Threadripper có thể không có mic với AppleALC

      • Yêu cầu OS X 10.4 và mới hơn

  • VoodooHDA.kext

    • Một phương pháp đơn giản hơn để patch âm thanh

    • Được sử dụng khi các layout-id của AppleALC.kext không thể patch được âm thanh

    • Và bạn không thể patch AppleHDA

    • Âm thanh của VoodooHDA được dùng để chống cháy nên đừng kì vọng gì ở nó

      • Tuy nhiên bạn vẫn có thể tinh chỉnh lại VoodooHDA để cài thiện được chất lượng âm thanh xem chi tiết tại đây

        • Nếu bạn có một đôi tay cảm âmm tốt và chịu khó tinh chỉnh một cách kiên nẫn thì âm thanh cho ra có thể sánh ngang với AppleALC

    • Yêu cầu OS X 10.6 và mới hơn

  • VoodooHDA-FAT.kext

    • Chức năng tương tự voodoohda.kext

    • Nhưng sử dụng cho 32bit

      • Vẫn có support cho 64bit

    • Hoàn hảo cho OS X 10.4-5 sử dụng 32bit

Ethernet

Xem chi tiết tại đây

USB

  • USBInjectAll.kext

    • Inject USB cho Intel

  • XHCI-unsupported.kext

    • Cần cho non-native USB controller

    • AMD không cần kext này

    • để biết xem controller của bạn có cần nó không xem chi tiết tại đây

  • USBToolBox

    • Đây là một công cụ tuyệt vời có thể map usb ngay trên windows

      • Đặc biệt nó đọc cơ sỡ dữ liệu của windows nên có tính năng tiên đoán port

    • Map usb chưa bao giờ nhàn đến thế

    • Support cả AMD

  • XLNCUSBFIX.kext

    • Sửi dụng cho AMD system

      • Không khuyến khích trên Ryzen

    • Yêu cầu MacOS 10.13 và mới hơn

Wifi và Bluetooth

xem chi tiết tại đây

AMD CPU Specific kexts

  • XLNCUSBFIX.kext

    • Sửi dụng cho AMD system

      • Không khuyến khích trên Ryzen

    • Yêu cầu MacOS 10.13 và mới hơn

  • VoodooHDA.kext

    • Một phương pháp đơn giản hơn để patch âm thanh

    • Được sử dụng khi các layout-id của AppleALC.kext không thể patch được âm thanh

    • Và bạn không thể patch AppleHDA

    • Âm thanh của VoodooHDA được dùng để chống cháy nên đừng kì vọng gì ở nó

      • Tuy nhiên bạn vẫn có thể tinh chỉnh lại VoodooHDA để cài thiện được chất lượng âm thanh xem chi tiết tại đây

        • Nếu bạn có một đôi tay cảm âmm tốt và chịu khó tinh chỉnh một cách kiên nẫn thì âm thanh cho ra có thể sánh ngang với AppleALC

    • Được sử dụng trên AMD do AppleALC không hỗ trợ hoàn hảo cho AMD

  • AMDRyzenCPUPowerManagement.kext

    • CPU power management cho Ryzen systems

    • Đang được phát triển tương lai có thể ổn định nhưng ở thời điểm viết bài này nó vẫn chưa ổn định

    • Yêu cầu MacOS 10.13 và mới hơn

  • AMDTscSync.kext

    • Cần thiết cho syncing TSC trên AMD CPU

    • Nếu không có kext này macos có thể khởi động cực kì chậm hoặc không thể khởi động

Extras

  • AppleMCEReporterDisabler.kext

    • SMBIOS cần kext này là

      • MacPro6,1

      • MacPro7,1

      • iMacPro1,1

    • Yêu cầu MacOS 12.3 và mới hơn

      • Hầu hết cần cho AMD

      • Cần trên MacOS 10.15 và mới hơn cho dual-socket Intel systems

  • CpuTscSync.kext

    • Cần thiết cho syncing TSC trên Intel's HEDT hoặc server motherboards

    • Nếu không có kext này macos có thể khởi động cực kì chậm hoặc không thể khởi động

    • Yêu cầu OS X 10.8 và mới hơn

  • NVMeFix.kext

    • Sử dụng để fix power management và initialization trên nvme controller không phải của apple

    • Yêu cầu MacOS 10.14 và mới hơn

  • SATA-Unsupported.kext

    • Nói chung kext này để mở rộng support cho các sata controller

    • Để xác định có cần kext này hay không trước hết hãy thử boot không có nó

    • BigSur trở lên thì dùng kext CtlnaAHCIPort.kext để thay thế

      • Catalina không cần quan tâm

  • CPUTopologyRebuild.kext

    • Đây là một plugin đang thử nghiệm của Lilu dùng để tối ưu hoá Alder Lake's heterogeneous core configuration

    • Cách dùng

      • Enable ProvideCurrentCpuInfo

      • Thêm boot-arg -ctrsmt

    • Chỉ sử dụng trên Alder Lake

    • Chú ý

      • Kext này cũng dễ gây ra lỗi

      • Do đó nếu khi bạn thêm vào xuất hiện tình trạng bị giật hoặc khựng

      • Thì xoá nó đi nhé

Chi tiết về CpuTopologyRebuild

Khi sử dụng kext CpuTopologyRebuild cùng với quirk ProvideCurrentCpuInfo, bạn có thể tối ưu hóa cấu hình của các nhân và luồng trên bộ vi xử lý Alder Lake. Boot argument -ctrsmt có vai trò đặc biệt trong việc này, giúp cải thiện hiệu suất đơn luồng và tổng thể. Dưới đây là cách sử dụng và ý nghĩa của -ctrsmt:

  • Kích hoạt ProvideCurrentCpuInfo:

    • Quirk này cho phép nhận diện và kích hoạt cả P-Cores (nhân hiệu năng) và E-Cores (nhân tiết kiệm điện) trên các bộ vi xử lý Alder Lake.

    • Tuy nhiên, nó xử lý tất cả các nhân và luồng như nhau, không phân biệt giữa P-Cores và E-Cores, dẫn đến khả năng suy giảm hiệu suất đơn luồng hoặc hiệu suất thực tế.

  • Sử dụng boot argument -ctrsmt:

    • Khi kích hoạt -ctrsmt, các E-Cores sẽ được nhận diện như các luồng logic 3-way SMT của các P-Cores.

    • Ví dụ: Trên bộ vi xử lý Core i9, cấu hình này sẽ nhận diện bộ vi xử lý như có 8 nhân và 24 luồng.

    • Tùy chọn này giúp đạt được hiệu suất đơn luồng gần giống nhất với cấu hình khi các E-Cores bị vô hiệu hóa, giúp tối ưu hiệu suất cho các tác vụ yêu cầu hiệu suất cao.

  • Khi Hyper-Threading (HT) bị vô hiệu hóa:

    • Các E-Cores vẫn sẽ được nhận diện như một luồng logic của P-Cores, bất kể có hay không sử dụng -ctrsmt.

    • Điều này có nghĩa là -ctrsmt không chỉ cải thiện hiệu suất trong cấu hình có HT, mà còn giúp tối ưu hóa trong cấu hình không có HT, đảm bảo hệ thống luôn đạt hiệu suất tốt nhất có thể.

Sử dụng -ctrsmt cùng với kext CpuTopologyRebuild và quirk ProvideCurrentCpuInfo sẽ giúp bạn tận dụng tối đa hiệu suất của bộ vi xử lý Alder Lake, đặc biệt là trong các tác vụ yêu cầu hiệu suất đơn luồng cao.

  • RestrictEvents.kext

    • Patch các chức năng khác nhau của MacOS xem chi tiết tại đây

  • EmeraldSDHC

    • Hỗ trợ macOS kernel extension cho eMMC support

    • Hiện tại chỉ support eMMC/MMC card lên đến HS200 speeds

    • Kext này hiện đang trong quá trình hoàn thiện và có thể gặp phải perfomance kém hoặc không hoạt động trên mốt số thiết bị

      • SD card hiện không hỗ trợ tại thời điểm viết bài

  • SATA-RAID-unsupported.kext

    • Cho phép chuẩn Raid hoạt động trên mac thay vì AHCI

      • Dùng cho trường hợp bios không có tuỳ chọn ahci

        • Tuy nhiên mình không khuyến khích bạn dùng kext này thay vào đó có thể tham khảo mod bios tại đây

Laptop Input

Để biết loại keyboard và trackpad bạn đang sử dụng bạn có thể check thông qua device manager

Xem chi tiết tại đây

Hoặc dmesg | grep -i input tại linux

Bàn phím laptop đa phần đều sử dụng PS2 controller

Cho nên hầu hết bạn đều cần nó cho dù bạn sử dụng I2C, USB, hay SMBus trackpad.

PS2 Keyboards/Trackpads

  • Acidanthera's VoodooPS2.kext

    • Hỗ trợ các PS2 devices

      • Ví dụ: keyboard, trackpad PS2

    • Yêu cầu MacOS 10.11 và mới hơn

      • Để hỗ trợ MagicTrackpad 2 function

  • RehabMan's VoodooPS2.kext

    • Chức năng tương tự như VoodooPS2.kext

    • Nhưng cho các PS2 controller cũ hơn hoặc khi bạn không muốn sử dụng VoodooInput

    • Yêu cầu MacOS 10.6 và mới hơn

SMBus Trackpads

  • VoodooRMI.kext

    • Hỗ trợ Synaptics SMBus trackpads

    • Yêu cầu MacOS 10.11 và mới hơn để hỗ trợ Magic trackpad 2 functions

    • Phụ thuộc vào Acidanthera's VoodooPS2

  • VoodooSMBus.kext

    • Hỗ trợ cho ELAN SMBus Trackpads

    • Yêu cầu MacOS 10.14 và mới hơn

I2C/USB HID Devices

  • VoodooI2C.kext

    • Gắn vào I2C controllers để cho phép các plugin của kext giao tiếp với I2C trackpads

    • Các devices connect thông qua usb devices vẫn cần kext này

    • Nhưng chỉ một kext này thì không thể patch được i2c devices

      • Bắt buộc phải sử dụng kèm với 1 hoặc nhiều plugin bên dưới

Nếu bối rối không biết thêm plugin nào có thể thêm tất cả plugin vào vẫn không sinh lỗi

Connection typePluginNotes

Multitouch HID

VoodooI2CHID.kext

Có thể sử dụng với I2C/USB TouchscreensTrackpads

ELAN Proprietary

VoodooI2CElan.kext

ELAN1200+ yêu cầu VoodooI2CHID thay vì VoodooI2CElan.kext

FTE1001 touchpad

VoodooI2CFTE.kext

Atmel Multitouch Protocol

VoodooI2CAtmelMXT.kext

Synaptics HID

  • I2C Synaptic Trackpads

  • Chỉ yêu cầu VoodooI2C cho I2C mode

Alps HID

Có thể sử dụng với USB hoặc I2C Alps trackpads. Hầu hết được sử dụng trên Dell laptops và một số model HP EliteBook

Hãy nhớ muốn enable trackpad cả i2c và ps2 thì điều đầu tiên các bạn cần làm đó chính là patch battery

Xem chi tiết tại đây

Misc

  • ECEnabler.kext

    • Bỏ qua giới hạn 8 bit khi đọc EC fields

      • Giúp hỗ trợ Fix battery status trên nhiều devices

    • Yêu cầu OS X 10.7 và mới hơn

      • Không cần cho OSX 10.4 - 10.6

  • BrightnessKeys.kext

    • Fix hotkey điều chỉnh độ sáng màn hình một cách tự động

Thận trọng

Khi lần đầu khởi động boot tôi khuyên các bạn chỉ thêm các kext cơ bản để hạn chế lỗi

Trừ trường hợp các kext khác là bắt buộc phải có

1 số máy có thể sẽ cần thêm CpuTscSync

Source tham khảo: https://dortania.github.io/OpenCore-Install-Guide/ktext.html

Last updated