使用buildroot和uboot配置initramfs



我正试图让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(初始化一些东西,然后按照as config的指示,通过从ext4分区将内核写入内存并运行它
  3. 这个内核没有cpio,所以它没有运行

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

相关内容

  • 没有找到相关文章

最新更新