记录编译与修改龙蜥Anolis OS内核的过程(三):修改配置文件

1. 准备内核源码

拿到内核源码,源码在目录:
/root/rpmbuild/BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64

  • 方法1
rpm -ivh kernel-5.10.134-18.an8.src.rpm
rpmbuild -bp rpmbuild/SPECS/kernel.spec
  • 方法2
rpmbuild -rp kernel-5.10.134-18.an8.src.rpm

2. 内核配置文件的位置与关系

根据上一篇文章的分析《记录编译与修改龙蜥Anolis OS内核的过程(二):理解rpmbuild准备源码的逻辑》

内核配置文件的源头是:

  • /root/rpmbuild/SOURCES/kernel-5.10.134-x86_64.config
  • /root/rpmbuild/SOURCES/kernel-5.10.134-x86_64-debug.config

经过%prep的处理后,最终配置文件是:

  • /root/rpmbuild/BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config
  • /root/rpmbuild/BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64-debug.config

用diff比较二者之间的差异,确实有配置项变化的:

[root@localhost rpmbuild]# diff -urNp SOURCES/kernel-5.10.134-x86_64.config BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config
--- SOURCES/kernel-5.10.134-x86_64.config       2024-12-13 16:21:58.000000000 +0800
+++ BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config     2025-02-25 11:21:43.096323293 +0800
@@ -1,21 +1,18 @@
+# x86
 #
 # Automatically generated file; DO NOT EDIT.
 # Linux/x86 5.10.134 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
+CONFIG_CC_VERSION_TEXT="gcc (GCC) 8.5.0 20210514 (Anolis 8.5.0-22.0.1)"
 CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=200000
-CONFIG_LD_VERSION=250000000
+CONFIG_GCC_VERSION=80500
+CONFIG_LD_VERSION=230000000
 CONFIG_CLANG_VERSION=0
 CONFIG_LLD_VERSION=0
 CONFIG_CC_CAN_LINK=y
-CONFIG_CC_CAN_LINK_STATIC=y
 CONFIG_CC_HAS_ASM_GOTO=y
-CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
-CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
-CONFIG_TOOLS_SUPPORT_RELR=y
 CONFIG_CC_HAS_ASM_INLINE=y
-CONFIG_PAHOLE_VERSION=9999
+CONFIG_PAHOLE_VERSION=127
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_TABLE_SORT=y
 CONFIG_THREAD_INFO_IN_TASK=y
@@ -891,9 +888,6 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 # end of GCOV-based kernel profiling

 CONFIG_HAVE_GCC_PLUGINS=y
-CONFIG_GCC_PLUGINS=y
-# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set
-# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set
 CONFIG_FUNCTION_ALIGNMENT_4B=y
 CONFIG_FUNCTION_ALIGNMENT_16B=y
 CONFIG_FUNCTION_ALIGNMENT=16
@@ -7594,15 +7588,7 @@ CONFIG_LSM="integrity,selinux,smack,tomo
 #
 # Memory initialization
 #
-CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
-CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
 CONFIG_INIT_STACK_NONE=y
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set
-# CONFIG_INIT_STACK_ALL_PATTERN is not set
-# CONFIG_INIT_STACK_ALL_ZERO is not set
-# CONFIG_GCC_PLUGIN_STACKLEAK is not set
 # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
 # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
 # end of Memory initialization
@@ -8101,8 +8087,6 @@ CONFIG_ARCH_HAS_EARLY_DEBUG=y
 CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
 # CONFIG_UBSAN is not set
 CONFIG_HAVE_ARCH_KCSAN=y
-CONFIG_HAVE_KCSAN_COMPILER=y
-# CONFIG_KCSAN is not set
 # end of Generic Kernel Debugging Instruments

 CONFIG_DEBUG_KERNEL=y
@@ -8138,7 +8122,6 @@ CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_HAVE_ARCH_KASAN=y
 CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
 CONFIG_CC_HAS_KASAN_GENERIC=y
-CONFIG_CC_HAS_KASAN_SW_TAGS=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
 # CONFIG_KASAN is not set
 CONFIG_HAVE_ARCH_KFENCE=y

