我将设置构建环境,为AT91SAM9X25板创建自己的linux系统。我在用buildroot做这件事。make命令构建所有目标,首先构建工具链,然后是包,然后是rootfs和rootfs图像(tar,cpio .)。要重建rootfs,我通常使用make,干净,然后再做。make命令移除所有并包含工具链。
因此,我的第一个问题是:有没有什么方法可以不构建工具链来重新生成rootfs?这需要很长时间。
此外,我正在构建内置的linux内核。我在大楼里打开了BR2_LINUX_KERNEL =y。linux配置为使用初始RAM文件系统,因此要构建内核,它需要rootfs的映像(应该由buildroot创建)。当我在buildroot根目录下运行make时,生成失败时出错,无法打开'buildroot-2013.05/output/images/rootfs.cpio'.因为(如果我正确理解的话)构建序列是工具链- pakages - rootfs - linux内核- rootfs的映像。当它试图构建linux内核时,不会创建rootfs.cpio映像。
因此,第二个问题是:如果我想使用初始的RAM文件系统,如何在buildroot中构建linux?
是否有比建造者更有效率的替代方案?
提前谢谢。
发布于 2013-07-26 23:12:59
make命令构建所有目标
您不希望这样做(直到配置了Buildroot )。
您首先需要通过指定目标板来配置Buildroot。
根据手册,您可以从头开始,或者为从类似的板(如解配置 )派生的AT91SAM9X25板创建一个Buildroot文件
除了Buildroot配置文件之外,您还需要一个Linux内核配置文件(除非您想从头开始配置内核)。
带有AT91SAM9x5的Atmel标准板的内核配置文件是解配置
你还应阅读第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进行AT91SAM9x5的更简洁的信息是 这个Linx4SAM页面
是否有比建造者更有效率的替代方案?
还有其他工具,如开放式嵌入式,但将它们描述为“更有效”是主观的。
增编
如何在buildroot中重建rootfs
要强制重建rootfs (在本例中是initramfs),请删除output/build/linux-x.xx.xx目录中的三个隐藏文件
.stamp_images_installed
.stamp_initramfs_rebuilt
.stamp_target_installed发布于 2018-12-05 02:39:52
在buildroot中重建rootfs
rootfs-ubi使rootfs-ubi重新构建发布于 2022-07-29 08:11:27
如果只想重新生成rootfs分区,请执行
rm -r output/target && make如果您删除了rootfs覆盖中的文件,这会有所帮助。
https://stackoverflow.com/questions/17885451
复制相似问题