我正在尝试使用 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 文件构建内核。或者即使可以使用某些默认配置来构建内核来生成最小尺寸的内核,也可以。
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 内核配置的步骤可能是:
make distclean
从新的 Buildroot 目录开始。
make XXX_defconfig
安装默认的 Buildroot 配置。make menuconfig
配置Buildroot。BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
),所以不要管它。make linux-menuconfig
配置 Linux 内核。make linux-update-config
保存您的(新的)自定义最小内核配置。make distclean
使用新的 Buildroot 目录重新开始,但可以跳过步骤 #4,因为自定义的最小内核配置已保存为内核的自定义默认值。make
为根文件系统构建自定义内核和软件包。
重复步骤 #3 和/或 #4 来调整您的 Buildroot 和/或内核自定义。但请注意有关部分或不完整重建的已知问题,这些问题可能需要
make clean
。