在scripts/kconfig路徑下有一個merge_config.sh,可以用於將將兩個defconfig merge成一個.
使用用法如下:
./scripts/kconfig/merge_config.sh -m arch/arm64/configs/defconfig arch/arm64/configs/usb-config
mv -f .config .merged.config
make KCONFIG_ALLCONFIG=.merged.config alldefconfig
其中merge_config.sh 可以帶一個option,這里主要用-m。
usage() {
echo "Usage: $0 [OPTIONS] [CONFIG [...]]"
echo " -h display this help text"
echo " -m only merge the fragments, do not execute the make command"
echo " -n use allnoconfig instead of alldefconfig"
echo " -r list redundant entries when merging fragments"
echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead."
}
這里一定要用KCONFIG_ALLCONFIG 來制定用的是.merged.config alldefconfig,負責默認用的defconfig
/scripts/kconfig/merge_config.sh -m 1.txt Using 1.txt as base # # merged configuration written to .config (needs make) linux-5.4.60-89# cat 1.txt CONFIG_SYNC=y CONFIG_SW_SYNC=y CONFIG_SYNC_FILE=y linux-5.4.60-89#
root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# ./scripts/kconfig/merge_config.sh -m 1.txt Using 1.txt as base # # merged configuration written to .config (needs make) # root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# cat .config CONFIG_SYNC=y CONFIG_SW_SYNC=y CONFIG_SYNC_FILE=y root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89#
root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# ./scripts/kconfig/merge_config.sh -m 1.txt .config Using 1.txt as base Merging .config Value of CONFIG_SYNC_FILE is redefined by fragment .config: Previous value: CONFIG_SYNC_FILE=y New value: # CONFIG_SYNC_FILE is not set # # merged configuration written to .config (needs make) # root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89#
root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# cat 1.txt CONFIG_SYNC=y CONFIG_SW_SYNC=y CONFIG_SYNC_FILE=y root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89#
root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# ./scripts/kconfig/merge_config.sh kernel/configs/android-base.config
Using kernel/configs/android-base.config as base
scripts/kconfig/conf --alldefconfig Kconfig
#
# configuration written to .config
#
Value requested for CONFIG_DEVKMEM not in final .config
Requested value: # CONFIG_DEVKMEM is not set
Actual value:
Value requested for CONFIG_INET_LRO not in final .config
Requested value: # CONFIG_INET_LRO is not set
Actual value:
Value requested for CONFIG_OABI_COMPAT not in final .config
Requested value: # CONFIG_OABI_COMPAT is not set
Actual value:
Value requested for CONFIG_ANDROID_BINDER_DEVICES not in final .config
Requested value: CONFIG_ANDROID_BINDER_DEVICES=binder,hwbinder,vndbinder
Actual value: CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
Value requested for CONFIG_ANDROID_LOW_MEMORY_KILLER not in final .config
Requested value: CONFIG_ANDROID_LOW_MEMORY_KILLER=y
Actual value:
Value requested for CONFIG_ARMV8_DEPRECATED not in final .config
Requested value: CONFIG_ARMV8_DEPRECATED=y
Actual value:
Value requested for CONFIG_CGROUP_BPF not in final .config
Requested value: CONFIG_CGROUP_BPF=y
Actual value:
Value requested for CONFIG_CP15_BARRIER_EMULATION not in final .config
Requested value: CONFIG_CP15_BARRIER_EMULATION=y
Actual value:
Value requested for CONFIG_INET_XFRM_MODE_TUNNEL not in final .config
Requested value: CONFIG_INET_XFRM_MODE_TUNNEL=y
Actual value:
Value requested for CONFIG_NETFILTER_TPROXY not in final .config
Requested value: CONFIG_NETFILTER_TPROXY=y
Actual value:
Value requested for CONFIG_NF_CONNTRACK_IPV4 not in final .config
Requested value: CONFIG_NF_CONNTRACK_IPV4=y
Actual value:
Value requested for CONFIG_NF_CONNTRACK_IPV6 not in final .config
Requested value: CONFIG_NF_CONNTRACK_IPV6=y
Actual value:
Value requested for CONFIG_SETEND_EMULATION not in final .config
Requested value: CONFIG_SETEND_EMULATION=y
Actual value:
Value requested for CONFIG_SWP_EMULATION not in final .config
Requested value: CONFIG_SWP_EMULATION=y
Actual value:
Value requested for CONFIG_SYNC not in final .config
Requested value: CONFIG_SYNC=y
Actual value:
Value requested for CONFIG_USB_CONFIGFS_F_MIDI not in final .config
Requested value: CONFIG_USB_CONFIGFS_F_MIDI=y
Actual value:
Value requested for CONFIG_USB_OTG_WAKELOCK not in final .config
Requested value: CONFIG_USB_OTG_WAKELOCK=y
Actual value:
root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# grep CONFIG_SYNC .config # CONFIG_SYNC_FILE is not set root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# ./scripts/kconfig/merge_config.sh kernel/configs/android-base.config -m Using kernel/configs/android-base.config as base Merging -m The merge file '-m' does not exist. Exit. root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# ./scripts/kconfig/merge_config.sh -m kernel/configs/android-base.config Using kernel/configs/android-base.config as base # # merged configuration written to .config (needs make) # root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89# grep CONFIG_SYNC .config CONFIG_SYNC=y root@ubuntu:/home/ubuntu/kata-linux-5.4.60-89#