如何在buildroot中重建rootfs

时间:2013-07-26 15:33:59

标签: linux embedded arm embedded-linux buildroot

我将设置构建环境,为AT91SAM9X25板制作自己的linux嵌入式系统。我正在使用buildroot来做到这一点。 make命令构建所有目标,第一个构建工具链然后打包,然后rootfs和rootfs(tar,cpio ...)的图像。 要重建rootfs,我通常使用make clean然后make。 make clean命令删除所有包括工具链。

所以我的第一个问题是:有没有办法在不构建工具链的情况下重制rootfs?这需要很多时间。

我也在buildroot中构建linux内核。我在buildroot中打开了BR2_LINUX_KERNEL [= y]。 linux配置为使用初始RAM文件系统,因此要构建内核,需要rootfs的映像(应该由buildroot创建)。当我在buildroot的root下运行make时,构建失败并出现错误无法打开'buildroot-2013.05 / output / images / rootfs.cpio'。因为(如果我理解正确的话)构建序列是工具链--pakages - rootfs - linux内核 - rootfs的图像。当它尝试构建linux内核时,不会创建rootfs.cpio映像。

所以第二个问题是:如果我想使用初始RAM文件系统,如何在buildroot中构建linux?

可能有比buildroot更有效的替代方案吗?

提前致谢。

2 个答案:

答案 0 :(得分:13)

  

make命令构建所有目标

您不希望这样做(直到配置Buildroot) 首先需要通过指定目标板来配置Buildroot 根据{{​​3}},您可以从头开始,或者为您的AT91SAM9X25板创建一个Buildroot配置文件,该板来自类似的板,例如manual

除了Buildroot配置文件,您还需要一个Linux内核配置文件(除非您想尝试从头开始配置内核)。
使用AT91SAM9x5的Atmel评估板的内核配置文件为configs/at91sam9g20dfc_defconfig

您还应阅读第3.4.2节。 创建自己的电路板支持

  

所以我的第一个问题是:有没有办法在不构建工具链的情况下重制rootfs?这需要很多时间。

答案取决于您如何定义“重制rootfs ”。 如果删除目录output/images/,则会重写rootfs的文件 如果删除output/build/中的目录,则会从源代码重新编译这些包或子系统。

如果您将Buildroot配置为使用自己的工具链或外部工具链,则make clean不会删除它们。如果您将Buildroot配置为安装它在其目录之外构建的工具链,那么它可能会在make clean期间单独使用。

当然,Buildroot make非常聪明,可以知道自上次构建以来发生了哪些变化以及需要重新编译的内容。 在少数情况下,您需要删除output/build/中的目录以强制重新编译。

  

所以第二个问题是:如果我想使用初始RAM文件系统,如何在buildroot中构建linux?

您需要正确配置Buildroot和Linux内核。

make menuconfig
    Filesystem images --->
make linux-menuconfig
    General setup --->
make

有关使用Buildroot for AT91SAM9x5的更简明信息是at91sam9x5ek_defconfig

  

可能有比buildroot更有效的替代方案吗?

还有其他工具,例如this Linx4SAM page,但将其描述为“更高效”是主观的。


<强>附录

  

如何在buildroot中重建rootfs

强制重建rootfs(在本例中为initramfs)删除 output / build / linux-x.xx.xx 目录中的三个隐藏文件

    .stamp_images_installed
    .stamp_initramfs_rebuilt
    .stamp_target_installed

答案 1 :(得分:0)

在buildroot中重建rootfs

  1. 查看依赖项:显示目标,例如:rootfs-cpio rootfs-tar rootfs-ubi rootfs-ubifs
  2. make rootfs-ubi rebuild // Buildroot将重建rootfs-ubi