树莓派超全系列教程文档--(33)树莓派启动选项

news2025/4/20 23:12:46

树莓派启动选项

    • 启动选项
      • `start_file` ,`fixup_file`
      • `cmdline`
      • `kernel`
      • `arm_64bit`
      • `ramfsfile`
      • `ramfsaddr`
      • `initramfs`
      • `auto_initramfs`
      • `disable_poe_fan`
      • `disable_splash`
      • `enable_uart`
      • `force_eeprom_read`
      • `os_prefix`
      • `otg_mode` (仅限Raspberry Pi 4)
      • `overlay_prefix`
      • 配置属性
        • `boot_ramdisk`
        • `boot_load_flags`
        • `enable_rp1_uart`
        • `pciex4_reset`
        • `uart_2ndstage`
        • `erase_eeprom`
        • `eeprom_write_protect`
        • `os_check`
        • `bootloader_update`
      • 安全引导配置属性
        • `program_pubkey`
        • `revoke_devkey`
        • `program_rpiboot_gpio`
        • `program_jtag_lock`

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

启动选项

start_filefixup_file

这些选项指定在引导步骤前传输到 VideoCore GPU 的固件文件。

start_file 指定要使用的 VideoCore 固件文件。
fixup_file 指定用于修改 start_file 中使用的内存位置以匹配GPU内存拆分的文件。

start_filefixup_file 是匹配的一对,使用不匹配的文件导致板子无法启动。这是一个高级选项,因此我们建议您使用 start_xstart_debug 而不是此选项。

NOTE: 不能以这种方式选择裁剪固件( start*cd.elffixup*cd.dat )- 系统将无法启动。启用裁剪固件的唯一方法是指定 gpu_mem=16 。裁剪固件删除了对编解码器、3D和调试日志记录的支持,并将初始早期启动帧缓冲区限制为1080p @16bpp - 尽管KMS可以在稍后阶段用32bpp 4K帧缓冲区替换它,就像任何固件一样。

NOTE: Raspberry Pi 5, Compute Module 5, 和Raspberry Pi 500固件独立存储在引导加载程序EEPROM中。

cmdline

cmdline 是引导分区上用于读取内核命令行字符串的替代文件名;默认值为 cmdline.txt

kernel

kernel 是引导分区上用于加载内核的替代文件名。Raspberry Pi 1、Zero 和 Zero W 以及Raspberry Pi Compute Module 1 的默认值为 kernel.img 。Raspberry Pi 2、3、3+ 和 Zero 2 W 以及 Raspberry Pi Compute Module 3 和 3+ 的默认值为 kernel7.img 。Raspberry Pi 4 和 400 以及 Raspberry Pi Compute Module 4的默认值为 kernel8.img ,如果设置 arm_64bit 为 0,则使用 kernel7l.img

Raspberry Pi 5, Compute Module 5, 和 Raspberry Pi 500 固件默认加载 kernel_2712.img ,因为此内核包含特定于 Raspberry Pi 5 的优化(例如16K页面大小)。如果此文件不存在,则将加载通用64位内核( kernel8.img )。

arm_64bit

如果设置为1,内核将以64位模式启动。设置为0选择32位模式。

在64位模式下,固件将选择适当的内核(例如 kernel8.img ),除非定义了显式的 kernel 选项,在这种情况下使用该选项。

在Pi 4系列(Pi4B、Pi 400、CM4和CM4S)上默认为1,在所有其他平台上默认为0。但是,如果显式 kernel 选项中给出的名称与已知内核之一匹配,则将相应地设置 arm_64bit

64 位内核有以下几种形式:

  • 未压缩的映像文件
  • 映像的 gzip 压缩包

这两种形式都可以使用 img 文件扩展名;引导加载程序使用文件开头的签名字节识别存档。

以下 Raspberry Pi 型号支持此标记:

  • 2B rev 1.2
  • 3B
  • 3A+
  • 3B+
  • 4B
  • 400
  • 2 W
  • Compute Module 3
  • Compute Module 3+
  • Compute Module 4
  • Compute Module 4S

从 Raspberry Pi 5, Compute Module 5, 和 Raspberry Pi 500 以后的型号 支持 64 位内核。这些型号不支持此标记。

ramfsfile

ramfsfile 是要加载的 ramfs 的引导分区上的可选文件名。

NOTE: 较新的固件支持加载多个 ramfs 文件。您应该用逗号分隔多个文件名,注意不要超过80个字符的行长限制。所有加载的文件都在内存中连接起来,并被视为单个 ramfs blob。更多信息在 论坛上。

