安泰电子世界网 首页 Ardunio Raspberry Pi 硬件(五)

Raspberry Pi 硬件(五)

2024-11-5 16:51 | 发布者: txc | 查看: 112 | 评论: 0

简介:Raspberry Pi 硬件

故障安全操作系统更新 (tryboot)

引导加载程序/固件提供了一个一次性标志,如果设置了该标志,则会清除该标志,但会导致加载tryboot.txt而不是config.txt。此备用配置将指定挂起的操作系统更新固件、cmdline、内核和os_prefix参数。由于该标志在启动固件之前被清除,因此崩溃或重置将导致在下次重新启动时加载原始config.txt文件。
要设置 tryboot 标志,请在 reboot 命令中的分区号后添加 tryboot。通常,分区号默认为零,但如果添加了额外的参数,则必须指定分区号。

# Quotes are important. Reboot only accepts a single argument.
sudo reboot '0 tryboot'

所有 Raspberry Pi 型号都支持试引导,但是,在 Raspberry Pi 4 Model B 修订版 1.0 和 1.1 上,EEPROM 不得进行写保护。这是因为较旧的 Raspberry Pi 4B 设备必须重置电源(失去 tryboot 状态),因此将其存储在 EEPROM 中。
如果启用了安全启动,则 tryboot 模式将导致加载 tryboot.img 而不是 boot.img。

tryboot_a_b模式

如果 autoboot.txt 中的 tryboot_a_b 属性设置为 1,则加载 config.txt 而不是 tryboot.txt。这是因为 tryboot 开关已经在更高级别(分区)上进行了,因此没有必要在备用分区本身中具有tryboot.txt文件。
注意从 boot.img 虚拟硬盘加载文件时,tryboot_a_b 属性隐式设置为 1。

Raspberry Pi 引导加载程序配置

编辑配置

在编辑引导加载程序配置之前,请更新系统以获取最新版本的 rpi-eeprom 软件包。
要查看当前EEPROM配置,请运行以下命令:

rpi-eeprom-config

要编辑当前 EEPROM 配置并将更新应用于最新的 EEPROM 版本,请运行以下命令:

sudo -E rpi-eeprom-config --edit

有关EEPROM更新过程的详细信息,请参阅引导EEPROM

配置属性

本节介绍引导加载程序中可用的所有配置项目。语法与 config.txt 相同,但属性特定于引导加载程序。除 EDID 外,还支持条件筛选器

BOOT_UART

如果为 1,则在 GPIO 14 和 15 上启用 UART 调试输出。将接收调试终端配置为 115200bps,8 位,无奇偶校验位,1 个停止位。
默认值:0

UART_BAUD

仅限 Raspberry Pi 5。
更改引导加载程序 UART 的波特率。
支持的值:9600、19200、38400、57600、115200、230400、460800、921600
默认值:115200

WAKE_ON_GPIO

如果为 1,则 sudo halt 将以较低功耗模式运行,直到 GPIO3 或 GLOBAL_EN 接地短路。
此设置与 Raspberry Pi 5 无关,因为专用电源按钮可能始终用于从 HALT 或 STANDBY 唤醒。
默认值:1

POWER_OFF_ON_HALT

如果 1 且 WAKE_ON_GPIO=0,则 sudo halt 将关闭所有 PMIC 输出。这是停止的最低功率状态,但可能会导致某些 HAT 出现问题,因为 5V 仍将开启。GLOBAL_EN必须接地短路才能启动。
Raspberry Pi 400 有一个专用的电源按钮,即使处理器关闭也能运行。默认情况下,此行为处于启用状态,但是,WAKE_ON_GPIO=2 可以设置为使用外部 GPIO 电源按钮而不是专用电源按钮。
在 Raspberry Pi 5 上,这会将 PMIC 置于待机模式,所有输出都关闭。无需设置WAKE_ON_GPIO按专用电源按钮即可启动设备。
默认值:0

BOOT_ORDER

BOOT_ORDER设置允许灵活配置不同启动模式的优先级。它表示为 32 位无符号整数,其中每个半字节表示一种引导模式。引导模式以最低有效半字节到最高有效半字节顺序进行尝试。

BOOT_ORDER字段

BOOT_ORDER 属性定义不同启动模式的顺序。它是从右到左读取的,最多可以定义八位数字。

