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

因此,我的第一个问题是:是否有某种方法可以在不构建工具链的情况下重新构建rootfs?这需要很多时间。

我也在buildroot中构建linux内核。我已在buildroot中打开BR2_LINUX_KERNEL [= y]。 linux配置为使用Initial RAM文件系统,因此要构建内核,它需要rootfs镜像(应由buildroot创建)。当我在buildroot的根目录下运行make时,构建失败,并显示错误无法打开'buildroot-2013.05/output/images/rootfs.cpio'。因为(如果我理解正确),构建顺序是工具链-包装-rootfs-linux内核-rootfs的镜像。尝试构建linux内核时,不会创建rootfs.cpio镜像。

因此,第二个问题是:如果要使用Initial RAM文件系统,如何在buildroot中构建linux?

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

提前致谢。

最佳答案



您不想这样做(直到配置了Buildroot)。
首先,您需要通过指定目标板来配置Buildroot。
对于manual,您可以从头开始,也可以为AT91SAM9X25板创建一个Buildroot配置文件,该文件源自类似的板,例如configs/at91sam9g20dfc_defconfig

除了Buildroot配置文件外,您还将需要一个Linux内核配置文件(除非您想尝试从头开始配置内核)。
带有AT91SAM9x5的Atmel评估板的内核配置文件是at91sam9x5ek_defconfig

您还应该阅读第3.4.2节。创建自己的董事会支持



答案取决于您如何定义“remake rootfs”。
如果删除目录output/images/,那么rootfs的文件将被重写。
如果删除output/build/中的目录,则将从源重新编译那些软件包或子系统。

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

当然,Buildroot make足够聪明,可以知道自上次构建以来发生了什么变化以及必须重新编译什么。
在极少数情况下,您需要删除output/build/中的目录以强制重新编译。



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

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

this Linx4SAM page关于将Buildroot用于AT91SAM9x5的更简洁的信息是Open Embedded



还有其他工具,例如ojit_a,但是将它们描述为“更有效”是主观的。

ADDENDUM



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

关于linux - 如何在buildroot中重建rootfs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17885451/

10-11 18:24