最近在搞OSX驱动开发,中文资料甚少,看看官方文档,然后自己摸索,把一些调试经验记录一下,以备后用,有的可能不正确,有高手看到希望能够指点。
1.安装驱动
驱动编译完成后,拷贝到/System/Library/Extentions/目录下。拷过去后会有提示说该扩展安装不正确,不能正确使用。需要做以下处理:
修改所有者:
sudo chown -R root:wheel xxx.kext/
修改权限:
sudo chmod -R 755 xxx.kext/
更新系统扩展目录的访问和修改时间
sudo touch /System/Library/Extentions
修改完后,重启电脑,这一步不知道是不是不用重启也行。
2.调试驱动
在苹果的开发者网站上有文档介绍如何进行驱动调试,请戳这里。
调试驱动的(match & load)匹配和加载问题。
kextload:这是OSX系统自带的一个工具,用于加载系统扩展kext,并在加载前检验plist文件进行依赖文件验证,权限验证,然后打印出错误信息。
sudo kextload -t xxx.kext
如下例:
[computer_name:] user_name% sudo kextload -t BadKEXT.kext Password: can't add kernel extension BadKEXT.kext (validation error) (run kextload on this kext with -t for diagnostic output) kernel extension BadKEXT.kext has problems: Validation failures { "Info dictionary missing required property/value" = { "IOKitPersonalities:BadKEXT:IOProviderClass" } "Info dictionary property value is of illegal type" = { "IOKitPersonalities:BadKEXT:IOKitDebug" } } Authentication failures { "File owner/permissions are incorrect" = { "/Users/user_name/Projects/BadKEXT/build/BadKEXT.kext" "/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/Info.plist" "/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents" "/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/MacOS/BadKEXT" "/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/MacOS" } } Missing dependencies { "com.apple.kernel.libker" = "No valid version of this dependency can be found" }
中间蓝色字体是错误提示。
有时在这一步没有错误提示,那么可以用下面一个命令进行检测。
kextutil:
这里是对这命令的介绍,该命令用于加载系统扩展kext,诊断错误和生成符号,用法如下:
sudo kextutil -t xxx.kext
-t:该参数的函数是打印错误信息
转载于:https://blog.51cto.com/tianya30/1315952