4.3.2. 配置 Uboot 和 Kernel 选项参数

在嵌入式系统开发中, Uboot 和 Kernel 的功能选项配置(也称为裁剪)是一个常见且关键的步骤。通过配置选项,用户可以根据系统的实际需求,去除不必要的功能,从而提升系统的效率和可靠性。以下是配置 Uboot 和 Kernel 选项的两种常用方法:xbuild 命令和手动配置。

4.3.2.1. 配置 Uboot 选项参数

使用 xbuild 命令配置

xbuild 编译系统中,提供了一个自动化工具来配置 Uboot 选项。使用以下命令可以简化配置流程,自动进行环境设置、生成配置文件并保存:

./bd.sh uboot menuconfig
# 或者使用快捷命令,先执行 source build/quickcmd.sh 配置环境后使用
bumc

命令执行成功后,系统会启动一个图形化的配置界面。用户可以在此界面中选择需要启用的功能或删除不需要的功能。

  • 打开配置界面后,可以看到一系列选项,用户可以通过界面进行交互,选择要启用或禁用的功能。

    image-20220518111319607

  • 完成配置后,选择 Exit 退出,系统会提示是否保存修改,选择 Yes 保存配置到 .config 文件中。

    image-20220518111506018

自动保存和清理:

通过 ./bd.sh uboot menuconfig 启动的配置界面,当用户退出配置界面并保存时,xbuild 会自动执行以下步骤:

  • 清理配置文件:使用 make savedefconfig 命令对配置文件进行清理,保留必要的配置项,删除被依赖项,生成新的 defconfig 文件。

  • 更新配置文件:将生成的 defconfig 文件复制到板级配置文件中,从而覆盖原有的 Uboot 配置文件。

示例操作如下:

make savedefconfig                                 # 清理配置,删除被依赖项,生成 defconfig 文件
cp -f defconfig < 板级配置文件中的 Uboot 配置文件 >  # 覆盖板级配置文件

手动配置

提示: 手动配置 Uboot 选项的过程是对 ./bd.sh uboot menuconfig 命令的分步操作。操作过程中,用到的配置文件和参数,需要用户知道含义和作用。

以下是手动配置的步骤,以配置 uboot/configs/hobot_x5_soc_defconfig 为例:

  • 步骤一:进入 Uboot 目录并使用默认配置

    cd uboot
    make ARCH=arm64 hobot_x5_soc_defconfig
    

    这个命令会加载 hobot_x5_soc_defconfig 配置文件,设置 Uboot 编译环境,并在根目录下生成 .config 文件。执行命令的日志如下:

    $ make ARCH=arm hobot_x5_soc_defconfig
    
      HOSTCC  scripts/basic/fixdep
      HOSTCC  scripts/kconfig/conf.o
      YACC    scripts/kconfig/zconf.tab.c
      LEX     scripts/kconfig/zconf.lex.c
      HOSTCC  scripts/kconfig/zconf.tab.o
      HOSTLD  scripts/kconfig/conf
    #
    # configuration written to .config
    #
    

    以上 make 命令功能解释(提示:理解即可,不需要实际执行):

    make 命令会首先执行位于顶级目录下的 Makefile 文件。在这个 Makefile 中,对于以 config 结尾的目标都有一个共同的入口:

    %config: scripts_basic outputmakefile FORCE
            $(Q)$(MAKE) $(build)=scripts/kconfig $@
    

    这段代码的展开效果为:

    make -f ./scripts/Makefile.build obj=scripts/kconfig hobot_x5_soc_defconfig
    
  • 步骤二:进入图形化配置界面

    make ARCH=arm menuconfig
    

    执行命令后,会进入图形化配置界面,可以选择启用或禁用相关功能。

    image-20220518111319607

  • 步骤三:保存配置并生成清理后的 defconfig 文件

    在配置完成后,选择 Exit 退出,并根据提示保存配置。然后执行以下命令生成清理后的 defconfig 文件:

    make ARCH=arm savedefconfig
    

    image-20220518111506018

  • 步骤四:对比修改前后的配置(可选)

    为了确保修改符合预期,可以使用 diff 命令对比配置文件的差异:

    diff defconfig configs/hobot_x5_soc_defconfig
    
  • 步骤五:更新配置文件并清理编译环境

    将生成的 defconfig 文件复制到源配置文件中,并清理编译环境:

    cp defconfig configs/hobot_x5_soc_defconfig  # 覆盖源配置文件
    
    # 清理源码目录下的 .config 等文件,否则在重新编译系统时会提示需要 xxx is not clean, please run 'make mrproper'
    make distclean
    # 或者使用错误提示的命令清理
    make mrproper
    
  • 步骤六:重新编译 Uboot

    完成配置后,使用以下命令重新编译 Uboot:

    ./bd.sh uboot
    

