一些用户 想知道 Raspberry Pi 是否有 BIOS 或 UEFI,与其他计算机一样,因为如您所知,基于 Arm 的计算机也支持 UEFI,例如 这款 SBC 如此受欢迎且便宜. 但事实是,树莓派已经选择了另一种替代解决方案。
在这里您将了解该解决方案是什么以及原因 不使用这个固件, 除了向您展示当没有计算机上的设置菜单时如何在 Raspberry Pi 上进行一些配置...
为什么树莓派不使用 BIOS/UEFI?
如您所知, BIOS 或 UEFI 是固件 它存在于大量计算机中,包括台式机、笔记本电脑、AIO、服务器、工作站等。 然而,它不在 Raspberry Pi 上,尽管它是一个 SBC(单板计算机),不像其他 x86 SBC 那样使用这个固件进行启动过程和系统检查。 这并不是因为 Raspberry Pi 是基于 ARM 的,因为许多 ARM 计算机也有 BIOS/UEFI。
另一方面,必须说这个固件的设计是为了 靴子 除了能够控制许多其他设置之外,还可以更轻松地从操作系统所在的存储介质进行操作。 在这里,他向我们提供了有关 Raspberry Pi 不使用 BIOS 的原因的线索。 一方面,因为它只能从相同的介质启动设备,比如 SD 卡,而不能通过其他方式启动。 另一方面是因为树莓派的外设数量和功能比较有限。
然而,这并不完全是不使用 BIOS 或 UEFI 的理由。 其实仔细分析的话, Raspberry Pi 的 ARM SoC 使用自己的内部固件 无需单独的 BIOS 芯片即可将 CPU 引导至正确状态和系统的其余部分。 但是...那么为什么您不能访问 BIOS 设置或 BIOS 菜单? 一方面,因为这个固件非常有限,不像BIOS/UEFI那么复杂,所以菜单配置参数没有意义,另一方面,因为前面提到的,它只能从默认存储介质。 ,如 SD 卡。
出于这个原因,Raspberry Pi 的开发人员更喜欢使用这个基本固件进行初始化和从 SD 卡启动,而不是使用 只读存储器芯片 在 PCB 上安装更复杂的固件。 而且,如果您看的话,移动设备也没有 BIOS / UEFI,因为它们只能从内部存储器启动 Android(或其他操作系统)。
这样一来,一方面省去了板上那块额外的芯片,另一方面也免除了闪存存储的需要。 会使Raspberry Pi更贵. 您必须单独购买 SD 卡。
但是,必须要说的是,在树莓派 3 实验中加入了对 从 USB 介质启动 必须明确启用并且不能禁用。 这包含在新版本 SoC 的嵌入式固件中,但这有点复杂,这可能是为什么他们最初决定从简单的东西开始,只使用从 SD 存储卡启动。
Raspberry Pi 使用的是什么?
例如,Raspberry Pi 没有 PC 世界所理解的 BIOS 或 UEFI,但它确实有一个 闭源固件 在我上面提到的 SoC 中。 该芯片由 Broadcom 公司设计,该公司为这些 Raspberry Pi Foundation 板提供 BCM。
在 SoC(片上系统) 它集成了一个ARM Cortex-A系列CPU、一个VideoCore GPU、一个用于数字信号处理的DSP、CPU和GPU共享的SDRAM内存以及USB等控制器。 此外,它还包括一个 ROM 存储器,其中集成了我们正在谈论的固件,这是引导所必需的。
诉讼程序
MGI pasos 跟随此固件的是:
- 这个固件负责 启动引导程序 SD 卡上的操作系统。 如您所知,bootloader 挂载 SD 存储卡的 FAT32 分区并进入第二个引导阶段,该阶段已在 SoC 中编程且无法修改。
- 在第二阶段,一个名为 启动代码.bin,其中准备并启动了 GPU 固件。 该文件只能存储在 SD 卡上,因此无法像 PC 的传统 BIOS/UEFI 那样更改启动优先级,并且只能从那里启动。 然而,正如我所说,在 Pi 3 上还实验性地添加了从 USB 启动的功能。
- 然后是第三个阶段,其中使用启动 CPU 的 start.elf 文件和一个名为 fixup.dat 的文件,该文件用于在 SDRAM 中创建必要的分区以便开始使用由CPU和GPU。
- 最后,执行用户代码,通常是可执行二进制文件或图像 Linux内核,例如 kernel.img,或来自 Raspberry Pi 支持的其他操作系统,这就是操作系统启动的方式,因此您可以使用它......
如您所见,这是一个简单的过程,但如果我们将其与 PC 或其他计算机进行比较,则有些奇怪。 就是这样,在 Raspberry Pi 的情况下,不像在其他情况下那样启动 CPU, GPU 首先启动. 事实上,这个 Broadcomo GPU 将负责在 SoC 中执行一种非常简单但功能必需的嵌入式操作系统。 它被称为 VCOS(视频核心操作系统),它将与 Linux 进行通信。 这是非常罕见的,但事实是 Pi 的 GPU 不仅负责图形和启动,它还负责 控制系统时钟和音频.
原则上,话虽如此,但我们似乎无能为力 修改启动配置但事实是并非完全如此。 就是在系统的/boot/目录下有一个名为config.txt的文件,如果用文本编辑器打开它,可以很容易地修改它的内容来改变引导并配置一些参数.
此 配置文件 它会在启动 ARM 内核后由 GPU 读取,它包含让 SoC 知道在系统启动期间要做什么的指令。 例如,我们可以修改其中的专用内存、内存刷新、禁用对 L2 缓存的访问、更改 CMA 配置、启用或禁用相机 LED、更改视频模式选项、编解码器、一些选项启动、超频等。
这个文件有一个 句法 非常奇特,因此必须尊重它以避免在启动时出现问题。 如果你想了解更多关于它的信息,你可以 阅读我在此链接中留给您的维基.
更改 Raspberry Pi 上的启动优先级
当您更改 PC 上的启动顺序或优先级时,一切都非常简单,您只需进入 BIOS/UEFI,然后在“启动”选项卡中,您可以找到可以更改的参数以从硬盘启动,一种光学介质、USB、网络等反而, 在 Raspberry Pi 上就没那么容易了. 默认情况下,它将始终从 SBC 中插入的 SD 存储卡启动操作系统。 事实上,即使在版本 3 之后,如果同时插入 SD 卡和 U 盘,系统仍然会先从 SD 启动。 如果拔掉SD,只剩下USB,那么就通过USB来完成。
但是这个顺序是可以改变的。 为此你必须 启动树莓派,例如,并执行以下操作:
- 使用以下命令打开 Raspberry Pi 安装程序:
须藤raspi-config
- 转到“高级选项”部分。 (注意,菜单是英文的)
- 然后,在此部分中,在“引导顺序”选项上按 ENTER。
- 您现在应该看到三个不同的选项可供选择:
- SD卡引导- 默认情况下,此选项已在您的 Raspberry Pi 设备上启用,如果您同时插入 SD 卡和 USB,系统将使用 SD 卡作为默认启动选项,除非您将其移除。
- USB启动:如果你想使用USB作为启动的主要设备,你可以选择这个选项,当你有一个USB设备插入Raspberry Pi时可以使用。 否则,您不应该插入 SD 卡来引导系统。
- 网络启动:如果您的 Raspberry Pi SD 卡由于某种原因无法工作或您的操作系统有问题,此启动选项很有用。 在这种情况下,它将使用 Imager 工具将系统重新安装到 SD 卡上。
完成后,您可以 重启树莓派 应用更改...
诊断 Raspberry Pi 问题 (POST)
最后,您会知道在 BIOS/UEFI 中有一个称为 POST 的步骤,该步骤在操作系统启动之前执行,将检查不同组件的状态。 如果一切正常,它将启动操作系统。 但是,如果它检测到任何问题,它就会停止并在屏幕上显示一条错误消息或发出一些可听见的蜂鸣代码以确定问题所在。
这在 Raspberry Pi 上也不存在。 但是,SoC 固件有一种方法可以尝试标记可能发生的问题以便于诊断。 这是通过其电源 LED 实现的。 例如,对于 Raspberry Pi 4,LED 发出的指示问题的灯码是:
长闪 | 短闪 | Status |
---|---|---|
0 | 3 | 启动期间的一般故障 |
0 | 4 | start*.elf 未找到 |
0 | 7 | 找不到内核映像 |
0 | 8 | 内存故障 |
0 | 9 | 内存不足 |
0 | 10 | 处于暂停状态 |
2 | 1 | 分区不是 FAT(不支持) |
2 | 2 | 读取分区失败 |
2 | 3 | 非 FAT 扩展分区 |
2 | 4 | 哈希或签名不匹配 |
3 | 1 | SPI-EEPROM错误 |
3 | 2 | SPI EEPROM 写保护 |
3 | 3 | I2C错误 |
4 | 4 | 不支持的板类型 |
4 | 5 | 致命固件错误 |
4 | 6 | A型失火 |
4 | 7 | B型失火 |