ILD

kernel defconfig
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2024-5-26 站点:Inside Linux Development

拿到一个新版本的内核,想要移植一个机型,第一件事就是创建一个配置,那么怎么创建一个新的配置呢?那就是defconfig。


defconfig是一个目标,对于某些ARCH还有特定SoC的defconfig。比如ARM。

$ ls arch/arm/configs/
am200epdkit_defconfig   hisi_defconfig           mvebu_v5_defconfig   sama7_defconfig
aspeed_g4_defconfig     imxrt_defconfig          mvebu_v7_defconfig   shmobile_defconfig
aspeed_g5_defconfig     imx_v4_v5_defconfig      mxs_defconfig        socfpga_defconfig
assabet_defconfig       imx_v6_v7_defconfig      neponset_defconfig   sp7021_defconfig
at91_dt_defconfig       integrator_defconfig     netwinder_defconfig  spear13xx_defconfig
axm55xx_defconfig       ixp4xx_defconfig         nhk8815_defconfig    spear3xx_defconfig
bcm2835_defconfig       jornada720_defconfig     omap1_defconfig      spear6xx_defconfig
clps711x_defconfig      keystone_defconfig       omap2plus_defconfig  spitz_defconfig
collie_defconfig        lpae.config              orion5x_defconfig    stm32_defconfig
davinci_all_defconfig   lpc18xx_defconfig        pxa168_defconfig     sunxi_defconfig
dove_defconfig          lpc32xx_defconfig        pxa3xx_defconfig     tegra_defconfig
dram_0x00000000.config  milbeaut_m10v_defconfig  pxa910_defconfig     u8500_defconfig
dram_0xc0000000.config  mmp2_defconfig           pxa_defconfig        versatile_defconfig
dram_0xd0000000.config  moxart_defconfig         qcom_defconfig       vexpress_defconfig
ep93xx_defconfig        mps2_defconfig           realview_defconfig   vf610m4_defconfig
exynos_defconfig        multi_v4t_defconfig      rpc_defconfig        vt8500_v6_v7_defconfig
footbridge_defconfig    multi_v5_defconfig       s3c6400_defconfig    wpcm450_defconfig
gemini_defconfig        multi_v7_defconfig       s5pv210_defconfig
h3600_defconfig         mv78xx0_defconfig        sama5_defconfig

上面这些defconfig文件都可以作为make目标,生成对应SOC的默认配置。比如高通的:

ARCH=arm make qcom_defconfig


对于ARM64,没有SOC的默认配置,只有一个arch/arm64/configs/defconfig

$ make kernel/defconfig V=1
kernel/prepare
kernel/defconfig
ARCH="arm64" CROSS_COMPILE=/home/yuanjp/toolchain/crosstool-mt7981/bin/aarch64-linux-gnu- make -C /home/yuanjp/Xrouter/staging/source/linux-6.6.31 O=/home/yuanjp/Xrouter/staging/mt7981/linux-6.6.31 defconfig
make[1]: Entering directory '/home/yuanjp/Xrouter/staging/source/linux-6.6.31'
make  -C /home/yuanjp/Xrouter/staging/mt7981/linux-6.6.31 \
-f /home/yuanjp/Xrouter/staging/source/linux-6.6.31/Makefile defconfig
make[2]: Entering directory '/home/yuanjp/Xrouter/staging/mt7981/linux-6.6.31'
make --no-print-directory -C /home/yuanjp/Xrouter/staging/mt7981/linux-6.6.31 \
-f /home/yuanjp/Xrouter/staging/source/linux-6.6.31/Makefile defconfig
ln -fsn /home/yuanjp/Xrouter/staging/source/linux-6.6.31 source
# GEN     Makefile
  { echo "# Automatically generated by /home/yuanjp/Xrouter/staging/source/linux-6.6.31/Makefile: don't edit"; echo "include /home/yuanjp/Xrouter/staging/source/linux-6.6.31/Makefile"; } > Makefile
test -e .gitignore || \
{ echo "# this is build directory, ignore it"; echo "*"; } > .gitignore
make -f /home/yuanjp/Xrouter/staging/source/linux-6.6.31/scripts/Makefile.build obj=scripts/basic
make -f /home/yuanjp/Xrouter/staging/source/linux-6.6.31/scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/arm64/configs/defconfig Kconfig
#
# configuration written to .config
#
make[2]: Leaving directory '/home/yuanjp/Xrouter/staging/mt7981/linux-6.6.31'
make[1]: Leaving directory '/home/yuanjp/Xrouter/staging/source/linux-6.6.31


可以看到,它也是通过conf命令,指定defconfig文件来实现defconfig的。


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.