centos内核编译与其签名机制
linux内核3.7引入的签名机制,极大地方便了对内核模块的安全认证,同时也为操作系统厂家提供了IP保护的技术手段。不过,凡事有利也有弊。对刚刚接触具有签名机制的内核的工程师而言,需要一段理解并适应新内核的过程。为此,小编结合自己的工作经历,总结了一些要点和大家一起分享
。
1.什么是内核签名机制?
内核签名就是内核利用公钥对驱动模块校验的过程,对检验通过的模块,准许加载,而对没有签名的内核驱动模块或者签名没有通过检验的模块,根据不同的内核选项,禁止或者允许加载。
2.如何使用内核签名?
内核签名可以使用的场合包括但不限定于:
1.和某个内核或者操作系统厂商紧密捆绑的驱动模块,包括仅仅限定于特定版本内核的内核驱动模块;
2.受限或者受控的驱动模块,包括在操作系统或者内核无法改变的情况下,只能在知道公钥和私钥的情况下生成可被加载的驱动模块。
3.签名校验可能带来哪些不便?
在使用了签名校验的操作系统上进行内核的重新编译和模块的二次开发时,如果不知道先前的私钥和公钥生成算法的话,就无法直接加载新编译出的内核二进制或者驱动模块。
4.如何规避可能的影响?
禁止内核签名检验,并重新生成对应的initramfs,修改boot
memu,重新引导系统从自己新加的boot
entry启动。
5.实战举例
下面以centos
7 (based on linux kernel 3.10)为例,介绍具体的操作步骤: