1. Kết quả Event Ghost 2016


    Dưới đây là danh sách những thành viên đoạt giải thưởng trong Event Ghost 2016

Khác biệt giữa Mac và PC – Cách giải quyết

Thảo luận trong 'Mac OS' bắt đầu bởi minh_ng2000, 25 Tháng năm 2013.


  1. minh_ng2000

    minh_ng2000 Death Moderator Ban Quản Trị

    1,172
    921
    113
    Giới thiệu về EFI và DSDT, hệ thống driver trên Windows và kext trên Mac OS X

    EFI là gì?
    [​IMG]

    EFI là từ viết tắt của Extensible Firmware Interface, một bộ đặc tả giao thức phần mềm chịu trách nhiệm giao tiếp giữa hệ điều hành (OS) và firmware hệ thống. Nói tới EFI thì quả là lạ lẫm, nhưng nếu nói tới BIOS (Basic Input/Output System) thì chắc các bạn, nhất là anh em tại vOz chẳng xa lạ gì. Và thật vui khi biết rằng, EFI và BIOS thực ra có thể coi là huynh đệ của nhau.
    BIOS chính xác cũng là một firmware interface, viết bằng assembly, có chức năng tự chạy đầu tiên khi bật máy tính, nó thực hiện quá trình Power On-Self Test, kiểm tra các thiết bị và rồi giao hết lại cho hệ điều hành (như Windows chẳng hạn). OS vẫn phải dựa vào BIOS để liên lạc với một số thiết bị, chẳng hạn như pin trên laptop hoặc đọc một số thông số hệ thống. Do việc phải thức khuya dậy sớm như vậy nên BIOS được đặc cách ngủ một phòng riêng có tên là EPPROM ngay trong nhà mainboard. EFI thì khác, viết bằng C, đô con hơn, mở rộng tốt hơn, phức tạp hơn và giống một hệ điều hành thu nhỏ hơn. EFI được phát triển bởi Intel, tương lai sẽ là kẻ kế vị cho BIOS khi gã cao tuổi này về hưu.

    [​IMG]
    Nhưng vì sao chúng ta phải nhắc đến EFI nhỉ? À, thật ra là vì Mac dùng EFI (hay đúng hơn là một mô tả riêng từ chuẩn EFI ban đầu của Intel), chứ không phải BIOS như PC. Đây là vấn đề gay go đầu tiên cho mộng ước hợp nhất của chúng ta. Ngoài việc nó khác nhau ra, thì EFI còn nắm giữ nhiều thành phần quan trọng của một hệ điều hành mà không nhắc tới nó không được: service, protocol, device driver, driver cho file system, disk support, và cả boot manager.
    Ngày xưa, dân OSX86 ta đơn giản bỏ qua EFI vì nó phức tạp và khó nhai quá, trực tiếp sửa đổi kernel của Mac OS X cho nó chạy trên PC là xong. Nhưng sự thực thì sau đó không ít phiền toái kéo tới. Các kext (kernel extension) chuẩn không chạy được với kernel sửa đồi, rồi thì mỗi lần Apple tung gói update mới lại phải hì hụi sửa lại cái kernel. Sau này phương pháp giả lập EFI thông qua bootloader được đưa ra bởi các bác hacker Nga khét tiếng (Netkas), giúp cho dân đen chúng ta tránh được rất nhiều phiền phức.

    [​IMG]
    Về thiết bị phần cứng, có một thiết bị gọi là EFI-X được bày bán, cắm vào máy là chạy EFI được ngay. Đáng tiếc công ty sản xuất thiết bị hay ho này về sau bị pháp luật tóm gáy, và vậy là OSX86 cho ra đời phương pháp giả lập EFI khác có tên Boot-132, hoạt động y chang thiết bị kia (đúng hơn thì Boot-132 có trước và EFI-X bắt chước mà thôi). Chúng ta sẽ sử dụng phương pháp giả lập Boot-132 này trong phần 3 của loạt bài.


    DSDT là gì?
    Thêm một thuật ngữ khó nhằn khác cần được giải thích, rất may là phần DSDT này cũng ngắn mà thôi.


    DSDT (Differentiated System Description Table) là một bảng quan trọng trong đặc tả ACPI, compiled dưới dạng file .aml (ACPI Machine Language), cung cấp thông tin cho hệ điều hành về một số thiết bi bên dưới. Thiếu hoặc sai bảng DSDT thường dẫn đến những trục trặc như không thể sleep, quạt không điều chỉnh tốc độ được, màn hình không tắt khi đóng laptop (close lid), v..v.. Vấn đề là đa số PC đều được sản xuất với DSDT đặc tả cho Windows, vì vậy ngay cả Linux đôi khi cũng phải sửa đổi DSDT để có thể hoạt động trơn tru. Mac thì như chúng ta đã biết, đỏng đảnh hơn nhiều chứ đâu bình dân như Linux, vì vậy Mac sử dụng hẳn một bảng DSDT khác (đúng hơn là một subset không hoàn chỉnh) với DSDT của đặc tả ACPI trên PC.

    [​IMG]
    Việc thay đổi DSDT thường được thực hiện như sau: trích xuất DSDT từ ACPI trên mainboard -> patching & modifying DSDT -> chỉ dẫn bootloader sử dụng DSDT mới này thay vì DSDT nguyên gốc trong BIOS (tránh việc ghi đè lại DSDT của hệ thống). Công việc patching khó khăn này giờ đã được đảm nhận bởi những công cụ với giao diện đồ họa, sử dụng hết sức đơn giản.


    Hệ thống driver trên Windows và kernel extensions trên Mac:
    [​IMG]
    Do sử dụng 2 trường phái kernel khác nhau, Windows với monolithic kernel (vâng, “thiết kế nguyên khối” y như quảng cáo Sony Bravia gần đây) còn Mac sử dụng microkernel nên 2 hệ điều hành này cũng có hệ thống driver cho thiết bị khác nhau. Bản chất các file .kext (kernel extension) cũng giống với device driver trên Windows, giúp mở rộng khả năng của nhân hệ điều hành, điều khiển và tích hợp các thiết bị phần cứng khác của máy tính.

    [​IMG]
    Vậy điều khác biệt ở đây là gì? Driver Windows được các hãng sản xuất thiết bị viết ra theo một chuẩn chung (nói nôm na là driver interface) do Microsoft ban hành, và Microsoft không can thiệp gì vào quá trình viết driver này. Ví dụ như driver wireless card nào cũng phải tuân theo nguyên tắc chung: capture broadcast SSID, signal strength, encryption method, etc rồi trả về cho Windows. Các tính năng đặc trưng của mỗi NSX tính sau. Chính nhờ hệ thống driver interface này mà Windows có thể kết nối với vô số thiết bị, miễn là NSX viết driver theo đúng chuẩn của Microsoft. Microsoft không phải và không cần can thiệp vào quá trình viết driver, chỉ việc ngồi đóng dấu chứng chỉ WHQL là xong. Các NSX cũng không phải ngồi chầu chực đợi nói chuyện với Microsoft về vấn đề viết driver như thế nào, chỉ việc viết xong đem test WHQL là xong. Do vậy số thiết bị được sản xuất cho PC (một nền tảng mở) và tương thích với Windows (driver interface mở) là nhiều hơn rất nhiều so với Mac.

    Về phần Apple, ngược lại, do sử dụng microkernel và không thiết lập chuẩn chung cho driver, Mac OS lại mang tính chất proprietary (sở hữu riêng, mã đóng), nên các thiết bị sử dụng cho Mac OS phải được Apple và NSX cùng nhau viết driver. Thêm một quy định khác của Apple là Mac OS chỉ chạy trên máy Macintosh, vì vậy kext của các thiết bị được tích hợp sẵn vào Mac OS luôn cho tiện, chứ ít được phân phối bởi NSX thiết bị như trên Windows.

    Các kext của Mac OS X nằm trong thư mục /System/Library/Extensions/ (đường dẫn Unix), cách cài đặt và gỡ bỏ “driver” này cũng hết sức đơn giản, chúng ta sẽ nói thêm ở phần tiếp theo.
    Nguồn:VOZ Forums
     
    gagucool and anonymous like this.

Chia sẻ trang này