编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法

最近在看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)
编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第1张图片
点击红框
编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第2张图片

看到右下角那里,写Kernel extension(内核扩展), 原来要去申请的
点击红框,跳到  https://developer.apple.com//contact/kext/ (先要登录apple 开发者帐号)

编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第3张图片

选择了personal use (因为我只想自己学习下,没想过要发布出去), 发现personal use不用去申请的,  下面有提示,按提示去做吧

点红框,进入   https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/Introduction/Introduction.html
编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第4张图片

发现了Kernel extensions 相关的,  再点进去看
编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第5张图片
ok, 发现想用 unsigned (无签名)的 kernel extionsion ,  只能把系统的设置改掉, 再点后面的蓝色超链接 

编写Mac Kernel extensions(Mac内核扩展)里出现Code Signing Failure 错误的解决办法_第6张图片


原来要先进入mac 的 Recovery OS 模式再改 csrutil disable才可以,

ok, 重新启动系统,在刚要启动时,狂按 command + r  就可进入Recovery OS 模式。

一开始进去时,可能会有一个弹框让你选择一些恢复操作, 不用管它

用鼠标点上面的菜单,好像某个菜单里面有终端,把终端点出来

运行 sudo csrutil disable 

运行成功后,再重启进入原来正常的系统

命令行再运行先前写的 HelloWorld.kext

sudo kextload HelloWorld.kext 

Good, 没出错了。 ^_^ 

你可能感兴趣的:(mac)