使用 buildroot 构建自定义 Linux 内核

问题描述 投票:0回答:1

我正在尝试使用 Buildroot 构建自定义 Linux 内核。我必须这样做,因为我稍后想将生成的内核映像和 rootfs 与 Jailhouse 虚拟机管理程序一起使用。我正在使用从这里下载的以下内核源代码

https://github.com/siemens/linux/tree/jailhouse-enabling/5.15-rt

我使用 Buildroot 来生成内核映像和 rootfs,因为我需要一个非常小的内核来与虚拟机管理程序一起使用。我在使用 Buildroot 时执行以下步骤。

make menuconfig
-> 我使用菜单创建示例 .config 文件。我使用菜单中的内核选项调整这个最小的 .config 文件来指定我的内核源位置和 .config 文件的位置。生成的 .config 文件的该部分如下所示

> BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file:///home/madox/Downloads/linux-jailhouse-enabling-5.15-rt.tar.gz"
> BR2_LINUX_KERNEL_VERSION="custom" BR2_LINUX_KERNEL_PATCH=""
> # BR2_LINUX_KERNEL_USE_DEFCONFIG is not set
> # BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG is not set BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
> BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="/home/madox/Downloads/linux-jailhouse-enabling-5.15-rt/.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="" 

但是,在设置配置后使用

make
时,我收到以下错误。

>> linux custom Extracting
gzip -d -c /home/madox/Downloads/buildroot/dl/linux/linux-jailhouse-enabling-5.15-rt.tar.gz | tar --strip-components=1 -C /home/madox/Downloads/buildroot/output/build/linux-custom   -xf -
>>> linux custom Patching
for p in  ; do if test -d $p ; then PATH=/home/madox/Downloads/buildroot/output/host/bin:$PATH support/scripts/apply-patches.sh  /home/madox/Downloads/buildroot/output/build/linux-custom $p \*.patch || exit 1 ; else PATH=/home/madox/Downloads/buildroot/output/host/bin:$PATH support/scripts/apply-patches.sh  /home/madox/Downloads/buildroot/output/build/linux-custom `dirname $p` `basename $p` || exit 1; fi done
make[2]: *** No rule to make target 'defconfig'.  Stop.
make[1]: *** [linux/linux.mk:647: /home/madox/Downloads/buildroot/output/build/linux-custom/.stamp_dotconfig] Error 2

我想使用自定义 .config 文件来编译内核,这就是我在

BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
中指定的路径。但这似乎不是这个领域的目的。另外,我没有使用任何补丁,因为这个内核源代码已经拥有我需要的一切,但我无法禁用补丁字段(它留空)。

任何人都可以帮助我解决我做错的事情吗? 我只需要一种简单的方法来使用 Buildroot 使用 .config 文件构建内核。或者即使可以使用某些默认配置来构建内核来生成最小尺寸的内核,也可以。

linux linux-kernel kernel buildroot
1个回答
0
投票

Buildroot 是一组用于构建 Linux 内核和其他软件包的 makefile 和脚本。 Buildroot 使用与 Linux 内核相同的 Kconfig 系统。
因此,您需要了解 Buildroot 本身使用的顶层 defconfig.config 文件以及内核和其他软件包(例如 U )使用的底层 defconfig.config 文件。 -启动和Busybox)。

我在使用 Buildroot 时执行以下步骤。

make menuconfig

我使用菜单创建示例 .config 文件。我调整这个最小的 .config 文件 > 使用菜单中的 >kernel 选项指定我的内核源位置和 .config 文件的位置。

上面的shell命令用于配置Buildroot本身,即顶层。您可以配置 Buildroot 以下载特定(主线)Linux 内核版本或使用备用源代码树或 tarball。
但生成的 .config 文件适用于顶级 Buildroot 系统。
您不能将此 .config 文件用于 Linux 内核,即作为 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE 的值(正如您似乎所做的那样)。


使用 Buildroot 设置自定义 Linux 内核配置的步骤可能是:

  1. make distclean
    从新的 Buildroot 目录开始。

  2. make XXX_defconfig
    安装默认的 Buildroot 配置。
    扫描 configs/ 子目录以获取适合您的目标系统的文件。
    对于 x86 目标,请使用 pc_x86_64_bios_defconfigpc_x86_64_efi_defconfig

  3. make menuconfig
    配置Buildroot。
    指定您的自定义 Linux 内核源代码的位置。
    由于 pc_x86_64_XXX_defconfig 已经指定了自定义内核 defconfig(即
    BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
    ),所以不要管它。
    验证内核头的版本号(在工具链下)不比您的自定义内核更新。

  4. make linux-menuconfig
    配置 Linux 内核。
    这是根据您的喜好指定“非常小的内核”的机会。
    请注意,此步骤将需要工具链和其他一些主机实用程序可用,因此在内核菜单可用之前可能会进行大量编译。

  5. make linux-update-config
    保存您的(新的)自定义最小内核配置。
    请注意,此命令实际上将替换 board/pc/linux.config 中的先前(默认)版本。
    稍后,如有必要,您可以
    make distclean
    使用新的 Buildroot 目录重新开始,但可以跳过步骤 #4,因为自定义的最小内核配置已保存为内核的自定义默认值。
    请参阅Buildroot - 如何自定义现有内核 defconfig

  6. make
    为根文件系统构建自定义内核和软件包。

  7. 重复步骤 #3 和/或 #4 来调整您的 Buildroot 和/或内核自定义。但请注意有关部分或不完整重建的已知问题,这些问题可能需要

    make clean

© www.soinside.com 2019 - 2024. All rights reserved.