如何在 Mac OS X 中加载和卸载内核扩展

OS X 中的终端

有时,高级 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

无论哪种方式,按回车键并输入管理员密码,内核扩展将加载到 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 时相同。

在 Mac OS 中加载和卸载内核扩展X

使用 kextunload 卸载内核扩展

从 Mac OS X 卸载内核扩展基本上与加载 kext 完全相同,除了您将使用带 sudo 的 kextunload 实用程序,如下所示:

sudo kextunload -b com.apple.driver.ExampleBundle

或者直接指向内核扩展路径:

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

同样,您可以使用 kextstat 和 grep 确认内核扩展已被卸载,它应该不会返回任何内容。