Ph n 2: Khác bi t gi a Mac và PC – Cách gi i quy t ế
III/ 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ì?
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 ế
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.ươ ế ư
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.ượ
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.
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:
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. ế
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 3 c a ế ơ
bài.
IV/ Gi i thi u Chameleon – bootloader cho Mac OS X
Bootloader là gì?