gpt4 book ai didi

linux - 使用 buildroot 和 uboot 配置 initramfs

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:39 29 4
gpt4 key购买 nike

我正在尝试使用 buildroot 和 uboot 让 initramfs 在嵌入式 linux 设备上工作。我一直在按照指南在 buildroot 和内核配置中设置 initramfs。然而,据我所知,它并没有被内置到内核中,尽管 CPIO 或根 FS 被包含在输出中。

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

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

这意味着我闪存到芯片上的镜像是一个带有引导和系统分区的 IMG,系统分区是 ext4,其中包含 CPIO 存档。我不确定如何从这里真正实现第 3 项。

其次,在实际配置方面,Buildroot menuconfig有很多文件系统选项

  • ext2/3/4 根文件系统(默认开启)
  • cpio 根文件系统(用作初始 RAM 文件系统)
  • 链接到 linux 内核的初始 RAM 文件系统

然后在内核配置中

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

buildroot 在这里生成什么?从我的角度来看,我似乎得到了重复的图像(CPIO 和 ext4)并且 CPIO 被忽略了。

最佳答案

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

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

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

This如果这个过程让您感到困惑,您可能会感兴趣。

这是系统正在做的事情

  1. 第 1 阶段引导加载程序(特定于 Atmel/ARM)启动并放手
  2. 第 2 阶段引导加载程序 (uboot) 初始化一些东西,然后按照配置的指示运行,将内核从 ext4 分区写入内存并运行
  3. 这个内核没有 cpio,所以它没有运行。

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

关于linux - 使用 buildroot 和 uboot 配置 initramfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com