ฉันจะถอนการติดตั้งและลบ. kext บน Mac OS X ได้อย่างไร


32

ฉันซื้อตัวอ่านมีเดียการ์ด X-in-1 และต้องติดตั้งไดรเวอร์เพื่อให้สามารถอ่านการ์ด SD-HC ได้ ตอนนี้บางครั้งเมื่อฉันถอดปลั๊กเครื่องอ่านออกจากพอร์ต USB ฉันจะได้รับความตื่นตระหนกของเคอร์เนล

ดังนั้นตอนนี้ฉันต้องการลบส่วนขยายเคอร์เนลนี้ แต่ตัวติดตั้งไดรเวอร์ไม่ได้ให้ตัวเลือกนี้แก่ฉัน

ฉันจะถอนการติดตั้งส่วนขยายเคอร์เนล (.kext) จาก Mac OS X 10.5 ได้อย่างไร

คำตอบ:


32

หากคุณไม่ทราบชื่อของไฟล์. kext คุณสามารถคิดได้โดยใช้ปลั๊กอิน QuickLook เช่นSuspicious Packageหากตัวติดตั้งเป็นแพ็คเกจมาตรฐาน (.pkg หรือ. mp4) ที่เปิดขึ้นใน Installer.app

หากไม่ใช่แพ็คเกจคุณสามารถค้นหาชื่อของ kext จาก kernel panic: คุณสามารถค้นหาข้อมูลนี้ได้ที่~/Library/Logs/panic.logหรือเมื่อคุณรีสตาร์ทคอมพิวเตอร์หลังจากตกใจก็จะถามว่าคุณต้องการรายงานข้อผิดพลาดกับ Apple หรือไม่ กดรายงานแล้วคลิกแท็บกลางเพื่อดูรายละเอียดความผิดพลาด

ตัวอย่างจะเป็น:

panic(cpu 0 caller 0x0035C330): freeing free mbuf
Backtrace, Format - Frame : Return Address (4 potential args on stack) 
0x2545bc08 : 0x128d08 (0x3c9afc 0x2545bc2c 0x131de5 0x0) 
0x2545bc48 : 0x35c330 (0x3ea258 0x3ae65000 0x23935100 0x493e0) 
0x2545bc88 : 0x7424a4 (0x36f19300 0x493e0 0x0 0x134b11) 
0x2545bca8 : 0x9f1458 (0x23935000 0x36f19300 0x0 0x0) 
0x2545bcd8 : 0x9ef6d6 (0x23935000 0x36f19300 0x0 0x0) 
0x2545bcf8 : 0x9fa0ce (0x23935000 0x36f15f00 0x1000000 0x0) 
0x2545bea8 : 0x9f375a (0x23935000 0x3a14880 0x40000000 0x34fb8b) 
0x2545bf08 : 0x398f79 (0x23935000 0x3a14880 0x1 0x13becf) 
0x2545bf58 : 0x39814b (0x3a14880 0x4121d48 0x4121d8c 0x0) 
0x2545bf88 : 0x397e81 (0x3a184c0 0x5d3734 0x452084 0x40431f4) 
0x2545bfc8 : 0x19a77c (0x3a184c0 0x0 0x19d0b5 0x696543c) Backtrace terminated-invalid frame pointer 0x0  

Kernel loadable modules in backtrace (with dependencies):
com.apple.iokit.AppleYukon(1.0.9b3)@0x9ed000  

dependency: com.apple.iokit.IONetworkingFamily(1.5.1)@0x73b000
dependency: com.apple.iokit.IOPCIFamily(2.2)@0x60a000
dependency: com.apple.iokit.IOACPIFamily(1.2.0)@0x6b6000
com.apple.iokit.IONetworkingFamily(1.5.1)@0x73b000

Kernel version:
Darwin Kernel Version 8.8.2: Thu Sep 28 20:43:26 PDT 2006; root:xnu-792.14.14.obj~1/RELEASE_I386

ฉันแยกเส้นญาติออกจากกัน คุณกำลังมองหาบรรทัดแรกหลังจาก "โมดูลที่โหลดได้เคอร์เนล ... " ในกรณีนี้มีรายการอยู่com.apple.iokit.AppleYukon (ซึ่งเป็นคนขับรถ Ethernet / นามสกุลเคอร์เนล) เพื่อให้ชื่อไฟล์จะเป็นcom.apple.iokit.AppleYukon.kext

ก่อนที่คุณจะไปยังขั้นตอนต่อไปจะเป็น110% ให้แน่ใจว่าคุณมีส่วนขยายเคอร์เนลที่ถูกต้อง ปิดการใช้งานส่วนขยายเคอร์เนลที่ไม่ถูกต้องสามารถทำให้ชีวิตจริงๆยาก - เช่น อุปกรณ์ USB จะไม่ทำงานจนกว่าจะเปิดใช้งานอีกครั้ง

ในที่สุดเพื่อยกเลิกการโหลด:

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


ขอบคุณสำหรับคำตอบโดยละเอียดและขอขอบคุณสำหรับความช่วยเหลือของคุณ
Marc

3
kextunloadไอเอ็นจีไม่ถาวร ดังนั้น110%ค่อนข้างมากเกินไป คุณสามารถรีสตาร์ท ...
Alec Jacobson

6

คุณต้องใช้คำสั่ง kextunload คุณอาจต้องใช้ sudo หากติดตั้งเป็น kext ทั้งระบบ (แทนที่จะเป็นผู้ใช้รายบุคคล)

คุณยังสามารถลบชุด kext โดยตรงและรีบูตได้


1
+1 kextunload ส่งคืนข้อผิดพลาด แต่การลบ. kext แก้ไขปัญหาของฉันโดยตรงขอบคุณ
แกรี่


2

ลองดูที่แพ็คเกจที่น่าสงสัยมันเป็นปลั๊กอินค้นหาด่วนที่ช่วยให้คุณเห็นไฟล์. pkg (สมมติว่านั่นคือสิ่งที่ผู้ติดตั้ง) จะทำกับระบบโดยปกติแล้วมันจะค่อนข้างง่ายที่จะลบสิ่งที่ติดตั้ง


1

ก่อนอื่นให้ลองยกเลิกการโหลดไฟล์ kext คุณสามารถดูไฟล์ kext ที่โหลดด้วยKext Wizard 3.7.11ในแท็บ "Loaded":
sudo kextunload /System/Library/Extensions/NAME_OF_THE_KEXT_FILE.kext

จากนั้นลบโฟลเดอร์ kext เพื่อไม่โหลดอัตโนมัติในการบูตครั้งถัดไป:
sudo rm -r /System/Library/Extensions/NAME_OF_THE_KEXT_FILE.kext

ใด ๆ ที่NAME_OF_THE_KEXT_FILE.kextไม่ใช่ไฟล์มันเป็นโฟลเดอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.