ramfsaddr

ramfsaddr 是应该加载 ramfsfile 的内存地址。

initramfs

initramfs 命令同时指定了 ramfs 文件名 内存地址。它在一个参数中同时执行 ramfsfileramfsaddr 的操作。地址也可以是 followkernel (或 0 ),以便将其放在内核映像之后的内存中。示例值如下 initramfs initramf.gz 0x00800000initramfs init.gz followkernel。与 ramfsfile 一样,较新的固件允许通过逗号分隔多个文件名来加载多个文件。

NOTE: 此选项使用与所有其他选项不同的语法,您不应在此处使用 = 字符。

auto_initramfs

如果 auto_initramfs 设置为1,则使用与内核选择相同的规则查找initramfs文件。

disable_poe_fan

默认情况下,即使没有连接 PoE HAT,也会在启动时对 I2C 总线进行探测。将该选项设置为 1 将禁止通过 I2C(ID_SD 和 ID_SC)引脚控制 PoE HAT 风扇。如果不使用 PoE HAT,这将有助于缩短启动时间。

disable_splash

如果将 disable_splash 设置为 1 ,则启动时不会显示彩虹闪屏。默认值为 0

enable_uart

enable_uart=1 (与 cmdline.txt 中的 console=serial0,115200 结合使用)要求内核创建一个串行控制台,可通过 GPIO 14 和 15(40 针接头的针脚 8 和 10)访问。编辑 cmdline.txt ,删除 quiet 行后,内核的启动信息也会出现在该行。另请参阅 uart_2ndstage

force_eeprom_read

将该选项设为 0 ,可防止固件在上电时尝试读取 I2C HAT EEPROM(连接到引脚 ID_SD 和 ID_SC)。另请参阅 disable_poe_fan

os_prefix

os_prefix 是一个可选设置,允许在同一卡上安装的多个版本的内核和设备树文件之间进行选择。操作系统文件指的是内核、initramfs、cmdline.txt、.dtbs 和 overlays。前缀通常是目录名,但也可以是文件名的一部分,如 “test-”。因此,目录前缀必须包括尾部的 / 字符。

为了降低系统无法启动的可能性,固件首先测试提供的前缀值的可行性 — 除非在新位置/名称处可以找到指定的内核和.dtb,否则前缀将被忽略(设置为"")。这种可行性测试的一个特殊情况应用于覆盖,如果 +${os_prefix}${overlay_prefix}+ 存在,它只会从 +${os_prefix}${overlay_prefix}README+ 加载(其中overlay_prefix, overlay_prefix 的默认值是 overlay/ ),否则它会忽略 os_prefix 并将覆盖视为共享。

(固件在检查前缀时检查密钥文件而不是目录的存在的原因有两个:前缀可能不是目录,并且并非所有引导方法都支持测试目录的存在。)

NOTE: 任何用户指定的操作系统文件都可以通过使用绝对路径(相对于引导分区)绕过所有前缀 - 只需使用 kernel=/my_common_kernel.img

另请参见 overlay_prefix, overlay_prefixupstream_kernel

otg_mode (仅限Raspberry Pi 4)

USB On-The-Go(通常缩写为OTG)是一项功能,允许支持带有适当OTG电缆的USB设备将自己配置为USB主机。在较旧的Raspberry Pi上,一个USB 2控制器用于USB主机和设备模式。

旗舰产品从Raspberry Pi 4B 和 键盘系列产品 从 Raspberry Pi 400(不是CM4或CM4IO)以后添加了一个高性能USB 3控制器,通过PCIe连接,以驱动主USB端口。传统的USB 2控制器仍然可以在USB-C电源连接器上用作设备( otg_mode=0 ,默认值)。

otg_mode=1 请求将功能更强大的XHCI USB 2控制器用作该USB-C连接器上的可以替换的主机控制器。

NOTE: Raspberry Pi OS 在 /boot/firmware/config.txt中的[CM4]配置中已经默认添加此设置。

overlay_prefix

指定加载overlays的子目录/前缀,默认为 overlays/ (注意尾部的 / )。如果与 os_prefix,os_prefix 结合使用, os_prefix 将在 overlay_prefix 之前,例如, dtoverlay=disable-bt 将尝试加载 +${os_prefix}${overlay_prefix}disable-bt.dtbo+

