10

I am going to setup build environment to make my own linux embedded system for AT91SAM9X25 Board. I am using buildroot to do this. The make command build all targets, the first it build toolchain then packages and then rootfs and images of rootfs (tar, cpio ...). To rebuild rootfs I usually use make clean and then make. The make clean command removes all and including toolchain.

So the first my question is: Is there some way to remake rootfs without building toolchain? It takes a lot of time.

Also I am building linux kernel within buildroot. I have turned on BR2_LINUX_KERNEL [=y] in buildroot. The linux configured to use Initial RAM filesystem, so to build kernel it required image of rootfs (which should be created by buildroot). When I run make under root of buildroot the building fails with error Cannot open 'buildroot-2013.05/output/images/rootfs.cpio'. Because (if I understand correctly) the building sequence is toolchain - pakages - rootfs - linux kernel - images of rootfs. When it tries to build linux kernel the rootfs.cpio image is not created.

So the second question is: How to build linux within buildroot if I want to use Initial RAM filesystem?

Possibly are there more efficient alternatives than buildroot?

Thanks in advance.

4

2 回答 2

13

make 命令构建所有目标

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

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

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

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

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

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

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

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

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

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

有关为 AT91SAM9x5 使用 Buildroot 的更简洁信息是这个 Linx4SAM 页面

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

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


附录

如何在 buildroot 中重建 rootfs

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

    .stamp_images_installed
    .stamp_initramfs_rebuilt
    .stamp_target_installed
于 2013-07-26T23:12:59.333 回答
0

在 buildroot 中重建 rootfs

  1. 查看依赖项:
    make show-targets
    
    示例输出:
    rootfs-cpio rootfs-tar rootfs-ubi rootfs-ubifs
    
  2. 重建目标。例子:
    # Tell buildroot to rebuild `rootfs-ubi`
    make rootfs-ubi rebuild 
    
于 2018-12-05T02:39:52.597 回答