Tìm hiểu Phần Cứng

Xác định phần cứng hỗ trợ cài đặt Hackintosh

Võ Nguyễn Hoàng Long
2021-09-30
21 min

Chi tiết phần cứng hỗ trợ

CPU

  • Tất cả CPU AMD trên laptop đều không hỗ trợ cài đặt Hackintosh

    🤔 Bởi vì trên thị trường không tồn tại laptop AMD có card đồ hoạ hỗ trợ Hackintosh

  • CPU AMD Bulldozer (15h), Jaguar (16h) and Ryzen (17h) CPUs hỗ trợ Desktop

    ⚠️ Nhiều tính năng trên macos hoàn toàn ko hoạt động và 1 số bị lỗi trên CPU AMD bao gồm:

    • Ảo hóa dựa trên Apple HV (VMWare, Parallels, Docker, Android Studio,….) bị vô hiệu hóa VirtualBox được hỗ trợ.
    • Các phần mềm Adobe.
    • Phần mềm 32-bit.
    • Và 1 vài app audio.

  • Mọi CPU Intel từ đời Yonah đều được hỗ trợ

  • CPU 32bit được hỗ trợ từ 10.4.1 --> 10.6.8

  • CPU 64bit được hỗ trợ từ 10.4.1+

SEE hỗ trợ
  • SSE3 : hỗ trợ tất cả các version OS X/macOS.
  • SSSE3: hỗ trợ tất cả các version 64 bit OS X/macOS.
  • SSE4: hỗ trợ 10.12+
  • SSE4.2: hỗ trợ 10.14+
Firmware hỗ trợ
  • 10.4.1-10.4.7 yêu cầu EFI32 (IA32)
  • 10.4.8-10.7.5 hỗ trợ cả 32 bit lẫn 64 bit.
  • 10.8+ yêu cầu EFI64 (X64).
  • 10.7-10.9 yêu cầu OpenPartitionDxe.efi để có thể boot được vào phần vùng Recovery.
Yêu cầu của kernel
  • 10.4-10.5 yêu cầu kext 32-bit do chỉ support 32-bit kernelspace.
  • 10.6-10.7 support cả 32-bit và 64-bit.
  • 10.8+ yêu cầu kext 64-bit do chỉ support 64-bit kernelspace.
Nhân và luồng
  • Từ 10.10 có thể không boot được với 24 luồng nó sẽ gặp lỗi mp_cpus_call_wait() timeout panic.
  • Từ 10.11+ bị giới hạn 64 luồng.
  • cpus=1 có thể là giải pháp giúp disable hyperthreading.

Lưu ý

  • Lilu yêu cầu version 10.8+ (đối với OS X thì nên dùng FakeSMC)
  • Đối với version 10.6 và cũ hơn sẽ yêu cầu RebuildAppleMemoryMap.

Bảng version hỗ trợ cài CPU Intel

CPU-GENMIN VERSIONMAX VERSIONGHI CHÚCPUID
Pentium 410.4.110.5.8Only used in dev kits0x0F41
Yonah10.4.410.6.832-Bit0x0006E6
Conroe, Merom10.4.710.11.6No SSE40x0006F2
Penryn10.4.1010.13.6No SSE4.20x010676
Nehalem10.5.6CurrentN/A0x0106A2
Lynnfield10.6.3No iGPU support 10.14+0x0106E0
Westmere, Clarkdale, Arrandale10.6.70x0206A0(M/H)
Sandybirdge10.6.70x0206A0(M/H)
Ivy Bridge10.7.3No iGPU support 11+0x0306A0(M/H/G)
Ivy Bridge-E510.9.2N/A0x0306E0
Haswell10.8.50x0306C0(S)
Broadwell10.10.00x0306D4(U/Y)
Skylake10.11.00x0506e3(H/S) 0x0406E3(U/Y)
kaby Lake10.12.40x0906E9(H/S/G) 0x0806E9(U/Y)
coffee Lake10.12.60x0906EA(S/H/E) 0x0806EA(U)
Amber Whiskey Comet Lake10.14.10x0806E0(U/Y)
Comet Lake10.15.40x0906E0(S/H)
Ice Lake0x0706E5(U)
Rocket LakeRequires Comet Lake CPUID0x0A0671
Tiger LakeN/AN/AUntested0x0806C0(U)

