内核定制的介绍和使用¶
本章主要简述内核定制流程和应用。
关于内核定制¶
普通的Linux内核是通过文本交互、文本窗口、图形窗口,对内核进行定制。定制的内核配置,保证内核级别的应用可以正常运行。
Poly OS面向多板卡,内核配置尽量满足多版本内核;因为下载和编译是自动化,内核定制配置尽量自动化,减少人工的参与。
内核定制的处理流程¶
将厂商的初始内核配置与用户定制内核配置融合,取配置的并集,内核最初的处理:只将满足依赖的配置项写入到.config,导致用户的配置没能真正写入到内核中。
PolyOS中加的功能:
将内核认为因为缺少依赖而没加到.config的布尔和三态的配置项也加到.config中,将.config所有为布尔和三态的配置转换为符号,检测是否满足依赖,没满足依赖的配置进行修复,确保加入的配置项还是满足依赖关系,更新.config内容。
![]()
内核配置定制流程图¶
内核定制的结果¶
内核配置的定制来说,以docker内核配置CONFIG_IP_NF_FILTER为例。
内核之前的默认处理,因为内核发现CONFIG_IP_NF_FILTER没满足依赖关系,没把它加入到内核配置中。
内核日志merge_config_build.log显示:
Value requested for CONFIG_IP_NF_FILTER not in final .config Requested value: CONFIG_IP_NF_FILTER=y Actual value:
Poly OS中加了内核配置检查和修复功能,为了确保docker内核配置CONFIG_IP_NF_FILTER生效,需要检查所有依赖配置,并对其进行修复。
修复程序遵循三个原则:
•正确性:修复导致的任何配置必须正确;
•最大范围:当范围重叠时,固定应包含最大范围;
•变化的最小化:需要改变的特征数量应该合理地最小化,以避免不必要地破坏用户之前设置的特征值。
内核日志merge_config_build.log显示:
need fixed found symbol IP_NF_FILTER, type tristate,fact value y === GENERATED DIAGNOSES === [IP_NF_FILTER => yes, NETFILTER_XTABLES => yes, IP_NF_IPTABLES => yes] Trying to apply fixes now... NETFILTER_XTABLES set to yes. IP_NF_IPTABLES set to yes. Fixes successfully applied.