【问题标题】:OS booting by U-Boot通过 U-Boot 引导操作系统
【发布时间】:2019-03-21 06:41:26
【问题描述】:

我最近在 imx6 上启动了与板启动相关的项目,我发现 u-boot 可用于所有项目。

在 wikipedia (https://en.wikipedia.org/wiki/Das_U-Boot#References) 上开始研究 u-boot

它声明 u-boot 通过读取内核和任何其他相关数据(如 dts 文件)来引导操作系统,然后使用适当的参数执行内核。 然而,当我们加载镜像时,我们只加载了 u-boot、内核和 rootfs,那么 u-boot 如何引导操作系统呢?它是否已经存在于板的内部存储器中? 还是内核的运行实例称为操作系统?

【问题讨论】:

  • 任何额外的 cmets/问题/想法可以帮助我们帮助您? - 谢谢。

标签: linux-kernel operating-system u-boot


【解决方案1】:

您没有提供您使用的确切命令,但您可能对您加载了一个名为 uImage 的文件(您指的是 u-boot 内核映像)感到困惑:

但是,当我们加载图像时,我们只加载 u-boot 内核和 rootfs

如果是这种情况,请注意它不是 u-boot 映像(如果您可以使用 bootm 等命令,则您已经在运行 u-boot),而是 u-boot 映像格式的 Linux 内核映像使用 u-boot mkimage 实用程序创建 - 请参阅 here

uImage 实际上是 Linux 内核映像本身,它由 u-boot 实用程序 mkimage 使用特殊的 u-boot 格式转换为文件。

从 Linux 内核 zImage 文件创建 uImage 的典型命令例如是:
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux kernel" -d arch/arm/boot/zImage uImage。 uImage 确实包含 Linux 操作系统,这就是为什么您能够通过将其与 rootfs 一起加载来启动系统的原因。

【讨论】:

  • 嗨弗兰特,你说得对,我确实加载了 uimage,我还加载了 u-boot 二进制文件和根文件系统,但我对操作系统的来源感到困惑,因为我没有t 加载它,我是否正确假设执行 bu u-boot 时的内核映像称为 OS?
  • P.S 我忘了在上面的问题中添加逗号,现在改为:然而,当我们加载图像时,我们只加载 u-boot、内核和 rootfs
  • @Producer:你说的对,u-boot加载/执行的内核镜像是Linux操作系统。问题是 uImage 是由 u-boot 实用程序 mkimage 转换为特殊 u-boot 格式的 Linux 内核映像。从 Linux 内核 zImage 文件创建 uImage 的典型命令是:mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux kernel" -d arch/arm/boot/zImage uImageuImage 确实包含 Linux 操作系统,如上面的答案中所述,而不是“u-boot 二进制文件”。这更有意义吗?
  • 啊,是的,这让事情变得更清楚了,谢谢弗兰特先生。
  • @Producer:感谢您的反馈。我用它来改进原始答案:如果您认为它现在可以正确回答您的原始问题,您可能希望接受它。
猜你喜欢
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多