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

树莓派启动选项

    • 启动选项
      • `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.mzph.cn/bicheng/77615.shtml

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

相关文章

java怎么找bug?Arthas原理与实战指南

Arthas原理与实战指南 1. Arthas简介 Arthas是阿里巴巴开源的Java诊断工具,其名字取自《魔兽世界》的人物阿尔萨斯。它面向线上问题定位,被广泛应用于性能分析、定位问题、安全审计等场景。Arthas的核心价值在于它能够在不修改应用代码、不重启Java进程…

Python自学第1天:变量,打印,类型转化

突然想学Python了。经过Deepseek的推荐,下载了一个Python3.12安装。安装过程请自行搜索。 乖乖从最基础的学起来,废话不说了,上链接,呃,打错了,上知识点。 变量的定义 # 定义一个整数类型的变量 age 10#…

基于STM32中断讲解

基于STM32中断讲解 一、NVIC讲解 简介:当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序,以便及时响应和处理该中断请求。这种设计有助于提高系统的响应速度和可靠性,特别是在需要处理大量中断请求的实…

游戏盾和高防ip有什么区别

游戏盾和高防IP都是针对网络攻击的防护方案,但​​核心目标、技术侧重点和应用场景存在显著差异​​。以下是两者的详细对比分析: ​​一、核心定位与目标​​ ​​维度​​​​高防IP​​​​游戏盾​​​​核心目标​​抵御大流量网络攻击&#xff08…

Spark-SQL3

Spark-SQL 一.Spark-SQL核心编程(四) 1.数据加载与保存: 1)通用方式: SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据&#…

DeepSeek与Napkin:信息可视化领域的创新利器

摘要 在数字化信息爆炸的时代,如何高效地组织思路并将其转化为直观、清晰的可视化图表,成为众多领域面临的关键问题。本文深入剖析了DeepSeek与Napkin这两款工具,详细探讨它们在信息处理与可视化过程中的功能特性、协同工作机制、应用场景、…

conda 创建、激活、退出、删除环境命令

参考博客:Anaconda创建环境、删除环境、激活环境、退出环境 使用起来觉得有些不方便可以改进,故写此文。 1. 创建环境 使用 -y 跳过确认 conda create -n 你的环境名 -y 也可以直接选择特定版本 python 安装,以 3.10 为例: co…

嵌入式芯片中的 低功耗模式 内容细讲

电源域与运行级别概述 电源域(Power Domain) 核心域(Core Domain):包括 CPU 核心和关键架构模块(如 NVIC、CPU 内核寄存器)。 外设域(Peripheral Domain):…

Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock

在Java中,锁是实现多线程同步的核心机制。不同的锁适用于不同的场景,理解其实现原理和使用方法对优化性能和避免并发问题至关重要。 一、隐式锁:synchronized 关键字 实现原理 基于对象监视器(Monitor):每…

@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染

JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染 JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染1、JsonView 注解产生的背景2、为了满足不同场景下返回对应的属性的做法有哪些?2.1 最快速的实现则是针对不同场景新建不同的 DTO…

Etcd 压缩整理

etcd数据存储 在实际生产中使用 ETCD 存储元数据,起初集群规模不大的时候元数据信息不多没有发现什么问题。随着集群规模越来越大,可能引发存储问题。 —auto-compaction-retention 由于ETCD数据存储多版本数据,随着写入的主键增加历史版本需…

【更新完毕】2025妈妈杯C题 mathercup数学建模挑战赛C题数学建模思路代码文章教学:音频文件的高质量读写与去噪优化

完整内容请看文章最下面的推广群 我将先给出文章、代码、结果的完整展示, 再给出四个问题详细的模型 面向音频质量优化与存储效率提升的自适应编码与去噪模型研究 摘 要 随着数字媒体技术的迅速发展,音频处理技术在信息时代的应用愈加广泛,特别是在存储…

React-请勿在循环或者条件语句中使用hooks

这是React Hooks的首要规则,这是因为React Hooks 是以单向循环链表的形式存储,即是有序的。循环是为了从最后一个节点移到一个节点的时候,只需通过next一步就可以拿到第一个节点,而不需要一层层回溯。React Hooks的执行&#xff0…

【大模型】 LangChain框架 -LangChain实现问答系统

LangChain 介绍与使用方法 1. 什么是 LangChain?2. LangChain 的主要功能3. 如何使用 LangChain?3.1 环境准备3.2 基本使用示例3.2.1 简单的问答系统3.2.2 结合外部工具 3.3 高级用法 4. 常见问题及解决方法4.1 安装问题4.2 运行问题4.3 性能问题 5. 实战…

企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置)

企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置) 摘要:本文深入讲解在离线环境下部署HAProxy 3.1.1的全流程,涵盖源码编译、系统服务封装、K8S APIServer四层负载配置等核心环节,并提供生产级高…

Python网络爬虫设计(一)

目录 一、网络爬虫 1、基本的爬虫 2、获取URL 3、查找网页源码关键字 4、代码实现 二、requests库 1、requests的优势和劣势 2、获取网页的其他库 (1)selenium库 (2)pyppeteer库 三、pyppeteer库 1、pyppeteer库的来历…

BR_频谱20dB 带宽(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])

目录 一、规范要求 1、协议章节 2、测试目的 二、测试方法 1、样机初值条件: 2、测试步骤: 方法一:频谱仪 方法二:综测仪CMW500 3、预期结果 一、规范要求 1、协议章节 4.5.5 RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Ba…

【橘子大模型】初探rag知识库的构建

一、简介 我们在实现了一系列功能之后,终于来到了rag的部分,下面我们将基于langchain来实现一个rag检索。 关于rag方面的知识,可以查看这两篇文章: 大模型应用之RAG详解 什么是 RAG(检索增强生成) 或者是去…

CentOS7执行yum命令报错 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7执行yum命令报错 引更新yum源备份原有源创建新的源文件清理并重建缓存 引 CentOS 7 系统无法连接到 CentOS 的官方镜像站点。这通常是由于网络问题或 CentOS 7 已停止维护导致的(2024年6月30日后 CentOS 7 已进入 EOL) 报错明细: 已…

VSCode安装与环境配置(Mac环境)

20250419 - 概述 大概是非常久之前了,装了VSCode,估计都得21的时候了,电脑上也没更新过。当时安装也直接装上就完事了。这次把版本更新一下,同时记录一下这个安装过程。 安装 mac下安装非常简单,直接从官网下载&am…