วิธีการติดตั้งแฮกอินทอช macOS Big Sur ด้วย OpenCore บนเครื่อง AMD
เมื่อปลายปี 2019 ผมได้ทำเครื่อง Hackinhosh บน เครื่อง AMD ไป ใช้งานได้ดีเลยทีเดียว แต่ไม่ได้ลงรายละเอียดว่าทำยังไง เพราะมันยุ่งยากมากจนคิดว่าคนทั่วไปไม่น่าจะทำได้สำเร็จ ผ่านไปหนึ่งปีมี macOS Big Sur ออกมาก็ถึงเวลาแล้วที่จะต้องอัพเกรด OS ใหม่ แต่แทนที่จะเล่าแต่ประสบการณ์เหมือนเดิม ครั้งนี้ผมจะลงรายละเอียดว่าผมทำยังไง เผื่อคนที่ติดเหมือนกันจะได้อ่านแล้วมีแนวทางไปต่อ แต่ต้องบอกก่อนว่าไม่เหมาะสำหรับมือใหม่ คนที่ไม่เคยเปิด Terminal พิมพ์คอมมานด์ลงหน้าจอดำๆ น่าจะทำไม่ได้แน่ๆ อย่าหาทำ! อาจจะใช้เวลาและความอดทนหน่อยในการทำ แต่ผลที่ได้คุ้มค่าแน่นอน วิธีการทำจะอ้างอิงจาก https://dortania.github.io/OpenCore-Install-Guide/ และจะไม่ลงรายละเอียดปลีกย่อยมากนัก จะเจาะจงกับสิ่งที่เกี่ยวกับเครื่องผมเท่านั้น ถ้าใครฮาร์ดแวร์ไม่เหมือนผมเลยก็ต้องไปดูที่ไกด์ต้นฉบับอย่างละเอียดเท่านั้น แต่จะพยายามให้ไม่ต้องเปิดไปยังเนื้อหาที่อื่นเพื่อความต่อเนื่องในการติดตั้ง
0. รู้ก่อนว่าเครื่องเราใช้ฮาร์ดแวร์อะไร
ของผมจะใช้ฮาร์ดแวร์ตามนี้ถ้าใครใช้เหมือนผมตรงๆ ก็น่าจะทำได้แน่นอน เปลี่ยน CPU RAM ได้แต่ เมนบอร์ด กับการ์ดจอ นี้ถ้าไม่ตรง ต้องดูกันอีกทีว่าใกล้เคียงมั๊ย การ์ดจอ Nvidia ใช้ไม่ได้แน่นอน!
- CPU — AMD Ryzen 9 3900X
- RAM — CORSAIR VENGEANCE RGB PRO 32GB (2 x 16GB) DDR4 DRAM 3200MHz C16
- Mainboard — Gigabyte 570x Aorus Master rev 1.0 (อัพเดต BIOS v. F31j) + Intel I211 Gigabit LAN
- Graphic card — Gigabyte Radeon RX570 Gaming 4GB.
- NVME drive — Samsung SSD 970 EVO Plus 250GB
- USB Drive — Sandisk Extreme 64GB Read 254MB/S Write 190MB/S เพื่อความเร็วในการใช้งาน
- ใช้สายแลนเพราะใช้ WiFi ไม่ได้และอินเทอร์เน็ตเร็วๆ เพื่อดาวน์โหลด macOS
1. เตรียม USB Drive ให้พร้อมติดตั้ง macOS
ผมจะใช้โปรแกรม GParted ใน Ubuntu (sudo apt install gparted)โดยเลือก USB Drive (ของผมเป็น /dev/sdc) แล้วไปที่เมนู Device->Create a partition table แล้วเลือก gpt เท่านั้นสำคัญมากๆ ถ้าไม่ได้ใช้ Linux แนะนำให้ทำตามขั้นตอนนี้แทน https://dortania.github.io/OpenCore-Install-Guide/installer-guide/#creating-the-usb
แล้วสร้างพาร์ทิชั้นเป็น FAT32 ตั้งชื่อว่า OPENCORE แล้วกดปุ่มเครื่องหมายถูกเพื่อ Apply
1.1 ทางลัด ใช้ไฟล์ OPENCORE-AMD-X570.zip ที่ผมทำ macOS Big Sur installer สำเร็จรูปไว้แล้ว
แตกได้โฟลเดอร์ com.apple.recovery.boot กับ EFI ไปวางใน USB Drive แล้วข้ามไปขั้นตอน 5 ได้เลย
https://drive.google.com/file/d/1rjl9G8lvkSMoiyeCnqW-7Bm4-IffAxhd/view?usp=sharing
ถ้าใครอยากได้ทุกอย่างสดใหม่ล่าสุดก็ทำตามขั้นตอนต่อไป
2. การดาวน์โหลดตัวติดตั้ง macOS
ผมใช้ Ubuntu Linux เป็นหลัก ติดตั้ง Python3 มาเรียบร้อยถ้าเครื่องใครไม่มีก็แนะนำ Anaconda เพราะมีไลบรารีครบถ้วนใช้ได้กับหลายโปรแกรมที่จำเป็นในงานนี้
2.1 ดาวน์โหลดตัว OpenCore ที่เป็พระเอกของเราที่ช่วยให้เราบูต macOS ได้ที่ https://github.com/acidanthera/OpenCorePkg/releases เลือกไฟล์ OpenCore-0.6.3-DEBUG.zip เพราะจะได้เห็น error ได้ถ้าเราทำอะไรผิด
2.2 แตกไฟล์ OpenCore มา เปิด terminal แล้วเข้าไปที่ OpenCore-0.6.3-DEBUG/Utilities/macrecovery แล้ว รันโปรแกรมด้วยคำสั่งต่อไปนี้เพื่อดาวน์โหลดตัวติดตั้ง macOS Big Sur แบบออนไลน์
python3 ./macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000 download
2.3 พอดาวน์โหลดเสร็จจะได้ไฟล์สองไฟล์คือ BaseSystem.dmg กับ BaseSystem.chunklist ให้ก็ไฟล์ไปวางที่ใน USB Drive ในโฟลเดอร์ com.apple.recovery.boot เป็นอันว่าเสร็จคาถาอันเชิญตัวติดตั้ง macOS Big Sur
3. การดาวน์โหลดไฟล์ที่จำเป็นสำหรับการติดตั้ง macOS
3.1 เริ่มด้วยการกอปปี้โฟล์เดอร์ EFI จาก OpenCore-0.6.3-DEBUG/X64 ลง USB Drive
3.2 ดาวน์โหลดไฟล์ SSDT-EC-USBX-DESKTOP.aml แตกลงไปที่ EFI/OC/ACPI เพื่อกำหนดว่าเครื่องเรามี Hardware layout อย่างไรในเฟิร์มแวร์
3.3 ดาวน์โหลดไฟล์ HfsPlus.efi แล้ววางไว้ที่ EFI/OC/Drivers แล้วลบไฟล์ อื่นนอกเหนือจากไฟล์ HfsPlus.efi และ OpenRuntime.efi ออกไปเหลือดังนี้
3.4 โหลดไฟล์ kexts ดังต่อนี้ โดยเลือกเวอร์ชันล่าสุด ตรง Assets โหลดเฉพาะ …RELEASE.zip
- ไฟล์ AMDRyzenCPUPowerManagement.kext.zip กับ SMCAMDProcessor.kext.zip ที่ https://github.com/trulyspinach/SMCAMDProcessor/releases
- https://github.com/acidanthera/AppleALC/releases
- ไฟล์ AppleMCEReporterDisabler.kext.zip ที่ https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/Extra
- https://github.com/acidanthera/Lilu/releases
- https://github.com/khronokernel/SmallTree-I211-AT-patch/releases
- https://github.com/acidanthera/VirtualSMC/releases
- https://github.com/acidanthera/WhateverGreen/releases
แล้วแตก zip แล้วเอาเฉพาะไฟล์ .kext ไปวางที่โฟลเดอร์ EFI/OC/Kexts แล้วจะได้ผลลัพท์ดังนี้
3.5 ลบไฟล์ใน EFI/OC/Tools ให้หมด
3.6 โหลดไฟล์ patches.plist ที่ใช้แก้ CPU AMD ให้ใช้งาน macOS ได้ที่ https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/17h_19h เก็บเอาไว้ใช้ในขั้นตอนต่อไป
4. การสร้างไฟล์ config.plist สำหรับการตั้งค่าเพื่อบูต macOS
4.1 ติดตั้งโปรแกรม ProperTree ที่ใช้แก้ไขไฟล์ config.plist ตาม https://github.com/corpnewt/ProperTree หรือตามนี้สำหรับ Ubuntu Linux ลง TK-GUI ด้วยคำสั่ง sudo apt install python3-tk
git clone https://github.com/corpnewt/ProperTree
python3 ./ProperTree/ProperTree.command
4.2 ทำการก็อปปี้ไฟล์ plist จากตัวอย่าง ไฟล์ OpenCore-0.6.3-DEBUG/Docs/Sample.plist ไปยัง USB drive ที่ EFI/OC/config.plist
4.3 เปิดไฟล์ EFI/OC/config.plist ด้วยโปรแกรม ProperTree ขึ้นมาจะได้ไฟล์ดังนี้ (ถ้าไม่เจอหน้าต่าง browse ไฟล์ มันจะแอบอยู่ข้างหลัง)
4.4 แก้ตรง ACPI -> Add ให้เหลือก้อนเดียว คลิ๊กเปลี่ยน Enabled เป็น True แล้วใส่ค่า Path เป็นชื่อไฟล์ SSDT-EC-USBX-DESKTOP.aml ที่เราเอาใส่ในโฟล์เดอร์ ACPI ในขั้นตอน 3.2 และลบ warning ออกไป จะได้ดังนี้
4.5 แก้ตรง Booter-> Quirks ตรงที่ไฮไลท์ตามรูปด้านล่าง
4.6 แก้ตรง DeviceProperties -> Add ลบ PciRoot(0x0)/PCI… ทิ้ง ได้ดังนี้
4.7 แก้ตรง Kernel -> Add เป็นเฉพาะไฟล์ .kext ที่อยู่ในโฟล์เดอร์ EFI/OC/Kexts ที่เราโหลดมาในขั้นตอนที่ 3.4 แล้วเอาก้อนที่เราไม่มีไฟล์ออกไป เรียงลำดับดังนี้
4.8 แก้ Kernel ->DummyPowerManagement เป็น True
4.9 ตรง Kernel -> Patch ลบ Patch ทิ้งแล้ว เปิดไฟล์ patches.plist ในขั้นตอน 3.6 ด้วยโปรแกรม ProperTree แล้วคลิ๊กขวา copy ตรง Patch มาวางที่ไฟล์ config.plist ตรงที่เพิ่งลบไป
4.10 ตรง Kernel -> Quirks แก้ตามไฮไลท์ด้านล่าง
4.11 ตรง Misc แก้เป็นค่าตามที่ไฮไลท์
4.12 ตรง NVRAM แก้ boot-args เป็น -v keepsyms=1 debug=0x100 alcid=1 npci=0x2000 ตรงนี้สำคัญมากถ้าไม่แก้จะติดตรง [PCI Configuration begin]และค่า prev-lang:kbd เป็นว่างเปล่า ตามด้านล่าง
4.13 ตรง Platforminfo ให้ติดตั้งโปรแกรม GenSMBIOS ในการสร้างข้อมูลไบออสเถื่อนให้เป็น iMacPro1,1
git clone https://github.com/corpnewt/GenSMBIOS
cd GenSMBIOS
chmod +x GenSMBIOS.command
python3 ./GenSMBIOS.command
รันโปรแกรม GenSMBIOS
- กด 1 เพื่อโหลด Serial ปลอม
- กด 2 แล้วใส่ตำแหน่งไฟล์ config.plist ที่เราแก้ไขอยู่
- กด 3 เพื่อสร้างไบออสเถื่อนใส่ iMacPro1,1
- กด 4 เพื่อสร้าง UUID
- กด Q เพื่อออกโปรแกรม เป็นอันว่า ที่ ProperTree ให้เลือกเมนู Reload From Disk เพื่อเอาค่า Platforminfo ใหม่จากที่เพิ่งสร้างเมื่อกี้ และแก้ตรง Generic -> ROM เป็นเลขอะไรก็ได้มั่วๆ
4.14 ตรง UEFI -> Driver ลบให้เหลือสองก้อน คือ HfsPlus.efi กับ OpenRuntime.efi ดังนี้
4.15 เปิดเว็บ https://opencore.slowgeek.com/ เพื่ออัพโหลดไฟล์ config.plist ของเราเพื่อตรวจสอบความถูกต้องและแก้ถ้าเจออะไรผิดปรกติ เป็นอันเสร็จพิธีพร้อมที่จะบูท macOS จาก USB Drive แล้ว
5. การบูตเพื่อติดตั้ง macOS
ก่อนอื่นต้องเข้าไปที่ bios ตั้งค่าต่างๆ ไม่ว่าจะเป็น
- Boot drive ให้เลือก USB Drive ที่เราทำ
- ปิด Fast Boot
- เปิด CSM Support
- Boot ผ่าน UEFI เท่านั้น
การติดตั้งจะเลือก Menu แรก เมื่อบูตเข้าไปแล้วก็อย่างเพิ่งเข้าตัวติดตั้งเลยให้เข้าไปที่ Disk Utility ก่อนเพื่อทำการฟอร์แมตพื้นที่ที่เราจะลง macOS Big Sur โดยพาร์ททิชั่นแรกจะให้เป็นที่อยู่ของ EFI เหมือนกับ EFI ใน USB Drive ขนาด 200mb เป็น FAT32 พาร์ททิชั่นที่สองที่เหลือให้เป็น APFS แบบไหนก็ได้แล้วแต่ความต้องการ
เมื่อเข้าสู่ตัวติดตั้งแล้วก็ให้เลือกพื้นที่ APFS ที่เพิ่งฟอร์แมตไป รอติดตั้งตามปกติมันจะรีสตาร์ทเองหลายๆ รอบก็ปล่อยมันไป
7. ขั้นตอนเมื่อติดตั้ง macOS Big Sur สำเร็จแล้ว
ฉลอง!! แต่ยังไม่เสร็จสิ้นเพราะตอนนี้เรายังบูทผ่าน USB drive อยู่ เพื่อที่จะทำให้ระบบมันบูตด้วยตัวของมันเองได้ก็จะต้องก็อปโฟลเดอร์ EFI ใน USB ไปวางให้ตรงพื้นที่ที่เตรียมไว้ 200MB ขั้นตอนก่อนหน้า แต่ใน macOS อาจจะมองไม่เห็นก็ให้ใช้โปรแกรม MountEFI เพื่อเปิด EFI พาร์ทิชันให้เอาโฟล์เดอร์ EFI ของ OPENCORE ไปทับ ดึงเอา USB Drive ออก แล้วก็เลือก Boot Option ใน BIOS เป็น OpenCore ในไดร์ฟที่เครื่องได้แล้ว เป็นอันว่าสุดจริงๆ