วิธีโหลด & Unload Kernel Extensions ใน Mac OS X

สารบัญ:

Anonim

ส่วนขยายเคอร์เนลเรียกสั้น ๆ ว่า kext เป็นโมดูลของโค้ดที่โหลดโดยตรงในพื้นที่เคอร์เนลของ Mac OS X สามารถเรียกใช้ในระดับต่ำเพื่อทำงานที่หลากหลาย kext ส่วนใหญ่เป็นส่วนหนึ่งของซอฟต์แวร์ระบบ Mac OS X หลัก ซึ่งโดยปกติจะเป็นไดรเวอร์อุปกรณ์ฮาร์ดแวร์ แต่แอปของบุคคลที่สามบางแอปจะติดตั้ง kext ด้วยเช่นกัน

บางครั้ง ผู้ใช้ Mac ขั้นสูงและผู้ดูแลระบบอาจต้องโหลดหรือยกเลิกการโหลดส่วนขยายเคอร์เนลด้วยตนเองเนื่องจากส่วนขยายเคอร์เนลมักเป็นส่วนประกอบที่สำคัญของ MacOS จึงเหมาะสำหรับผู้ใช้ที่มีเหตุผลเฉพาะในการปรับเปลี่ยนว่าจะโหลดหรือยกเลิกการโหลด kext ลงในพื้นที่เคอร์เนล MacOS X เท่านั้น การแก้ไขพฤติกรรม kext ที่ไม่เหมาะสมอาจทำให้ฮาร์ดแวร์ Mac ใช้งานไม่ได้หรือไม่สามารถเข้าถึงได้ และยังสามารถขัดขวางไม่ให้ Mac OS X ทำงานได้เลย ดังนั้นอย่าพยายามเปลี่ยนส่วนขยายเคอร์เนลใดๆ โดยไม่มีเหตุผลที่น่าสนใจและทำความเข้าใจว่ามันคือการใช้งานอะไร

กำลังโหลดส่วนขยายเคอร์เนลใน Mac OS X ด้วย kextload

ในการโหลดส่วนขยายเคอร์เนลลงใน Mac OS X คุณจะต้องใช้ยูทิลิตี้ kextload บรรทัดคำสั่ง ไวยากรณ์นั้นง่ายพอ ต้องใช้ sudo สำหรับการเข้าถึงระดับผู้ดูแลระบบเพื่อดำเนินการ:

sudo kextload /path/to/kext.kext

คุณยังสามารถใช้ตัวระบุบันเดิล (ซึ่งมักเป็นเป้าหมายของคำสั่งดีฟอลต์) ด้วยแฟล็ก -b:

sudo kextload -b com.apple.driver.ExampleBundle

ไม่ว่าจะด้วยวิธีใด กด return และด้วยการป้อนรหัสผ่านของผู้ดูแลระบบ ส่วนขยายเคอร์เนลจะถูกโหลดลงใน Mac OS X

คุณสามารถยืนยันได้ว่ามีการโหลดเคอร์เนลแล้วโดยแสดงรายการด้วย kextstat โดยใช้ grep เพื่อค้นหาชื่อที่กำหนด เช่น

$ kextstat |grep com.apple.driver.ExampleBundle 125 0 0xdddddd7f23351040 0x5000 0x5000 com.apple.driver.ExampleBundle (1) 12 8 7 5 4 2 1

สิ่งนี้จะมีประโยชน์หลังจากติดตั้งส่วนขยายเคอร์เนลลงใน Mac OS X ด้วยตนเอง เนื่องจากในบางสถานการณ์จะทำให้ไม่จำเป็นต้องรีบูตเครื่อง Mac

Mac OS X เวอร์ชันสมัยใหม่ยังอนุญาตให้โหลดส่วนขยายเคอร์เนลได้ด้วยคำสั่ง kextutil ซึ่งมีคุณสมบัติครบถ้วนกว่าเล็กน้อยสำหรับเหตุผลในการดีบัก แต่อย่างอื่นจะเหมือนกันสำหรับการโหลด kext

ยกเลิกการโหลดส่วนขยายเคอร์เนลด้วย kextunload

การยกเลิกการโหลดส่วนขยายเคอร์เนลจาก Mac OS X โดยพื้นฐานแล้วจะเหมือนกับการโหลด kext ยกเว้นว่าคุณจะใช้ยูทิลิตี้ kextunload กับ sudo ดังนี้:

sudo kextunload -b com.apple.driver.ExampleBundle

หรือชี้ไปที่เส้นทางส่วนขยายเคอร์เนลโดยตรง:

sudo kextunload /System/Library/Extensions/ThirdPartyMystery.kext

อีกครั้ง คุณสามารถยืนยันได้ว่าส่วนขยายเคอร์เนลถูกยกเลิกการโหลดแล้วโดยใช้ kextstat และ grep โดยที่ส่วนขยายนั้นจะไม่ส่งคืนอะไรเลย

วิธีโหลด & Unload Kernel Extensions ใน Mac OS X