NOTE: 除非存在 +${os_prefix}${overlay_prefix}README+ ,否则overlays将与主操作系统共享(即忽略 os_prefix )。

配置属性

Raspberry Pi 5 需要一个 config.txt 文件,以表明分区是可启动的。

boot_ramdisk

如果该属性设置为 1,则引导加载程序将尝试加载一个名为 boot.img 的内存盘文件,其中包含 boot filesystem。随后的文件(如 start4.elf)将从内存盘读取,而不是原始启动文件系统。

boot_ramdisk 的主要用途是支持 安全启动,不过,未签名的 boot.img 文件对网络启动或 RPIBOOT 配置也很有用。

  • ramdisk 文件的最大大小为 96MB。
  • boot.img 文件是原始磁盘 .img 文件。建议使用无 MBR 的普通 FAT32 分区格式。
  • 在操作系统启动之前,ramdisk 文件系统的内存会被释放。
  • 如果选择 TRYBOOT,引导加载程序将搜索 tryboot.img 而不是 boot.img
  • 另请参阅 autoboot.txt。

有关 secure-boot 和创建 boot.img 文件的更多信息,请参阅 USBBOOT.

Default: 0

boot_load_flags

自定义固件(裸机)的实验属性。

位 0 (0x1) 表示 .elf 文件是定制固件。这将禁用任何兼容性检查(例如,是否支持 USB MSD 启动),并在启动可执行文件前重置 PCIe。

与 Raspberry Pi 5 无关,因为它没有 start.elf 文件。

Default: 0x0

enable_rp1_uart

设置为 1 时,固件会将 RP1 UART0 初始化为 115200bps,并且在启动操作系统前不会复位 RP1(可使用 pciex4_reset=1 单独配置)。
这使得在早期启动代码(例如在裸机调试期间)中更容易在 40 针上获得 UART 输出。

Default: 0x0

pciex4_reset

仅限 Raspberry Pi 5。

默认情况下,RP1 使用的 PCIe x4 控制器会在启动操作系统前复位。如果将该参数设置为 0,则重置将被禁用,操作系统或裸机代码可从引导加载程序继承 PCIe 配置设置。

Default: 1

uart_2ndstage

如果 uart_2ndstage1,则启用 UART 的调试记录。该选项也会在 start.elf 中自动启用 UART 日志记录。Boot options 页面对此也有说明。

BOOT_UART "属性也会启用引导加载器 UART 日志,但除非同时设置了 uart_2ndstage=1,否则不会在 start.elf 中启用 UART 日志。

Default: 0

erase_eeprom

如果 erase_eeprom 设置为 1,那么 recovery.bin 将擦除整个 SPI EEPROM,而不是烧录引导程序映像。此属性对正常启动没有影响。

Default: 0

eeprom_write_protect

配置 EEPROM 写入状态寄存器。可将其设置为将整个 EEPROM 标记为写保护,或清除写保护。

该选项必须与控制 EEPROM 写状态寄存器 更新的 EEPROM /WP 引脚结合使用。 除非同时配置了 写入状态寄存器,否则将 /WP 拉低(CM4 的 EEPROM_nWP 或 Raspberry Pi 4 的 TP5)不会对 EEPROM 进行写保护。

详情请参见 Winbond W25x40cl 或 Winbond W25Q16JV 数据手册。

recovery.binconfig.txt 中的 eeprom_write_protect 设置。

在这里插入图片描述

NOTE: flashrom 不支持清除写保护区域,如果定义了写保护区域,将无法更新 EEPROM。

在 Raspberry Pi 5 上,/WP 默认为低电平,因此一旦配置了 写状态寄存器,就会启用写保护。要清除写保护,可通过连接 TP14TP1/WP 拉高。

Default: -1

os_check

在 Raspberry Pi 5 上,固件会自动检查兼容的设备树文件,然后再尝试从当前分区启动。否则,不兼容的旧内核将被加载,然后挂起。
要禁用此检查(例如用于裸机开发),请在 config.txt 中设置 os_check=0

Default: 1

bootloader_update

该选项可设置为 0,以阻止自更新,而无需更新 EEPROM 配置。在通过网络启动更新多个 Raspberry Pi 时,该选项有时非常有用,因为可以对每个 Raspberry Pi 进行控制(例如,通过 config.txt 中的序列号过滤器)。

Default: 1

安全引导配置属性

如何使用 Raspberry Pi 安全启动


