
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 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.ươ ẽ ẻ ế ị ổ ề ư

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ì?