GPU

GPU AMD

  • Nhân GCN được hỗ trợ trên các phiên bản mới nhất

  • Các APU AMD không được hỗ trợ.

  • Nhân Lexa không được hỗ trợ chính thức.

GPU Nvdiva

  • GeForce 900 series (Maxwell 9XX), GeForce 10 series (Pascal 10XX) được hỗ trợ giới hạn đến macOS 10.13 (High Sierra)

  • GeForce 20 series, GeForce 16 series không được hỗ trợ.

  • GeForce 30 series cũng không được hỗ trợ.

  • GeForce 600 series, GeForce 700 series (Kepler) vẫn đang được hỗ trợ hiện tại là Monterey beta 9 (từ Monterey phải dùng tool Geforce-Kepler-patcher để patch không native, xem hướng dẫn tại đây)

GPU Intel

  • iGPU GT2 được hỗ trợ.

  • GMA series được hỗ trợ 1 số dòng, xem chi tiết tại đây.

  • iGPU GT1 trên pentium, Celerons và Atoms không được hỗ trợ.

Bảng hỗ trợ iGPU intel

GPUMIN VERSIONMAX VERSIONGHI CHÚ
3rd Gen GMA10.4.110.7.5Requires 32-bit kernel and patches
4th Gen GMA10.5.0
Arrandale(HD Graphics)10.6.410.13.6Only LVDS is supported, eDP and external outputs are not
Sandy Bridge(HD 3000)10.6.7N/A
Ivy Bridge(HD 4000)10.7.311.6.1
Haswell(HD 4XXX, 5XXX)10.8.5Current
Broadwell(5XXX, 6XXX)10.10.0
Skylake(HD 5XX)10.11.0
Kaby Lake(HD 6XX)10.12.4
Coffee Lake(UHD 6XX)10.13.6
Comet Lake(UHD 6XX)10.15.4
Ice Lake(Gx)10.15.4Requires -igfxcdc and -igfxdvmt in boot-args
iger Lake(Xe)N/AN/ANo drivers available
Rocket LakeN/AN/ANo drivers available

Bảng hỗ trợ iGPU AMD

GPUMIN VERSIONMAX VERSIONGHI CHÚ
X80010.3.x10.7.5yêu cầu kernel 32 bit
X1000
TeraScale10.4.x10.13.6
TeraScale 2/310.6.x
GCN 110.8.3Current
GCN 2/310.10.x
Polaris 10,2010.12.1
Vega 1010.12.6
Vega 2010.14.5
Navi 1010.15.1yêu cầu agdpmod=pikera trong boot-arg
Navi 2011.4Hiện tại 1 vài navi 21 vẫn hoạt động

Bảng hỗ trợ dGPU Intel

GPUMIN VERSIONMAX VERSIONGHI CHÚ
GeForce 610.2.x10.7.5yêu cầu kernel 32 bit và NVCAP patching
GeForce 710.4.xyêu cầu NVCAP patching
Tesla10.4.x10.13.6
Tesla v210.5.x
Fermi10.7.x
Kepler10.7.xcurrentmacos 12 yêu cầu Geforce-Kepler-patcher
Kepler v210.8.x
Maxwell10.10.x10.13.6yêu cầu NVIDIA Web Drivers
Pascal10.12.4
TuringN/AN/ANo drivers available
Ampere

Bo mạch chủ (Motherboard)

Hầu hết các bo mạch chủ đều được hỗ trợ miễn là CPU được hồ trợ. Hồi trước các main B550 gặp 1 vài vấn đề, tuy nhiên hiện nay các bạn chỉ cần thêm SSDT-CPUR và SetupVirtualMap=false.

Ổ cứng