本白皮书介绍如何在基于 Raspberry Pi 4 的设备上实现安全启动。有关我们实现安全启动实施方法的概述,请参阅 Raspberry Pi 4 安全启动 白皮书。安全启动系统适用于基于 buildroot 的操作系统镜像;不建议或不支持将其用于 Raspberry Pi OS。


下面的 config.txt 属性用于对 secure-boot OTP 设置进行编程。这些更改是不可逆的,只能在刷新引导加载程序 EEPROM 映像时通过 RPIBOOT 进行编程。这可确保 “安全启动” 无法通过远程或意外插入过期 SD 卡映像进行设置。

有关启用 secure-boot 的更多信息,请参阅 USBBOOT 库中的 安全启动须知 和 安全启动指引。

program_pubkey

如果该属性设置为 1,那么 recovery.bin 将把 EEPROM 映像中公钥的哈希值写入 OTP。 设置后,引导加载程序将拒绝使用不同 RSA 密钥签名的 EEPROM 映像或未签名的映像。

Default: 0

revoke_devkey

如果该属性设置为 1recovery.bin 将向 OTP 写入一个值,防止 ROM 加载不支持 安全启动 的旧版本第二阶段引导加载程序。这可以防止通过恢复到旧版本的引导加载程序来关闭 secure-boot

Default: 0

program_rpiboot_gpio

Compute Module有一个专用的 nRPIBOOT 跳线,用于选择 RPIBOOT 模式。带有 EEPROM 的旗舰版和键盘版 Raspberry Pi 设备没有专用的 nRPIBOOT 跳线。要在旗舰版和键盘版设备上选择 RPIBOOT 模式,请将下列 GPIO 引脚之一拉低:

  • 2
  • 4
  • 5
  • 6
  • 7
  • 8

该属性不依赖于secure-boot,但要确认该 GPIO 配置不会与任何可能在启动期间将 GPIO 拉低的 HAT 冲突。

为了安全起见,只能通过 RPIBOOT 对该属性进行编程,因此必须首先使用 erase_eeprom 清除引导加载程序 EEPROM。这将导致 BCM2711 ROM 故障切换到 RPIBOOT 模式,从而允许设置该选项。

在 BCM2712 上,您也可以通过按住电源按钮并同时连接 USB-C 电源来强制启动 RPIBOOT 模式。

Default: {nbsp}

program_jtag_lock

如果该属性设置为 1,则 recovery.bin将编程一个 OTP 值,阻止使用 VideoCore JTAG。该选项要求同时设置 program_pubkeyrevoke_devkey。该选项可能会阻止故障分析,只有在设备经过全面测试后才可设置。

Default: 0

上一篇 – 树莓派超全系列教程文档–(32)config.txt常用音频配置
下一篇 – 树莓派超全系列教程文档–(34)树莓派配置GPIO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 爬虫解决 GBK乱码问题

文章目录 前言爬取初尝试与乱码问题编码知识科普UTF - 8GBKUnicode Python中的编码转换其他编码补充知识GBKGB18030GB2312UTF(UCS Transfer Format)Unicode 总结 前言 在Python爬虫的过程中,我尝试爬取一本小说,遇到GBK乱码问题&a…

解决echarts饼图label显示不全的问题

解决办法 添加如下配置: labelLayout: {hideOverlap: false},

JCST 2025年 区块链论文 录用汇总

Conference:Journal of Computer Science and Technology (JCST) CCF level:CCF B Categories:交叉/综合/新兴 Year:2025(截止4.19) JCST 2024年 区块链论文 录用汇总 1 Title: An Understandable Cro…

不带无线网卡的Linux开发板上网方法

I.MX6ULL通过网线上网 设置WLAN共享修改开发板的IP 在使用I.MX6ULL-MINI开发板学习Linux的时候,有时需要更新或者下载一些资源包,但是开发板本身是不带无线网卡或者WIFI芯片的,尝试使用网口连接笔记本,笔记本通过无线网卡连接WIFI…

选择排序(简单选择排序、堆排序)

简单选择排序(Selection Sort) 1. 算法思想 它通过多次遍历数组,每次从未排序部分中选择最小(或最大)的元素,将其放到已排序部分的末尾(或开头),直到整个数组有序。 2.…

velocity模板引擎

文章目录 学习链接一. velocity简介1. velocity简介2. 应用场景3. velocity 组成结构 二. 快速入门1. 需求分析2. 步骤分析3. 代码实现3.1 创建工程3.2 引入坐标3.3 编写模板3.4 输出结果示例1编写模板测试 示例2 4. 运行原理 三. 基础语法3.1 VTL介绍3.2 VTL注释3.2.1 语法3.2…

