Cách tải & Unload Kernel Extensions trong Mac OS X
Mục lục:
Phần mở rộng kernel, được gọi tắt là kext, là các mô-đun mã được tải trực tiếp vào không gian kernel của Mac OS X, có thể chạy ở mức thấp để thực hiện nhiều tác vụ khác nhau. Hầu hết kext là một phần của phần mềm hệ thống cốt lõi của Mac OS X, thường là trình điều khiển thiết bị phần cứng, nhưng một số ứng dụng của bên thứ ba cũng sẽ cài đặt kext.
Đôi khi, người dùng Mac nâng cao và quản trị viên hệ thống có thể cần tải hoặc hủy tải phần mở rộng hạt nhân theo cách thủ công.Bởi vì các phần mở rộng nhân thường là các thành phần quan trọng của MacOS, nên điều này chỉ phù hợp với những người dùng có lý do cụ thể để sửa đổi xem một kext được tải hay không được tải vào không gian nhân MacOS X. Việc sửa đổi hành vi của kext không phù hợp có thể khiến phần cứng Mac trở nên vô dụng hoặc không thể truy cập được và cũng có thể ngăn Mac OS X hoạt động, vì vậy đừng cố thay đổi bất kỳ phần mở rộng kernel nào mà không có lý do thuyết phục và hiểu rõ mục đích sử dụng của phần mở rộng đó.
Loading a Kernel Extension trong Mac OS X bằng kextload
Để tải phần mở rộng kernel vào Mac OS X, bạn cần sử dụng tiện ích kextload dòng lệnh. Mặt khác, cú pháp đủ đơn giản, yêu cầu sudo để có quyền truy cập quản trị để thực hiện hành động:
sudo kextload /path/to/kext.kext
Bạn cũng có thể sử dụng mã định danh gói (thường là mục tiêu của các lệnh mặc định) với cờ -b:
sudo kextload -b com.apple.driver.ExampleBundle
Dù bằng cách nào, hãy nhấn quay lại và với mục nhập mật khẩu quản trị viên, phần mở rộng kernel sẽ được tải vào Mac OS X.
Bạn có thể xác nhận kernel đã được tải bằng cách liệt kê kernel đó với kextstat, sử dụng grep để tìm kiếm tên đã cho như sau:
$ kextstat |grep com.apple.driver.ExampleBundle 125 0 0xdddddd7f23351040 0x5000 0x5000 com.apple.driver.ExampleBundle (1) 12 8 7 5 4 2 1
Điều này có thể hữu ích sau khi cài đặt thủ công phần mở rộng kernel vào Mac OS X vì trong một số trường hợp, phần mở rộng này sẽ ngăn bạn phải khởi động lại máy Mac.
Các phiên bản hiện đại của Mac OS X cũng cho phép hoàn tất quá trình tải phần mở rộng kernel bằng lệnh kextutil, lệnh này có đầy đủ tính năng hơn một chút vì lý do gỡ lỗi, nhưng nếu không thì việc tải kext cũng giống như vậy.
Unloading Kernel Extension bằng kextunload
Việc dỡ phần mở rộng kernel từ Mac OS X về cơ bản giống hệt như việc tải kext, ngoại trừ bạn sẽ sử dụng tiện ích kextunload với sudo như sau:
sudo kextunload -b com.apple.driver.ExampleBundle
Hoặc bằng cách trỏ trực tiếp đến đường dẫn phần mở rộng kernel:
sudo kextunload /System/Library/Extensions/ThirdPartyMystery.kext
Một lần nữa, bạn có thể xác nhận phần mở rộng hạt nhân đã được gỡ bỏ bằng cách sử dụng kextstat và grep, trong đó phần mở rộng sẽ không trả về gì cả.