模式描述
0x0SD卡检测尝试 SD,然后等待卡检测指示卡已更改。现在已弃用0xf (RESTART) 可用。
0x1SD卡SD 卡(或计算模块 4 上的 eMMC)。
0x2网络网络启动 - 请参阅网络启动服务器教程
0x3RPIBOOT的RPIBOOT - 请参阅 usbboot
0x4USB-默沙东USB 大容量存储启动 - 请参阅 USB 大容量存储启动
0x5BCM-USB-默沙东USB 2.0 从 USB Type C 插座(CM4:CM4IO 板上的 USB Type A 插座)启动。在 Raspberry Pi 5 上不可用。
0x6NVME公司仅限 CM4 和 Pi 5:从连接到 PCIe 接口的 NVMe SSD 启动。有关详细信息,请参阅 NVMe 启动
0x7HTTP的通过以太网进行 HTTP 引导。有关详细信息,请参阅 HTTP 引导
0xe停止并显示错误模式。需要重启才能退出此状态。
0xf重新启动从BOOT_ORDER字段中的第一个引导模式重新启动,即循环。

RPIBOOT 旨在与计算模块 4 一起使用,以加载自定义调试映像(例如 Linux RAM 磁盘)而不是正常启动。这应该是最后一个启动选项,因为它当前不支持超时或重试。

BOOT_ORDER例子
BOOT_ORDER描述
0xf41先尝试 SD,然后尝试 USB-MSD,然后重复(如果BOOT_ORDER为空,则默认)
0xf14先尝试 USB,然后尝试 SD,然后重复
0xf21先尝试 SD,然后尝试 NETWORK,然后重复

MAX_RESTARTS

如果遇到 RESTART (0xf) 引导模式的次数超过 MAX_RESTARTS 次,则会触发看门狗重置。不建议将其用于一般用途,但对于需要完全重置以解决硬件或网络接口问题的测试或远程系统可能很有用。
默认值:(无限)-1

SD_BOOT_MAX_RETRIES

在切换到 BOOT_ORDER 定义的下一个引导模式之前,SD 引导失败后重试的次数。
-1 表示无限重试。
默认值:0

NET_BOOT_MAX_RETRIES

在切换到 BOOT_ORDER 定义的下一个启动模式之前,在失败后重试网络启动的次数。
-1 表示无限重试。
默认值:0

DHCP_TIMEOUT

在当前迭代失败之前,整个 DHCP 序列的超时(以毫秒为单位)。
最小值:5000
默认值:45000

DHCP_REQ_TIMEOUT

重试 DHCP DISCOVER 或 DHCP REQ 之前的超时(以毫秒为单位)。
最小值:500
默认值:4000

TFTP_FILE_TIMEOUT

通过 TFTP 下载单个文件的超时(以毫秒为单位)。
最小值:5000
默认值:30000

TFTP_IP

TFTP 服务器的可选点分十进制 IP 地址(例如 192.168.1.99),用于覆盖 DHCP 请求的 server-ip。
这在家庭网络上可能很有用,因为可以使用 tftpd-hpa 代替 dnsmasq,其中宽带路由器是 DHCP 服务器。
默认值:""

TFTP_PREFIX

为了支持每个 Raspberry Pi 的唯一 TFTP 引导目录,引导加载程序在文件名前面加上特定于设备的目录。如果在前缀目录中既找不到 start4.elf 也没有找到 start.elf,则清除前缀。
在早期型号上,序列号用作前缀,但在 Raspberry Pi 4 和 5 上,MAC 地址不再从序列号生成,因此很难通过检查 DHCPDISCOVER 数据包在服务器上自动创建 tftpboot 目录。为了支持这一点,可以将TFTP_PREFIX自定义为 MAC 地址、固定值或序列号(默认)。

价值描述
0使用序列号,例如 9ffefdef/
1使用 TFTP_PREFIX_STR 指定的字符串
2使用MAC地址,例如dc-a6-32-01-36-c2/

默认值:0

TFTP_PREFIX_STR

指定 TFTP_PREFIX 设置为 1 时使用的自定义目录前缀字符串。例如:- TFTP_PREFIX_STR=tftp_test/
默认值:""
最大长度:32 个字符

PXE_OPTION43

使用其他字符串重写 PXE Option43 匹配字符串。通常,最好将自定义应用于DHCP服务器,而不是更改客户端行为,但是在无法实现的情况下提供了此选项。
默认值:Raspberry Pi Boot

DHCP_OPTION97

