如何在buildroot中重buildrootfs

我将要build立构build环境,为AT91SAM9X25开发自己的linuxembedded式系统。 我正在使用buildroot来做到这一点。 make命令构build所有目标,首先构build工具链,然后打包,然后创buildrootfs(tar,cpio …)的rootfs和映像。 重buildrootfs我通常使用make clean然后make。 make clean命令删除所有工具链。

所以我的第一个问题是:有没有一些方法可以在不构build工具链的情况下重新创buildrootfs? 这需要很多时间。

另外,我正在buildroot中构buildLinux内核。 我在buildroot中打开了BR2_LINUX_KERNEL [= y]。 linuxconfiguration为使用Initial RAM文件系统,所以构build内核所需的rootfs映像(应该由buildroot创build)。 当我在buildroot的根目录下运行make时,出现错误的构build失败无法打开“buildroot-2013.05 / output / images / rootfs.cpio”。 因为(如果我理解正确)构build序列是工具链 – pakages – rootfs – linux内核 – rootfs映像。 当它试图构buildLinux内核时,rootfs.cpio映像不会被创build。

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

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

提前致谢。

make命令构建所有目标

你不想这样做(直到Buildroot配置)。
您首先需要通过指定目标板来配置Buildroot。
根据手册,您可以从头开始,或者为您的AT91SAM9X25板创建一个Buildroot配置文件,这个板来自类似的板子,比如configs / at91sam9g20dfc_defconfig

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

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

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

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

如果您将Buildroot配置为使用您自己的或者外部工具链,那么make clean不会将其移除。 如果您将Buildroot配置为安装在其目录之外的工具链,那么在make clean它可能会make clean

当然,Buildroot make很聪明,可以知道自从上一次构建之后发生了什么变化以及需要重新编译的内容。
应该是极少数情况下,您需要删除output/build/目录来强制重新编译。

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

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

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

关于使用Buildroot for AT91SAM9x5的更简洁的信息就是这个Linx4SAM页面

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

还有其他工具,比如Open Embedded ,但是将其描述为“ 更高效 ”是主观的。


附录

如何在buildroot中重建rootfs

要强制rootfs被重建(在这种情况下是initramfs),在output / build / linux-x.xx.xx目录中删除三个隐藏的文件

  .stamp_images_installed .stamp_initramfs_rebuilt .stamp_target_installed