为什么在启动步骤中需要“MLO”?

cha*_*fer 8 linux

我正在研究 Pandaboard 上的启动步骤。根据此操作指南,它们有多个引导步骤(引导 rom > X-loader 或 SPL > U-boot > Linux 内核)。实际上,我不明白为什么他们的这些步骤效率低下。我不能只加载 u-boot 而不是使用名为“MLO”的文件吗?“MLO”实际上是做什么的?他们必须放置“MLO”而不是直接加载 u-boot 是否有任何重要原因?

pau*_*sm4 9

来自 eLinux.org:

http://elinux.org/Panda_How_to_MLO_%26_u-boot

第一阶段引导加载程序从上电开始直接在板上运行。我不知道这个引导加载程序的名称(来自 TI 官方维基,它称为 Boot Rom)。这个引导加载程序初始化最少量的 CPU 和板硬件,然后访问 SD 卡的第一个分区(必须是 FAT 格式),并加载一个名为“MLO”的文件,并执行它。“MLO”是第二阶段引导加载程序。

第二阶段引导加载程序显然可以是 X-loader 或 SPL 之一。这个引导加载程序显然也只是读取 SD 卡的第一个分区,并加载一个名为“u-boot.bin”的文件,然后执行它。“u-boot.bin”是第三阶段的引导加载程序。

第三阶段的引导加载程序是 U-boot,它是许多不同嵌入式电路板和产品的流行引导加载程序。这个引导加载程序有很多不同的功能,包括一个交互式 shell、变量、访问 SD 卡和显示其内容的能力等。接下来会发生什么取决于你的 Panda 板的 U-boot 版本,以及它是如何配置。在一个非常简单的配置中,U-Boot 将在 SD 卡的第一个分区(同样必须格式化为 FAT 分区)的根目录中查找文件“uImage”,然后执行该文件。这是Linux内核。U-Boot 向内核传递一个命令行参数。根据内核的配置方式,它可以接受来自 U-Boot 的命令行,或者使用在构建时编译到其中的命令行。

这是一个“熊猫板的东西”,不一定适用于一般的 Linux。

然而,大多数的所有系统都具有某种类似上面的“多级”开机。例如,启动运行 Windows 的 PC,您会看到:

  1. BIOS启动
  2. 引导扇区从磁盘或 USB 加载;或从网络读取PXE引导记录
  3. Windows 内核启动(您在“启动画面”之前/期间看到的内容)
  4. 最后,“Windows”本身启动

所以它既不是“低效”,也不是不寻常。

PS:这个链接对引导加载顺序也有很好的说明:

PPS:“MLO”代表“Mmc 加载器”


Fra*_*ank 5

当主板启动后,在 CPU 开始使用 SDRAM 之前,仍然需要设置内存管理单元 (MMU)。SoC 有 56KB 的 SRAM,可以在此时使用,但它太小,无法运行 u-boot。额外的步骤是从 SRAM 运行的代码将加载并启动 u-boot。