如何在 Mac OS X 中加载 & 卸载内核扩展
目录:
内核扩展,简称 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 确认内核扩展已被卸载,它应该不会返回任何内容。