繁体   English   中英

使用buildroot和uboot配置initramfs

[英]Configuring initramfs with buildroot and uboot

我试图让initramfs使用buildroot和uboot在嵌入式Linux设备上工作。 我一直在遵循指南,在buildroot和内核配置中设置了initramfs。 但是据我所知,尽管输出中包含了CPIO或根FS,但它并未内置在内核中。

我的问题是双重的。 首先,从较高的角度来看,我对引导过程的理解正确吗?

  1. 第1阶段引导程序(特定于Atmel / ARM)启动并移交
  2. 第2阶段自举程序(uboot)初始化一些东西,将内核加载到内存中并运行它
  3. 内核将CPIO归档文件放入内存,创建该根目录并在该环境中运行init

这意味着我刷新到芯片上的映像是具有引导和系统分区的IMG,系统分区是ext4,并且其中包含CPIO存档。 我不确定如何使第3项实际上从这里发生。

其次,在实际配置方面,Buildroot菜单配置具有许多文件系统选项

  • ext2 / 3/4根文件系统(默认情况下处于启用状态)
  • cpio根文件系统(用作初始RAM文件系统)
  • 链接到linux内核的初始RAM文件系统

然后在内核配置中

  • 常规->初始RAM文件系统和RAM磁盘(initramfs / initrd)支持
  • 常规-> Initramfs源文件(设置为生成的cpio文件)

这里的buildroot是什么? 从我的角度来看,好像我正在获得重复的图像(CPIO和ext4),并且CPIO被忽略了。

对于可能有相同问题的人,最好的解决方法是更加熟悉uboot及其选项。 特别是uboot-env.txt在此过程中扮演的角色。

我对buildroot的理解是错误的。 这个过程是

  1. 构建内核
  2. 创建所有根文件系统(ext和CPIO)
  3. 使用内部的CPIO重建内核
  4. 按照我的genimage.cfg文件的指示打包ext文件

可能会感兴趣如果这个过程是混乱给你。

这是系统正在做的

  1. 第1阶段引导程序(特定于Atmel / ARM)启动并移交
  2. 第2阶段引导程序(uboot)初始化一些事情,然后按照config的指示运行,方法是将内核从ext4分区写入内存并运行它
  3. 该内核没有cpio,因此它没有运行。

更好地了解过程和组件之后,我能够重组img文件并使用引导加载程序来加载使用cpio构建的内核。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM