在OSx10.10中为KernelExtension进行协调处理

时间:2015-06-05 13:03:19

标签: osx-yosemite code-signing kernel-extension

如果我们使用开发证书在10.10 OSx中签署一个kext,该签名是否会在其他以前的OSx版本中运行? 如果没有那么什么是使kext二进制符号与所有OSx版本兼容的解决方案?我们在diffx版本的OSx上签署diff diff二进制文件,还是在diff diff OSx版本上签署相同的二进制文件?

1 个答案:

答案 0 :(得分:1)

签名的64位kexts将在10.10,10.9和10.8上运行。无符号的kexts,包括通用kexts,最高可达10.8。如果您需要支持比10.8更旧的更新版本,则至少需要2个版本的kext。如果引导不需要kext,那么一种方便的方法是放置一个带有相同软件包ID的签名版本,但是更高的软件包版本号,并且依赖于/ Library / Extensions中的10.9个KPI,以及传统/ System / Library / Extensions中的(unsigned,universal)kext。只有10.9和更新版本的/ Library / Extensions。如果启动时需要kext(例如存储控制器驱动程序或存储控制器驱动程序的依赖关系),那么您可能会遇到/ Library / Extensions的问题,并且您需要在/ SLE中安装这两个版本,只需使用不同的文件名

另请注意,您通常希望针对OLDEST支持的OSX版本的SDK构建每个kext。 “部署目标”对于kexts不起作用,你会发现,例如如果使用10.8 SDK构建,即使使用10.6部署目标,大多数kexts也不会加载到10.6。如果您想支持仅在较新版本的kext中提供的功能,您可能需要比签名/未签名拆分更多的变体。