在早期版本中,客户端 GUID (Option97) 只是重复四次的序列号。默认情况下,新的 GUID 格式是四个字符代码 (FourCC)(Raspberry Pi 4 的 RPi4 0x34695052或 Raspberry Pi 5 的 RPi5 0x35695052)、主板修订版(例如 0x00c03111 或 0x00d04170)(4 字节)、mac 地址的最低有效 4 字节和 4 字节序列号的串联。这是唯一的,但也为DHCP服务器提供结构化信息,允许在不依赖以太网MAC OUID的情况下识别Raspberry Pi 4和5计算机。
指定 DHCP_OPTION97=0 以恢复旧行为,或指定非零十六进制值以指定自定义 4 字节前缀。
默认值:0x34695052

MAC_ADDRESS

使用给定值覆盖 Raspberry Pi 以太网 MAC 地址。例如:dc:a6:32:01:36:c2
默认值:""

MAC_ADDRESS_OTP

使用存储在客户 OTP 寄存器中的值覆盖 Raspberry Pi 以太网 MAC 地址。
例如,使用存储在客户 OTP 的第 0 行和第 1 行中的 MAC 地址。

MAC_ADDRESS_OTP=0,1

第一个值(示例中的第 0 行)包含 OUI 和 MAC 地址的最高有效 8 位。第二个值(示例中的第 1 行)存储 MAC 地址的剩余 16 位。 这与制造时编程的Raspberry Pi MAC地址的格式相同。
可以按任一顺序选择和组合任意两个客户行。
客户 OTP 行是 vcgencmd otp_dump输出中的 OTP 寄存器 36 到 43,因此如果前两行按如下方式编程,则 MAC_ADDRESS_OTP=0,1 将提供 e4:5f:01:20:24:7e 的 MAC 地址。

36:247e0000
37:e45f0120

默认值:""

静态 IP 地址配置

如果设置了TFTP_IP和以下选项,则跳过 DHCP 并应用静态 IP 配置。如果 TFTP 服务器与客户端位于同一子网中,则可以省略 GATEWAY。

CLIENT_IP

客户端的 IP 地址,例如192.168.0.32
默认值:""

SUBNET

子网地址掩码,例如255.255.255.0
默认值:""

GATEWAY

TFTP 服务器位于其他子网上时要使用的网关地址,例如192.168.0.1
默认值:""

DISABLE_HDMI

如果 DISABLE_HDMI=1,则禁用 HDMI 启动诊断显示。其他非零值保留供将来使用。
默认值:0

HDMI_DELAY

除非发生致命错误,否则最多 N 秒(默认为 5)跳过 HDMI 诊断显示的渲染。默认行为旨在避免在正常 SD/USB 启动期间短暂出现引导加载程序诊断屏幕。
默认值:5

ENABLE_SELF_UPDATE

使引导加载程序能够从 TFTP 或 USB 大容量存储设备 (MSD) 引导文件系统更新自身。
如果启用了自更新,则引导加载程序将在引导文件系统中查找更新文件 (.sig/.upd)。如果更新映像与当前映像不同,则应用更新并重置系统。否则,如果EEPROM映像逐字节相同,则引导将照常进行。
笔记:

  • 2021 年之前的引导加载程序版本不支持self-update。

  • 在 2022 年之前,SD 引导中未启用自我更新。在Raspberry Pi 4上,ROM已经可以从SD卡加载recovery.bin。在 CM4 上,自我更新和recovery.bin都没有任何影响,并且需要 USB 启动(请参阅 CM4 引导加载程序文档)。

  • 从 2022 年开始(测试版稳定版),将启用从 SD 卡进行自我更新。

  • 对于网络引导,请确保 TFTP 引导目录可以通过 NFS 挂载,并且 rpi-eeprom-update 可以写入该目录。

默认值:1

FREEZE_VERSION

以前,此属性仅由 rpi-eeprom-update 脚本检查。但是,现在启用了自我更新,引导加载程序也将检查此属性。如果设置为 1,则此值将覆盖ENABLE_SELF_UPDATE以停止自动更新。要禁用FREEZE_VERSION您必须使用带有recovery.bin的SD卡启动。
自定义EEPROM更新脚本也必须选中此标志。
默认值:0

HTTP_HOST

