Buildroot 为什么当我更改BR2_LINUX_KERNEL_CUSTOM_CONFIG_文件并运行makelinux reconfigure时,KERNEL.CONFIG不会更改?

Buildroot 为什么当我更改BR2_LINUX_KERNEL_CUSTOM_CONFIG_文件并运行makelinux reconfigure时,KERNEL.CONFIG不会更改?,buildroot,Buildroot,Buildroot 7D43534625AC06AE01987113E912FFAF1AEC2302018.02之后,Ubuntu 17.10主机 我运行: make qemu_x86_64_defconfig printf 'BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"kdb\"\n' >>.config make olddefconfig time make BR2_JLEVEL="$(nproc)" 其中kdb是一种Linux内核配置,具有CO

Buildroot 7D43534625AC06AE01987113E912FFAF1AEC2302018.02之后,Ubuntu 17.10主机

我运行:

make qemu_x86_64_defconfig
printf 'BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"kdb\"\n' >>.config
make olddefconfig
time make BR2_JLEVEL="$(nproc)"
其中kdb是一种Linux内核配置,具有
CONFIG\u KGDB=y

然后正如所料:

grep '^CONFIG_KGDB=y' ./output/build/linux-4.15/.config
他有一根火柴

但是我想尝试一个新的内核配置,所以我尝试:

sed -i 's/BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=kdb/BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=nokdb/'
其中,
nokdb
是一个内核配置,它具有
config_KGDB=n
,然后:

time make BR2_JLEVEL="$(nproc)" linux-reconfigure
然而,令我惊讶的是,内核
.config
没有改变,
config\u KGDB=y
仍然存在

除非我这样做:

rm -f ./output/build/linux-4.15/.config
time make BR2_JLEVEL="$(nproc)" linux-reconfigure
有没有更好的方法来强制重新生成内核
.config
,例如一些其他
linux-*
目标

我不喜欢这个
rm
解决方案,因为它迫使我处理
output
中的“内部”路径

我希望
linux-reconfigure
能为我完成这一再生

如果打开和关闭
BR2\u TARGET\u ROOTFS\u INITRAMFS
,则会出现类似的行为,这会影响Linux内核的
CONFIG\u INITRAMFS\u SOURCE
选项


将检查配置文件的时间戳,因此在执行此操作后:

touch kdb
touch nokdb
printf 'BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"kdb\"\n' >>.config
make olddefconfig
time make BR2_JLEVEL="$(nproc)"
kdb
nokdb
具有相同的修改日期,并且内核不会在下一天重新配置:

sed -i 's/BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=kdb/BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=nokdb/'
time make BR2_JLEVEL="$(nproc)" linux-reconfigure
但是,如果触摸新的配置文件,即使不显式使用
linux重新配置
目标,它也可以工作:

touch nokdb
time make BR2_JLEVEL="$(nproc)"
或者,如果您只是编辑使用过的文件,而不是指向新文件,那么配置也会按预期进行更新