Phần lớn các ổ cứng đều được hỗ trợ ngoại trừ một số dòng sau đây:

  • Các ổ Samsung PM981, PM991 and Micron 2200S NVMe SSDs hỗ trợ không tốt do đó bạn cần NVMeFix.kext trong EFI ==> OC ==> Kext và snaps hoặc EFI ==> Clover ==> Kext ==> other

  • Tuy nhiên ổ Samsung 970 EVO Plus NVMe SSDs trước đó gặp 1 vài vấn đề nhưng ở bản FIRMWARE mới nhất đã được fix các bạn có thể tải ở đây.

  • Intel 600p hỗ trợ không tốt nó có rất nhiều bug (khuyến khích nên tránh | cần NVMeFix để khởi động).

NIC (Card mạng LAN)

Hầu hết đều được hỗ trợ tốt (xem bài patch LAN ở đây)

Tuy nhiên 1 số card vẫn gặp lỗi, ví dụ:

  • Intel I225 2.5Gb NIC trên các dòng Desktop cao cấp Comet Lake các bạn có thể tham khảo cách fix tại đây.
  • Intel I350 1Gb server NIC được tìm thấy trên các dòng intel và Supermicro server và đây là cách fix các bạn add mục:
PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0) | dictionray -> device-id | data | 33150000

Đôi khi các bạn sẽ gặp kernel panic xem cách fix chi tiết tại đây.

  • Intel 10Gb server NICs cách fix cho các dòng X520 and X540 chipsets tại đây.

WiFi và Bluetooth

Hầu hết đều được hỗ trợ bao gồm các card:

  • Intel
  • Broadcom
  • Atheros

Xem chi tiết tại đây.

Xác định phần cứng

CPU

Ta dễ thấy đối với những guide hướng dẫn hackintosh hiện nay hầu hết đều dùng Code Name . Để xác định được code name của CPU và iGPU ta làm như sau:

  • B1: Bạn chuột phải vào biểu tượng windows ở góc dưới cùng bên trái và chọn system.

  • B2: Copy mục processor.

  • B3: Ta tiến hành search mục processor trên trình duyệt.

  • B4: Các bạn tiến hành mở kết quả tìm kiếm có domain là ark.intel.com

  • B5: Bạn sẽ chú ý vào phần tên mã hoặc code name. Đây chính là code name CPU của bạn.

    như ở đây ta có code name là Comet Lake

iGPU

Để có thể patch được iGPU thì ta phải xác định được iGPU name. Làm như sau:

  • B1: Ta sẽ tiến hành search processor trên trình duyệt và mở trang ark.intel.com như hướng dẫn ở CPU.

  • B2: Các bạn chú ý vào mục Đồ họa Bộ xử lý --> Đồ họa bộ xử lý ‡

    Đây chính là iGPU name của bạn.

    ở đây igpu name là HD4000

Chipset và Mainboard

Trước hết ta sẽ cần tìm hiểu chipset là gì? Chipset máy tính là một mạch tích hợp giúp xử lý giao tiếp giữa CPU, RAM, bộ lưu trữ và các thiết bị ngoại vi khác. Chipset xác định số lượng thành phần tốc độ cao hoặc thiết bị USB mà bo mạch chủ của bạn có thể hỗ trợ. Chipset thường bao gồm một đến bốn chip và các bộ điều khiển tính năng cho các thiết bị ngoại vi thường được sử dụng, như bàn phím, chuột hoặc màn hình.

Vậy còn mainboard là gì? Mainboard hay main máy tính hay bo mạch chủ là một bảng mạch đóng vai trò nền tảng trên máy tính, laptop có tác dụng kết nối các linh kiện bên trong thành thể thống nhất. Mainboard PC sẽ nằm ở thùng máy, hoặc tích hợp đằng sau màn hình đối với máy tính AIO.

Để xác định được mã của chúng ta sẽ làm như sau

Dùng system info

  • B1: Chuột phải vào logo Windows ở góc dưới cùng bên trái và search System Information.

  • B2: Ta chú ý vào dòng Baseboard manufacturer (đây là dòng hiện thị main) và Baseboard product (đây là dòng hiển thị chipset).

    Nhưng một số main sẽ không hiển thị chipset vậy ta sẽ tiến hành làm như sau

Thông qua device manager

  • B1: mở device manager

  • B2: chọn tới tab IDE ATA/ATAPI controllers

  • B3: Chọn properties ta sẽ có thể thấy thế hệ chipset

    299460458_838685037052875_6042626987910816592_n.png