13.第二阶段x64游戏实战-分析人物等级和升级经验

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:12.第二阶段x64游戏实战-远程调试 效果图: 如下图红框,…

六边形棋盘格(Hexagonal Grids)的坐标

1. 二位坐标转六边形棋盘的方式 1-1这是“波动式”的 这种就是把【方格子坐标】“左右各错开半个格子”做到的 具体来说有如下几种情况 具体到庙算平台上,是很巧妙的用一个4位整数,前两位为x、后两位为y来进行表示 附上计算距离的代码 def get_hex_di…

SICAR 标准 安全门锁操作箱 按钮和指示灯说明

1、安全门锁操作箱 2、按钮和指示灯说明 一、指示灯说明 红灯: 常亮:表示安全门已解锁;闪烁:表示安全门未复位;熄灭:表示安全门已复位。 黄灯: 常亮:表示处于维修模式。 绿灯&…

Day10【基于encoder- decoder架构实现新闻文本摘要的提取】

实现新闻文本摘要的提取 1. 概述与背景2.参数配置3.数据准备4.数据加载5.主程序6.预测评估7.生成效果8.总结 1. 概述与背景 新闻摘要生成是自然语言处理(NLP)中的一个重要任务,其目标是自动从长篇的新闻文章中提取出简洁、准确的摘要。近年来…

【blender小技巧】使用blender的Cats Blender Plugin插件将3D人物模型快速绑定或者修复为标准的人形骨骼

文章目录 前言绑定或者修复人形骨骼1、下载模型2、导入模型到blender中3、删除无用的相机和灯光3、导出模型并在unity中使用 专栏推荐完结 前言 有时候我们下载的3D人物模型,可能不带骨骼信息,或者带一些错乱的骨骼信息。这时候我们就可以使用blender将…

Linux——firewalld防火墙(笔记)

目录 一:Firewalld防火墙的概述 (1)firewalld简介 (2)firewalld&iptables的关系 (3)firewalld与iptables service的区别 1. ‌规则管理方式‌ 2. ‌默认策略与设计逻辑‌ 3. ‌配置文…

YOLO拓展-锚框(anchor box)详解

一.锚框(anchor box)概述 1.1什么是锚框 锚框就是一种进行预测的像素框,通过遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。 对于yolo锚框的建设须基于实际…

kubernetes》》k8s》》Service

Kubernetes 中的 Service 是用于暴露应用服务的核心抽象,为 Pod 提供稳定的访问入口、负载均衡和服务发现机制。Service在Kubernetes中代表了一组Pod的逻辑集合,通过创建一个Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址…

已注册商标如何防止被不使用撤销!

近年来已注册商标被撤销越来越多,不乏著名企业或机构,普推知产商标老杨看到前一阵看到央视和百度等申请的商标也被申请撤销,连续三年不使用撤销也是正常的商标流程。 已注册商标被撤销普推老杨看到案例主要是集中在一些早期申请注册的好记的商…

管理与维护samba服务器

允许 Linux、Unix 系统与 Windows 系统之间进行文件和打印机共享,使得不同操作系统的用户能够方便地访问和共享资源,就像在同一局域网中的 Windows 计算机之间共享资源一样。 server01安装Samba服务器 [rootserver ~]# rpm -qa | grep samba [rootserver…

EAGLE代码研读+模型复现

要对代码下手了,加油(ง •_•)ง 作者在他们自己的设备上展现了推理的评估结果,受第三方评估认证,EAGLE为目前最快的投机方法(虽然加速度是评估投机解码方法的主要指标,但其他点也值得关注。比如PLD和Lookahead无需额…

2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence

发表在期刊Journal of Cybersecurity and Privacy上,专门讲知识图谱技术和语义Web工具在网络威胁情报领域的作用,还把本体和知识图谱放在相同的地位上讨论。 此处可以明确一点:本体和知识图谱都可以用于网络威胁情报的应用,当然也…

linux socket编程之udp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…

计算机网络 实验四 静态路由的配置与应用

一、实验目的 掌握路由器基础工作原理及静态路由协议机制熟练使用华为ENSP网络模拟器进行拓扑设计与设备配置建立系统化的网络故障排除思维通过实践验证静态路由在中小型网络中的部署优势 二、实验环境 硬件配置:标准PC终端软件工具:华为企业网络模拟…