最后,用/boot/config-5.10.134-18.an8.x86_64和BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config 比较,发现二者是一致的:

[root@localhost rpmbuild]# diff -urNp /boot/config-5.10.134-18.an8.x86_64 BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config
--- /boot/config-5.10.134-18.an8.x86_64 2024-12-13 16:38:41.000000000 +0800
+++ BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config     2025-02-25 11:21:43.096323293 +0800
@@ -1,8 +1,9 @@
+# x86
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.10.134-18.an8.x86_64 Kernel Configuration
+# Linux/x86 5.10.134 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="gcc (GCC) 8.5.0 20210514 (Anolis 8.5.0-18.0.4)"
+CONFIG_CC_VERSION_TEXT="gcc (GCC) 8.5.0 20210514 (Anolis 8.5.0-22.0.1)"
 CONFIG_CC_IS_GCC=y
 CONFIG_GCC_VERSION=80500
 CONFIG_LD_VERSION=230000000
@@ -11,7 +12,7 @@ CONFIG_LLD_VERSION=0
 CONFIG_CC_CAN_LINK=y
 CONFIG_CC_HAS_ASM_GOTO=y
 CONFIG_CC_HAS_ASM_INLINE=y
-CONFIG_PAHOLE_VERSION=124
+CONFIG_PAHOLE_VERSION=127
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_TABLE_SORT=y
 CONFIG_THREAD_INFO_IN_TASK=y

3. 修改内核配置文件

  • 准备.config文件
[root@localhost linux-5.10.134-18.an8.x86_64]# cp configs/kernel-5.10.134-x86_64.config .config
cp:是否覆盖'.config'? y
  • 修改.config文件
[root@localhost linux-5.10.134-18.an8.x86_64]# make ARCH=x86 menuconfig
configuration written to .config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

在这里插入图片描述

  • 查看配置文件的变动,确保修改的配置项生效
[root@localhost linux-5.10.134-18.an8.x86_64]# diff -urNp configs/kernel-5.10.134-x86_64.config .config
--- configs/kernel-5.10.134-x86_64.config       2025-02-25 11:21:43.096323293 +0800
+++ .config     2025-02-25 11:51:07.030464136 +0800
@@ -1,4 +1,3 @@
-# x86
 #
 # Automatically generated file; DO NOT EDIT.
 # Linux/x86 5.10.134 Kernel Configuration
@@ -7276,8 +7275,11 @@ CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 # CONFIG_FAT_DEFAULT_UTF8 is not set
-# CONFIG_EXFAT_FS is not set
-# CONFIG_NTFS_FS is not set
+CONFIG_EXFAT_FS=m
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
 # end of DOS/FAT/EXFAT/NT Filesystems

 #
  • 把新的.config配置文件作为原始配置文件
[root@localhost rpmbuild]# cp .config ../../../SOURCES/kernel-5.10.134-x86_64.config

4. 重新从spec开始构建

[root@localhost rpmbuild]# rpmbuild -bp -v SPECS/kernel.spec

对比前后两次rpmbuild -bp生成的kernel-5.10.134-x86_64.config文件的变化,发现config文件修改项生效了!

[root@localhost rpmbuild]# diff -urNp ../kernel-5.10.134-x86_64.config BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config
--- ../kernel-5.10.134-x86_64.config    2025-02-25 14:00:24.471765118 +0800
+++ BUILD/kernel-5.10.134-18.an8/linux-5.10.134-18.an8.x86_64/configs/kernel-5.10.134-x86_64.config     2025-02-25 14:01:56.746632747 +0800
@@ -7276,8 +7276,11 @@ CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 # CONFIG_FAT_DEFAULT_UTF8 is not set
-# CONFIG_EXFAT_FS is not set
-# CONFIG_NTFS_FS is not set
+CONFIG_EXFAT_FS=m
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
 # end of DOS/FAT/EXFAT/NT Filesystems

 #

5. 一致性

最后,为了保持一致性,要对kernel-5.10.134-x86_64-debug.config进行相同的步骤!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值