4.3.2.2. 配置 Kernel 选项参数

使用 xbuild 命令配置

配置 Kernel 的方式与配置 Uboot 类似,xbuild 系统同样提供了图形化配置界面来帮助用户配置 Kernel 选项。执行以下命令可以打开 Kernel 配置界面:

./bd.sh boot menuconfig
# 或者使用快捷命令,先执行 source build/quickcmd.sh 配置环境后使用
bbmc

执行成功后,图形化配置界面将自动启动,用户可以在此界面中选择需要启用的功能或删除不需要的功能。

  • 打开配置界面后,可以看到一系列选项,用户可以通过界面进行交互,选择要启用或禁用的功能。

image-20220518111319607

  • 配置完成后,选择 Exit 退出,系统会提示是否保存修改,选择 Yes 保存配置到 .config 文件中。

image-20220518111506018

自动保存和清理:

通过 ./bd.sh boot menuconfig 启动的配置,在配置退出后,xbuild 会自动执行以下步骤:

  • 清理配置文件:使用 make savedefconfig 命令清理配置文件,生成 defconfig 文件。

  • 更新配置文件:将 defconfig 文件复制到板级配置文件中。

示例操作如下:

make savedefconfig                               # 清理并生成 defconfig 文件
cp defconfig < 板级配置文件中的 Kernel 配置文件 >  # 覆盖板级配置文件

手动配置

提示: 手动配置 Kernel 选项的过程是对 ./bd.sh boot menuconfig 命令的分步操作。操作过程中,用到的配置文件和参数,需要用户知道含义和作用。

以下是手动配置的详细步骤, 以配置 kernel/arch/arm64/configs/hobot_x5_soc_defconfig 为例:

  • 步骤一:进入 Kernel 目录并使用默认配置

    cd kernel
    make ARCH=arm64 hobot_x5_soc_defconfig
    

    该命令会生成 .config 文件,并为 Kernel 配置环境。

  • 步骤二:进入图形化配置界面

    make ARCH=arm64 menuconfig
    

    执行命令后,进入 Kernel 的图形化配置界面,用户可以选择启用或禁用各个功能。

  • 步骤三:保存配置并生成清理后的 defconfig 文件

    配置完成后,退出配置界面并保存,然后执行以下命令生成清理后的 defconfig 文件:

    make ARCH=arm64 savedefconfig
    
  • 步骤四:对比修改前后的配置(可选)

    为了确保配置修改的准确性,可以对比修改前后的差异:

    diff defconfig arch/arm64/configs/hobot_x5_soc_defconfig
    
  • 步骤五:更新配置文件并清理编译环境

    将新的 defconfig 文件复制到源配置文件中,并清理编译环境:

    cp -f defconfig arch/arm64/configs/hobot_x5_soc_defconfig  # 覆盖源配置文件
    
    # 清理源码目录下的 .config 等文件,否则在重新编译系统时会提示需要 xxx is not clean, please run 'make mrproper'
    make distclean
    # 或者使用错误提示的命令清理
    make mrproper
    
  • 步骤六:重新编译 Kernel

    完成配置后,使用以下命令重新编译 Kernel:

     ./bd.sh boot