如果启动了网络安装或 HTTP 引导,则会从此服务器下载 boot.img 和 boot.sig。
无效的主机名将被忽略。它们应仅包含小写字母数字字符和 - 或 .。如果设置了HTTP_HOST则禁用 HTTPS,并改用普通 HTTP。您可以指定 IP 地址以避免需要 DNS 查找。不要在主机名中包含 HTTP 方案或任何正斜杠。
默认值:fw-download-alias1.raspberrypi.com

HTTP_PORT

ou 可以使用此属性更改用于网络安装和 HTTP 启动的端口。使用默认主机 fw-download-alias1.raspberrypi.com 时启用 HTTPS。如果更改HTTP_HOST则禁用 HTTPS,并改用纯 HTTP。
禁用 HTTPS 时,即使 HTTP_PORT 更改为 443,仍将使用纯 HTTP。
默认值:443(如果启用了 HTTPS),否则为 80

HTTP_PATH

用于网络安装和 HTTP 引导的路径。
区分大小写。 使用正向 (Linux) 斜杠作为路径分隔符。 前导斜杠和尾随前斜杠不是必需的。
如果未设置HTTP_HOST,则忽略HTTP_PATH,并将 https://fw-download-alias1.raspberrypi.com:443/net_install/boot.img URL。如果设置了HTTP_HOST,则 URL 将为 http://<HTTP_HOST>:<HTTP_PORT>/<HTTP_PATH>/boot.img
默认值:net_install

IMAGER_REPO_URL

嵌入式 Raspberry Pi Imager 应用程序配置了启动时下载的 json 文件。
您可以更改嵌入式 Raspberry Pi Imager 应用程序使用的 json 文件的 URL,使其提供您自己的图像。您可以使用标准的 Raspberry Pi Imager 应用程序通过 --repo 参数传递 URL 来测试这一点。
默认值:http://downloads.raspberrypi.org/os_list_imagingutility_v3.json

NET_INSTALL_ENABLED

启用网络安装后,如果引导加载程序检测到键盘,则在引导时显示网络安装屏幕。
若要启用网络安装,请添加 NET_INSTALL_ENABLED=1,或禁用网络安装,请添加 NET_INSTALL_ENABLED=0。
如果设置了 DISABLE_HDMI=1,则忽略此设置并禁用网络安装。
为了检测键盘,网络安装必须初始化 USB 控制器并枚举设备。这会使启动时间增加约 1 秒,因此在某些嵌入式应用程序中禁用网络安装可能是有利的。
默认值:Raspberry Pi 4 和 Raspberry Pi 400 为 1,计算模块 4 为 0。

NET_INSTALL_KEYBOARD_WAIT

如果启用了网络安装,引导加载程序将尝试检测键盘和 SHIFT 键以启动网络安装。您可以使用此属性更改此等待的长度(以毫秒为单位)。
将此设置为 0 将禁用键盘等待,但如果未找到启动文件且 USB 启动模式 4 处于BOOT_ORDER状态,仍可启动网络安装。

注意测试表明键盘和 SHIFT 检测至少需要 750 毫秒。

默认值:900

NETCONSOLE- 高级日志记录

NETCONSOLE 将调试消息复制到网络接口。IP 地址和端口由 NETCONSOLE 字符串定义。
注意:NETCONSOLE 会阻塞,直到建立以太网链路或发生超时。超时值为DHCP_TIMEOUT尽管除非请求网络引导,否则不会尝试 DHCP。

格式

请参阅 https://wiki.archlinux.org/index.php/Netconsole

src_port@src_ip/dev_name,dst_port@dst_ip/dst_mac
E.g. 6665@169.254.1.1/,6666@/

为了简化解析,引导加载程序要求每个字段分隔符都存在。必须指定源 IP 地址,但以下字段可以留空并分配默认值。

  • src_port - 6665

  • dev_name - “”(始终忽略设备名称)

  • dst_port - 6666

  • dst_ip - 255.255.255.255

  • dst_mac - 00:00:00:00:00

查看数据的一种方法是将测试 Raspberry Pi 4 连接到另一个运行 WireShark 的 Raspberry Pi,并选择“udp.srcport == 6665”作为过滤器,然后选择“分析”→“跟随→ UDP 流以作为 ASCII 日志查看。
默认情况下不应启用 NETCONSOLE,因为它可能会导致网络问题。它可以通过GPIO过滤器按需启用:

# Enable debug if GPIO 7 is pulled low
[gpio7=0]
NETCONSOLE=6665@169.254.1.1/,6666@/

默认值:""(未启用)
最大长度:32 个字符

最新评论

友情链接:

返回顶部