
本文共 1947 字,大约阅读时间需要 6 分钟。
CentOS 3.10.0 内核编译与第三方模块整合问题
在进行CentOS 3.10.0内核编译时,我们尝试将三方内核模块合并到内核源码树中,这样可以统一管理和编译。以下是整合过程中的关键步骤和遇到的问题及解决方法。
#目录结构分析
内核源码目录下的SOURCES
目录包含了针对不同平台的配置文件。通过查看ls *.config
命令,我们可以看到以下各个平台对应的配置文件:
cpupower.config kernel-3.10.0-ppc64le.config kernel-3.10.0-s390x-debug.configkernel-3.10.0-ppc64le.config kernel-3.10.0-ppc64_DEBUG.config kernel-3.10.0-x86_64.debug.configkernel-3.10.0-ppc64le.debug.config kernel-3.10.0-s390x-kdump.config kernel-3.10.0-x86_64.debug.configkernel-3.10.0-ppc64.debug.config kernel-3.10.0-s390x.config kernel-3.10.0-x86_64.config
为了方便管理,我们将三方模块放在third_party
目录下。具体目录结构如下:
linux-3.10.0/├── third_party/│ ├── third_party/│ │ ├── cryptography_module/│ │ │ ├── cryptography/│ │ │ │ ├── Makefile│ │ │ │ └── Kconfig│ │ │ └── crypttwo/│ │ │ ├── Makefile│ │ │ └── Kconfig│ │ └── cryptthree/│ │ ├── Makefile│ │ └── Kconfig│ └── Kconfig│ └── Makefile├── arch/│ └── x86/│ ├── Kconfig│ └── Makefile└── .config
#Kconfig和Makefile配置
我们在third_party
目录中创建了Kconfig
和Makefile
文件。第一层的Kconfig
内容如下:
menu "Third Party Module" source "third_party/cryptography/Kconfig"endmenu
Makefile文件则稍作修改:
obj-$(CONFIG_STATE_CRYPTOGRAPHY) += third_party/cryptography_module/
此外,在arch/x86/Kconfig
中添加了新的配置指令:
source "third_party/Kconfig"
这些初始配置修改后,用户可以通过make menuconfig
进行选项选择,并生成相应的目标文件。
#调整config文件结构
然而,用户在使用RPM Tooltip进行编译时遇到了问题。经过分析,发现问题出在config
文件的第一行。标准配置文件需要在第一行添加特定的注释,以便RPM Tooltip正确提取ARCH变量。用户的错误信息提示未能找到ARCH变量,而这一问题的产生正是由于config
文件未满足RPM Tooltip的格式要求。
用户的config
文件第一行应修改为:
# x86_64
此修改后,在使用以下命令时能正确获取ARCH变量:
cut -b 3-+ Arch=x86_64
验证ARCH值后,可以直接执行make
命令进行编译工作。最初的x86_64.debug.config
文件仅作为参考仅供查看,并已被替换为标准的config
文件文件名。
#总结
通过以上步骤,用户成功地将三方模块整合到CentOS 3.10.0内核源码树中。关键问题的解决依赖于以下两个方面:
- 修改
third_party
目录下的Kconfig
和Makefile
文件,确保其与主内核配置无冲突 - 在内核源码顶层的
config
文件中添加必要的注释,恰当地提取ARCH变量信息
完成上述设置后,用户的编译流程将顺利进行,新增的三方模块也将被正确编译并添加到目标文件中。
发表评论
最新留言
关于作者
