Chi tiết về ACPI
Có một câu hỏi chung dành cho các hackintosher. Đó là SSDT, DSDT và các bản patch rename thật sự là gì và cách mà chúng hoạt động như thế nào?
Guide này sẽ giải đáp tất cả những thứ mà bạn đang thắc mắc
Sơ lược về ACPI
ACPI là gì?
ACPI là viết tắt của cụm từ Advanced Configuration & Power Interface.
Đây là một dự án được phát triển bởi Intel, Microsoft, Toshiba,.... và còn nhiều hãng khác
Đây cũng là những người sáng lập nên ACPI special interest group
Viết tắt là ACPI SIG.
Nó là diễn đàng đầu tiên về ACPI và cũng là cơ sở để ACPI phát triển như ngày hôm nay
Vào tháng 10/2013 các nhà phát triển ban đầu của ACPI SIG đã đồng ý chuyển tất cả sang UEFI forum
Và nơi đây cũng chính là nơi mọi sự phát triển về tương lai của ACPI được tiến hành
Công dụng thực của ACPI?
Hiểu một cách nôm na thì ACPI có công dụng xác định giao diện giữa phần mềm hệ thống BIOS hoặc UEFI và hệ điều hành, giao diện trừu tượng hóa phần cứng.
Nó cung cấp cho hệ điều hành các thông tin cơ bản của phần cứng để từ đó kiểm soát và phân phối hợp lý sức mạnh của các thiết bị phần cứng máy tính
Với ACPI, hệ điều hành có thể tắt các thiết bị phần cứng khác nhau khi cần theo tình hình thực tế của thiết bị.
Và bên dưới là hình ảnh minh hoạt cho "công việc" của ACPI
Thêm nữa bản ACPI mới nhất tính đến thời điểm viết bài là phiên bản 6.5 được phát hành vào tháng 8 năm 2022
Sự thay đổi của ACPI
Trước hết bạn cần biết mỗi một mainboard của máy tính đều có một hệ thống các file ACPI được lưu trữ trong BIOS hoặc UEFI
Số lượng và nội dung của các file ACPI là khác nhau cho từng mainboard và chipset
Hơn nữa nó còn có sự thay đổi giữa các phiên bản BIOS khác nhau
Đó cũng là nguyên nhân tại sao khi update bios bạn phải patch lại DSDT nếu static patch hoặc phải dump lại DSDT
Các thay đổi này tuy không nhiều nhưng ảnh hưởng của nó đối với việc hackintosh là không thể chối cãi
Bản chất của ACPI
ACPI theo nghĩa đen chỉ là một tập hợp của nhiều file văn bản được chuyển thể thành mà nhị phân
Để cung cấp cho hệ điều hành một số thông tin cơ bản về phần cứng được sử dụng
Trong đó DSDT và SSDT chỉ là 2 trong số rất nhiều file của hệ thống ACPI
Nhưng những file này lại vô cùng quan trọng đối với việc hackintosh nói riêng và hệ thống ACPI nói chung
Một số file ACPI cơ bản:
RSDP, SDTH, RSDT, FADT, FACS, DSDT, SSDT, MADT, SBST, XSDT, ECDT, SLIT, SRAT
Hệ thống ACPI, thông qua các tập tin .aml, cung cấp một phương thức tiêu chuẩn hóa để hệ điều hành hiểu cấu hình phần cứng của một máy tính.
Nó chỉ mô tả phần cứng nhưng không có khả năng hoạt động như một driver.
Thay vào đó, nó cho phép hệ điều hành quản lý phần cứng hiệu quả bằng cách sử dụng thông tin chi tiết được cung cấp trong các bảng ACPI.
Sự phân cấp trong hệ thống ACPI
Trong ACPI subsystem, DSDT đóng vai trò Differentiated System Description Table
tạm dịch là bản mô ta đặc tính hệ thống
Cụ thể các thiết bị ngoại vi và tính năng phần cứng hệ thống của nền tảng sẽ được mô tả trong DSDT.
Nếu hiểu theo một chiều hướng nào đó thì các đặc tính của hệ thống sẽ được DSDT định nghĩa
Và DSDT sẽ được load khi khởi động thiết bị
Tiếp theo là SSDT đóng vai trò Secondary System Description Tables
tạm dịch là bản mô tả đặc tính hệ thống thứ cấp
Và SSDT sẽ được load trong thời gian chạy
Cuối cùng ACPI được khởi tạo sau POST, hệ điều hành đọc bảng ACPI và sử dụng thông tin này để cấu hình và quản lý phần cứng.
Hiểu đơn giản ta có thể xem DSDT là 1 bản game chính thức còn SSDT là 1 DLC đi kèm
Cấu trúc dữ liệu của ACPI
Các cấu trúc dữ liệu này là cơ chế giao tiếp chính giữa firmware và hệ điều hành
Chức năng của các dạng cấu trúc:
Chức năng của Data tables
Data tables sẽ lưu trữ dữ liệu thô tức dữ liệu gốc và được các driver sử dụng
Chức năng của Definition blocks
Các "khối định nghĩa" chứa các byte code được phiên dịch và thực thi thông qua trình phiên dịch
Và từ chức năng đó của Definition blocks mà ta có thể thông qua SSDT để tiêm các Definition blocks vào hệ thống ACPI
Nhằm thay đổi những thứ cần thiết:
Chúng ta có thể thêm thiết bị ảo, đổi tên thiết bị, thay đổi phương thức điều khiển hoặc định nghĩa lại chúng. và còn nhiều thứ khác
Mục đích chung của những việc làm này giúp các thông tin về phần cứng trở nên phù hợp với macos
Lý do SSDT được ưa chuộng hơn DSDT
Vậy nguyên nhân là do đâu?
Những vấn đề đó đến từ việc các bảng DSDT có sẵn trong máy các bạn được viết ra đễ hỗ trợ cho windows
Đến đây nhiều bản sẽ hỏi thế tại sao linux lại chạy được và không gặp những lỗi như trên?
Nguyên nhân tiếp theo đó là do Apple không tuân thủ hoàn toàn các bảng ACPI theo chuẩn ACPI
Để có thể tùy chỉnh và tối ưu hóa hệ thống phần cứng và phần mềm của họ một cách tốt nhất
Từ đó đảm bảo hiệu suất và khả năng quản lý năng lượng tối ưu.
Những vấn đề được đề cập ở trên điều có thể giải quyết bằng cách patch DSDT và đưa DSDT đã patch vào trong quá trình khởi động
Vì vậy, việc vá động với SSDTs (Secondary System Description Tables) được ưa chuộng và sạch sẽ hơn về mặt tuân thủ ACPI so với việc sử dụng một DSDT (Differentiated System Description Table) đã vá.
Thêm vào đó, toàn bộ quá trình này hiệu quả hơn, minh bạch và thanh thoát hơn.
Nguyên nhân là khi dùng SSDT bạn chỉ thay đổi một bộ phận của DSDT mà thôi thay vì việc load toàn bộ DSDT như static patch
Ở dấy để tránh hiểu lầm thì cơ bản DSDT vẫn sẽ được load toàn bộ khi khởi động và đến khi load SSDT thì những thay đổi của bạn sẽ được apply vào
Đó là lý do tại sao bạn nên tránh sử dụng các DSDT đã vá.
Và bất kỳ ai nói rằng một hệ thống hackintosh mà không có một DSDT đã vá là không hoàn chỉnh hoặc không hoạt động đầy đủ cũng không hoàn toàn đúng.
Một hệ thống hackintosh không cần DSDT đã vá vẫn có thể hoạt động hoàn chỉnh và đầy đủ chức năng nếu sử dụng SSDTs đúng cách.
Source tham khảo: https://github.com/5T33Z0/OC-Little-Translated/tree/main/00_ACPI/ACPI_Basics | https://vnohackintosh.com/docs/usb-creation/basic-acpi/ | https://phungvanhung.wordpress.com/2011/10/26/d%E1%BA%B7c-t%E1%BA%A3-acpi-va-v%E1%BA%A5n-d%E1%BB%81-ti%E1%BA%BFt-ki%E1%BB%87m-di%E1%BB%87n-khi-s%E1%BB%AD-d%E1%BB%A5ng-pc/
Last updated