最近在看OS X 与IOS 内核编程
在第三章的例子中,编写内核扩展
写了一个HelloWorld.kext
在控制台中运行 sudo kextload HelloWorld.kext
但是怎样都不成功
在mac 系统工具中, 找出控制台
在system.log那一栏中,发现了对应的错误:
Code Signing Failure: code signature is invalid (签名错误)
在网上搜索,找到这篇 :
https://forums.developer.apple.com/thread/30703,
上面说需要开权限去开发KEXT (Kernel extension)
点击红框
看到右下角那里,写Kernel extension(内核扩展), 原来要去申请的
点击红框,跳到
https://developer.apple.com//contact/kext/ (先要登录apple 开发者帐号)
选择了personal use (因为我只想自己学习下,没想过要发布出去), 发现personal use不用去申请的, 下面有提示,按提示去做吧
发现了Kernel extensions 相关的, 再点进去看
ok, 发现想用 unsigned (无签名)的 kernel extionsion , 只能把系统的设置改掉, 再点后面的蓝色超链接
原来要先进入mac 的 Recovery OS 模式再改 csrutil disable才可以,
ok, 重新启动系统,在刚要启动时,狂按 command + r 就可进入Recovery OS 模式。
一开始进去时,可能会有一个弹框让你选择一些恢复操作, 不用管它
用鼠标点上面的菜单,好像某个菜单里面有终端,把终端点出来
运行 sudo csrutil disable
运行成功后,再重启进入原来正常的系统
命令行再运行先前写的 HelloWorld.kext
sudo kextload HelloWorld.kext
Good, 没出错了。 ^_^