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

目录:

Anonim

内核扩展,简称 kext,是直接加载到 Mac OS X 内核空间的代码模块,能够在低级别运行以执行各种任务。大多数 kext 是核心 Mac OS X 系统软件的一部分,通常是硬件设备驱动程序,但一些第三方应用程序也会安装 kext。

有时,高级Mac 用户和系统管理员可能需要手动加载或卸载内核扩展。因为内核扩展通常是 MacOS 的关键组件,所以这仅适用于有特定原因要修改 kext 是否加载或卸载到 MacOS X 内核空间的用户。对 kext 行为的不当修改会导致 Mac 硬件无用或无法访问,并且还会阻止 Mac OS X 完全运行,因此在没有令人信服的理由和不了解其用途的情况下,请勿尝试更改任何内核扩展。

使用kextload在Mac OS X中加载内核扩展

要将内核扩展加载到 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 时相同。

使用kextunload卸载内核扩展

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

sudo kextunload -b com.apple.driver.ExampleBundle

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

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

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

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