Audio Codec

  • B1: Các bạn tải aida64 tại đây.

  • B2: Các bạn sẽ vào tab Multimedia --> PCI/PnP Audio ở đây ta sẽ có thể thấy audio codec.

Network Controller models

  • B1: Các bạn tải aida64 tại đây.

  • B2: Các bạn sẽ chú ý đến mục sau Network --> PCI/PnP Network.

Drive Model

  • B1: Chuột phải vào logo Windows ở góc cuối bên trái và chọn device manager.

  • B2: Bạn chọn vào disk ở đây ta sẽ có được tên ổ cứng.

dGPU

  • B1: Bạn nhấn tổ hợp phím Windows + R.

    Và gõ dxdiag sau đó enter.

  • B2: Hệ thống sẽ mở DirectX Diagnostic Tool và bạn hãy chuyển đến tab render chú ý đến dòng name.

Keyboard, Trackpad and Touchscreen Connection Type

  • B1: Các bạn tải aida64 tại đây

  • B2: Các bạn truy cập vào đường dẫn Devices --> Physical Devices --> PnP Devices ở đây các bạn sẽ tiến hành tìm kiếm name Touchpad.

Xác định location path

Trước tiên ta cần tìm hiểu location path là gì? Nó là đường dẫn đến devices trong hệ thống và thường được hệ thống đọc dưới 2 dạng là ACPI path và Device pathACPI path thường được sử dụng trong việc patch DSDT còn Device path thường được dùng trong config.plist để inject properties của các Device.

  • B1: Các bạn nháy chuột phải vào biểu tượng Windows ở góc dưới bên trái và chọn device manager.

  • B2: Tiến hành chuột phải vào device cần lấy location path và chọn properties.

  • B3: Chọn tab Details --> location paths.

  • B4: Ta sẽ tiến hành chuyển value vừa lấy được ở trên về dạng path để có thể sử dụng.

//value mặc định
PCIROOT(0)#PCI(1C01)#PCI(0000)
ACPI(_SB_)#ACPI(PCI0)#ACPI(RP02)#ACPI(WLAN)

//Device path mặc định
PCIROOT(0)#PCI(1C01)#PCI(0000)

//ACPI path mặc định 
ACPI(_SB_)#ACPI(PCI0)#ACPI(RP02)#ACPI(WLAN)

//Convert Device path mặc định
PCIROOT(0)#PCI(1C01)#PCI(0000)
# Tiến hành chuyển dấu "#" thành dấu "/"
PCIROOT(0)/PCI(1C01)/PCI(0000)
# Ta tiến hành chia các giá trị nhỏ trong "()" thành các cặp 2 số. Nếu cặp số không bắt đầu bằng số "0" thì thêm số "0" vào trước
PCIROOT(00)/PCI(01C 01)/PCI(00 00)
# Viết thế chữ "x" vào giữa các cặp 2 chữ số
PCIROOT(0x0)/PCI(0x1C 0x1)/PCI(0x0 0x0)
# chuyển các dấu cách trong ngoặc thành dấu ","
PCIROOT(0x0)/PCI(0x1C,0x1)/PCI(0x0,0x0)

// Convert ACPI path nguyên mẫu
# Ta tiến hành giữ lại các ký tự trong ngoặc những ký tự khác thì lược bỏ 
_SB_ PCI0 RP02 WLAN
# Tiếp đó tiến hành thay dấu cách bằng dấu "."
_SB_.PCI0.RP02.WLAN

Xác định vendor id và device id của usb controller

Khi tiến hành map usb các bạn cần xác định device id và vendor id để sử dụng đúng kext. Việc này rất dễ thực hiện ở mac nhưng khi không có mac thì các bạn làm theo sau:

  • B1: chuột phải vào biểu tượng windows chọn device manager

  • B2: chuột phải vào tên usb controller và chọn Properties

tên usb controller thường bắt đầu bằng Intel (R)

  • B3: tới tab Details và chọn Hardware ID và nhìn vào dòng đầu tiên

    Ở đây ta có vendor id là 8086 device id là 1E31

Last Updated: