如何在Mac OS X上卸载和删除.kext?


32

我购买了X合1媒体卡读取器,并且必须安装驱动程序才能读取SD-HC卡。现在有时候,当我从USB端口拔下阅读器时,我会感到内核崩溃。

所以现在我想删除此内核扩展,但是驱动程序安装程序没有给我这个选项。

如何从Mac OS X 10.5卸载内核扩展(.kext)?

Answers:


32

如果您不知道.kext文件的名称,那么如果安装程序是在Installer.app中打开的标准程序包(.pkg或.mpkg),则可以使用可疑程序包之类的QuickLook插件来找出该文件。

如果不是软件包,则可以从内核恐慌中找到kext的名称:您可以~/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(这是以太网驱动程序/内核扩展名),因此文件名将为com.apple.iokit.AppleYukon.kext

在继续下一步之前,请先确保您具有正确的内核扩展110%。禁用错误的内核扩展可能会使生活变得非常艰难-例如。USB设备在重新启用之前无法工作。

最后卸载它:

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


感谢您的详细回答,也感谢所有其他人的帮助。
马克

3
kextunloading不是永久的。因此110%有点过高。您可以重新启动...
Alec Jacobson

6

您需要使用kextunload命令。如果sudo是作为系统级(而不是单个用户)的kext安装的,则可能需要使用sudo。

您也可以直接删除kext捆绑软件,然后重新启动。


1
+1。kextunload返回了一个错误,但是删除.kext直接解决了我的问题,谢谢。
加里·


2

看一下Suspicious Package,它是一个快速查看插件,它使您可以查看.pkg(假定安装程序是什么)文件对系统的作用,然后通常很容易删除安装的文件。


1

首先,尝试卸载kext文件。您可以在“已加载”标签中查看使用Kext向导3.7.11加载了哪些kext文件:
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不是文件,而是一个文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.