Tìm hiểu Clover Configurator (phần 1)
Nhân dịp khai trương web caidatmacos và blog caidatmacos, mình sẽ viết một seri tìm hiểu về Clover Configurator với hy vọng sẽ giúp các bạn hiểu được tác dụng của công cụ cực mạnh, không thể thiếu trong cài đặt macOS này này. Lưu ý rằng mình chỉ đề cập đến các chức năng hay dùng, bạn nào biết tiếng Anh có thể đọc trên trang wiki của họ
Giới thiệu
+ Clover Bootloader (Clover) là một chương trình khởi động được xây dựng nhằm hỗ trợ việc cài đặt macOS trên PC Laptop dùng chip Intel không phải của Apple. Là một sự thay thế hoàn hảo cho trình khởi động Chameleon trước kia khi vừa có thể chạy trên cả môi trường UEFI lẫn Legacy, giao diện đồ hoạ đẹp mắt, đa dạng tính năng, dễ dàng tuỳ biến …
+ Clover configurator hiểu đơn giản là một chương trình để chúng ta có thể tuỳ biến các tuỳ chọn của Clover thông qua việc chỉnh sửa file config.plist thường nằm ở EFICLOVERconfig.plist (đúng với cả hai kiểu cài Legacy và UEFI)
Cách sử dụng Clover Configurator
1. Giao diện của Clover Configurator
+ Phần Configuration Acquired hiển thị các file config.plist mà chương trình tìm ra. Chúng ta cần click vào một trong những file đó để có thể bắt đầu chỉnh sửa. Nếu không thấy file nào hiện ra hãy đọc phần “Mount EFI” ngay dưới đây
+ Phần Section chứa tất cả các nhóm tuỳ chọn mà ta có thể tuỳ biến cho file config.plist, đây là nội dung chính của seri này
+ Phần Tools có chứa các công cụ hỗ trợ mà phần chúng ta cần quan tâm ngay đó là Mount EFI
2. Tab “Mount EFI”
2.1. Ngắn gọn: các bạn ấn hết các nút Partition, sau đó ấn nút hình ngôi nhà ở góc dưới bên trái cửa sổ chương trình cho đến khi bạn thấy file config.plist nào đó hiện ra để chỉnh sửa
2.2. Dài dòng:
+ Phần Parition Scheme hiển thị tất cả các phân vùng mà macOS nhìn thấy trên máy của bạn. Ta cũng chưa cần quan tâm đến phần này
+ Phần EFI Parition các vị trí mà ở đó phân vùng khởi động ẩn EFI được tìm thấy. Nếu cài đúng và chuẩn thì Clover sẽ được chứa trong phân vùng EFI nằm cùng với Current Boot Disk. Còn nếu không thường thì nó sẽ nằm ở phân vùng EFI của USB cài mac, hay ở một phân vùng FAT32 không ẩn nào đó trên ổ cứng của bạn. Nếu bạn biết Clover khởi động từ đâu thì Mount Parition cái ổ đó lên
3. Tab ACPI
Tab này quản lý về các bảng ACPI của máy. Nôm na là các bảng ACPI này sẽ giúp hệ điều hành giao tiếp với phần cứng thông qua các biến và hàm được lập trình trong đó. Trong bảng ACPI thường có một bảng chính gọi là DSDT và nhiều bảng phụ gọi là SSDT
3.1. Phần Patches
3.1.1. Phần này dùng để đổi tên các biến hoặc hàm trong bảng ACPI gốc ngay trước khi hệ điều hành nạp chúng (gọi là dynamic patch – patch động). Điều này là một cải tiền lớn so với Chameleon hồi xưa, giả sử muốn đổi GFX0 thành IGPU thì bạn phải trích xuất bảng DSDT gốc, mở ra đổi tên, xong lưu lại và chỉ định cho bootloader nạp file DSDT.aml đó.
3.1.2. Tác dụng của việc đổi tên hàm (các bạn có thể tham khảo bộ hotpatch của Rehabman)
+ Đổi tên giúp kext có thể hoạt động: ví dụ đổi device HDAS hoặc AZAL thành HDEF để kext AppleHDA có thể nhận ra vị trí chứa phần cứng về âm thanh; đổi device GFX0 thành IGPU để kext AGPM có thể nhận ra card màn hình onboard và kích hoạt chế độ quản lý điện năng
+ Đổi tên có thể giúp bổ sung thuộc tính cho device đó: ví dụ trong bộ hotpatch, Rehabman có đổi EHC1 thành EH01 và sử dụng 1 SSDT phụ SSDT-EH01 chứa method DSM để bổ sung các thông tin về điện đóm cho cổng USB 2.0 (EH01)
+ Đổi tên để thay thế hoặc vô hiệu hoá hàm: cũng trong bộ hotpatch Rehabman đổi _DSM thành XDSM để vô hiệu hoá toàn bộ các method khai báo thông tin trong bảng ACPI gốc; đổi _PTS thành ZTPS sau đó sử dụng SSDT-PTSWAK chứa method _PTS khác để đánh lừa hệ điều hành nạp cái _PTS đó
3.1.3. Cách sử dụng
+ Đổi tên đơn giản: kiểu GFX0 thành IGPU thì chỉ cần đổi 2 cái tên này từ text sang hex là được (find 47465830 replace thành 49475055). Lưu ý tên ACPI phải có 4 ký tự. Vậy nên khi đổi EC0 thành EC thì ta phải tự hiểu là EC0_ thành EC__ (2 gạch dưới)
+ Đổi tên kiểu phức tạp như đổi cả 1 method thì trình độ của mình cũng chưa nghiên cứu tới, các bạn có thể tham khảo bài này
3.2. Phần Fixes (ít dùng, có thể bỏ qua)
3.2.1. Phần có số 1 là các patch tự động có sẵn. Thông tin thêm các bạn tham khảo hotpatch Rehabman và trang Wiki của Clover Configurator, mình cũng không hay động đến phần này lắm
3.2.2. Phần số 2 cho phép chúng ta chặn không load method DSM (khai báo thông tin) của một thiết bị nào đó khi khởi động. Có một số thiết bị để bạn chọn sẵn. Còn lẹ nhất thì ấn nút Drop OEM_DSM.
3.2.3. Phần DSDT name: mặc định nó sẽ load file DSDT.aml. Tuy nhiên bạn có thể dùng 1 tên khác theo ý muốn và đặc biệt nếu bạn lỡ patch DSDT lỗi thì có thể đổi nó thành abcxyz.aml để nó không load file DSDT lỗi đấy nữa
3.3. Phần Drop Table
Tác dụng của phần này là ngăn cho 1 hoặc nhiều bảng SSDT load trong khi khởi động (Drop). Dấu cộng để thêm bảng, dấu trừ để xoá bảng
+ Phần Signature có một số bảng có sẵn, thường thì bảng DMAR lúc nào cũng drop, nếu máy core i đời 3 trở xuống mà không lên card màn hình thì có khả năng phải drop thêm cả bảng MCFG nữa. Nếu bảng mà bạn muốn drop không có trong này thì chọn SSDT và đọc tiếp. Giả sử ta muốn Drop bảng sau (để ý mấy dòng xanh lá cây từ số 9 trở xuống)
+ Phần Type và String chúng ta sẽ chỉ cho Clover phải drop bảng SSDT nào: nếu drop theo tên thì sẽ điền Type = Tableid, String = DH61WW (đừng quên khoảng trắng phía sau). Còn nếu drop theo dung lượng file thì điền Type = Lenght, String = 877. Chọn một trong 2 cách sau
3.4. Phần SSDT
Mình hay dùng một số mục sau:
+ Drop OEM: giữ lại DSDT và drop sạch những cái còn lại. Ví dụ hình dưới là 1 bảng ACPI đầy đủ của 1 máy
Cái này là hồi xưa mình lấy 1 cái SSDT card rời có sẵn để patch tắt nó đi cho tiết kiệm pin. Đến lúc thả vào mà không drop OEM thì hệ điều hành sẽ load 2 bảng thông tin về card rời, dẫn đến xung đột nhau và panic.
+ Plugin Type: nếu bạn muốn tự tạo SSDT quản lý điện năng CPU bằng ssdtPRGen của Piker thì để = 0, còn nếu muốn máy tự động quản lý điện năng (hỗ trợ cpu đời 4 trở lên) thì để = 1
Hy vọng các bạn không quá sock sau khi đọc bài này. Hẹn gặp lại ở tab tiếp theo.