我在 Yosemite 的 kext 上进行了代码签名。但 kextload 失败。
这是版本 2 的协同设计。 codesign --verify
为真。
但是 kextload 失败。为什么不在优胜美地加载?
这是我的日志。
我已经检查过codesign -dvvv ./myKext.kext
,一切正常。
codesign -dvvv ./myKext.kext
返回以下内容:
Executable=/Path/to/myKext
Identifier=com.myKext.kext.Firewall
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=317 flags=0x0(none) hashes=9+3 location=embedded
Hash type=sha1 size=20
CDHash=d0ff68bd8b49c650f45349c2d1570d45a8c1f148
Signature size=8544
Authority=Developer ID Application: My Kext Co., Ltd. (R2PBZJ465V)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=2014. 10. 31. 오전 11:09:35
Info.plist entries=18
TeamIdentifier=not set
Sealed Resources version=2 rules=12 files=1
Internal requirements count=1 size=188
显示版本2。
但是 sudo kextload ./myKext.kext 返回以下内容:
/Path/to/myKext.kext failed to load - (libkern/kext) not loadable (reason unspecified); check the system/kernel logs for errors or try kextutil(8).
cat/var/log/system.log
返回:
com.apple.kextd[19]: ERROR: invalid signature for com.myKext.kext.Firewall, will not load
sudo kextutil -l ./myKext.kext
返回:
Diagnostics for ./myKext.kext:
Code Signing Failure: code signature is invalid
ERROR: invalid signature for com.myKext.kext.Firewall, will not load
为什么签名无效?!
我已在 Yosemite 中签署了 version2 codesign。
我做错了什么标志?请有人教我。
最佳答案
我也遇到了同样的问题。我得到了与您分享的解决方案。
Apple 更改了 Mac 开发者计划,并从中删除了 kext 认证。 因此,即使您是 Mac 开发者计划的成员,您也不会获得 kext 开发认证,除非您通过 Developer ID and Gatekeeper 请求。 .
顺便说一句,苹果说,
"KEXT signing is intended for signing commercially shipping kexts or projects broadly distributed in a large organization."
因此,我们可以做的是通过添加“kext-dev-mode=1”boot-arg 在 KEXT 开发模式上运行我们的 Kext。就像,
sudo nvram boot-args="debug=0x146 kext-dev-mode=1"
然后重新启动。
希望这对您有所帮助。
关于macos - codesigned kext 但为什么不在 Yosemite(10.10) 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671885/