config.txt文件
什么是config.txt?
Raspberry Pi 设备使用名为 config.txt 的配置文件,而不是传统 PC 上的 BIOS。在 Arm CPU 和 Linux 初始化之前,GPU 会读取config.txt。Raspberry Pi OS 会在 boot 分区(位于 /boot/firmware/)中查找该文件。
在 Raspberry Pi OS Bookworm 之前,Raspberry Pi OS 将启动分区存储在 /boot/。
您可以直接从 Raspberry Pi OS 安装中编辑 config.txt。也可以移除存储设备,在另一台电脑上编辑启动分区中的文件,包括 config.txt。
对 config.txt 的更改仅在重启后生效。可以使用以下命令查看当前活动设置:
vcgencmd get_config <config>:显示特定配置值,例如 vcgencmd get_config arm_freq.
vcgencmd get_config int:列出所有非零整数配置选项(非零)
vcgencmd get_config str:列出所有非空字符串配置选项
并非所有配置设置都能使用 vcgencmd 获取。
某些旧版 config.txt 选项已不再获得官方支持。这些选项列于 旧版 config.txt 选项 中,本文未作涵盖。
文件格式
config.txt 文件由早期启动固件读取,因此使用非常简单的文件格式: 每行只有一条 property=value 语句,其中 value 既可以是整数,也可以是字符串。可以添加注释,也可以用 # 字符开头一行,注释掉并禁用现有的配置值。
条目的行长限制为 98 个字符。Raspberry Pi OS 会忽略超过此限制的任何字符。
下面是一个文件示例:
# 启用音频(加载 snd_bcm2835)
dtparam=audio=on
# 为检测到的摄像头自动加载覆盖层
camera_auto_detect=1
# 为检测到的 DSI 显示器自动加载覆盖层
display_auto_detect=1
# 启用 DRM VC4 V3D 驱动程序
dtoverlay=vc4-kms-v3d
高级功能
包括
将指定文件的内容插入当前文件。
例如,在 config.txt 中添加 include extraconfig.txt 这一行,就会在 config.txt 文件中包含 extraconfig.txt 文件的内容。
bootcode.bin 或 EEPROM 引导加载程序不支持 include 指令。
由bootloader处理的设置只有在 config.txt 文件(而不是任何其他包含文件)中指定后才会生效:
bootcode_delaygpu_mem、gpu_mem_256、gpu_mem_512、gpu_mem_1024total_memsdram_freqstart_x、start_debug、start_file、fixup_fileuart_2ndstage
条件筛选
条件筛选器在条件部分有所介绍。
autoboot.txt
autoboot.txt 是一个可选配置文件,可用于指定 boot_partition 编号。
它还可与 tryboot 功能结合使用,为操作系统升级实现 A/B 启动。
autoboot.txt 的长度限制为 512 字节,支持 [all]、[none] 和 [tryboot] 条件过滤器。
另请参阅 TRYBOOT 启动流程。
boot_partition
指定用于启动的分区号,除非分区号已作为参数指定给 reboot 命令(如 sudo reboot 2)。
分区号从 1 开始,MBR 分区为 1 至 4。 指定分区 0 意味着从默认分区(即第一个可启动的 FAT 分区)启动。
可启动分区必须格式化为 FAT12、FAT16 或 FAT32,并包含 start.elf 文件(或树莓派5上的 config.txt 文件),才能被bootloader归类为可启动分区。
[tryboot]过滤器
如果系统启动时设置了 tryboot 标志,则此过滤器通过。
sudo reboot "0 tryboot"
tryboot_a_b
将此属性设为 1,可在设置 tryboot 标志时加载正常的 config.txt 和 boot.img 文件,而不是 tryboot.txt 和 tryboot.img。
这样就能在分区级而非文件级进行 tryboot 切换,而无需修改 A/B 分区中的配置文件。
A/B启动更新流程示例
下面的伪代码展示了假设的操作系统更新服务如何使用 tryboot + autoboot.txt 来执行故障安全操作系统升级。
初始 autoboot.txt
[all]
tryboot_a_b=1
boot_partition=2
[tryboot]
boot_partition=3
安装更新
- 系统开机,默认启动到分区 2
更新服务将下一版本的操作系统下载到分区 3- 通过重启至
tryboot模式reboot "0 tryboot"来测试更新,其中0表示默认分区
提交或取消更新
- 系统从分区 3 启动,因为在
tryboot模式下,[tryboot]过滤器的值为 true - 如果 tryboot 处于活动状态(
/proc/device-tree/chosen/bootloader/tryboot == 1)- 如果当前启动分区(
/proc/device-tree/chosen/bootloader/partition)与 autoboot.txt 中[tryboot]部分的boot_partition相匹配更新服务会验证系统是否更新成功- 如果更新成功
- 替换
autoboot.txt交换boot_partition配置 - 正常重启 - 分区 3 现在是默认启动分区
- 替换
- 否则
更新服务将更新标记为失败,例如删除更新文件。- 正常重启 - 分区 2 仍是默认引导分区,因为
tryboot标记已自动清除
- 结束如果
- 结束如果
- 如果当前启动分区(
- 结束如果
更新的 autoboot.txt
[all]
tryboot_a_b=1
boot_partition=3
[tryboot]
boot_partition=2
更新 autoboot.txt 后不一定要重新启动。不过,更新服务 必须小心避免覆盖当前分区,因为 autoboot.txt 已被修改以提交上次更新。有关详细信息,请参阅 设备树参数。
常用选项
常用显示选项
hdmi_enable_4kp60
此选项仅适用于 Raspberry Pi 4、Compute Module 4、Compute Module 4S 和 Pi 400。
默认情况下,当连接到 4K 显示器时,某些型号会选择 30Hz 刷新率。使用此选项可选择 60Hz 刷新率。受此设置影响的型号不支持同时在两个微型 HDMI 端口上输出 4Kp60。启用此设置会增加功耗和温度。
常见硬件配置选项
camera_auto_detect
默认情况下,Raspberry Pi OS 在 /boot/firmware/config.txt 中包含一行启用此设置的内容。
启用后,固件将自动为识别到的 CSI 摄像头加载覆盖图。
要禁用此功能,请将 camera_auto_detect 设置为 0(或删除 camera_auto_detect=1)。
display_auto_detect
默认情况下,Raspberry Pi 操作系统在 /boot/firmware/config.txt 文件中包含一行配置,用于启用此设置。
启用后,固件将自动为识别到的 DSI 显示器加载覆盖层。
要禁用此功能,请将 display_auto_detect 设置为 0(或删除 display_auto_detect=1)。
dtoverlay
dtoverlay 选项要求固件加载一个名为 "设备树"(Device Tree)的覆盖层,这是一个配置文件,可以启用内核对内置和外部硬件的支持。例如,dtoverlay=vc4-kms-v3d 会加载一个可启用内核图形驱动程序的覆盖层。
作为一种特殊情况,如果调用时没有任何值 - dtoverlay= - 则该选项标志着覆盖参数列表的结束。如果在任何其他 dtoverlay 或 dtparam 设置之前使用,则会阻止加载任何 HAT 叠加。
更多详情,请参阅 DTB、覆盖和 config.txt。
dtparam
Raspberry Pi 设备的设备树配置文件支持各种参数,例如启用 I2C 和 SPI 接口。许多 DT 叠加都可以通过使用参数进行配置。这两种类型的参数都可以使用 dtparam 设置来提供。此外,覆盖参数还可以附加到 dtoverlay 选项中,用逗号分隔,但要注意行长限制为 98 个字符。
更多详情,请参阅 DTB、覆盖和 config.txt。
arm_boost
此选项仅适用于包含两相供电的 Raspberry Pi 4B 后续版本以及 Pi 400 的所有版本。
默认情况下,Raspberry Pi OS 在 /boot/firmware/config.txt 中包含一行,在支持的设备上启用此设置。
某些 Raspberry Pi 设备为 SoC 电压轨配备了第二个开关模式电源。启用后,默认的 Turbo 模式时钟频率将从 1.5GHz 增至 1.8GHz。
要禁用,请设置 arm_boost=0。
power_force_3v3_pwm
该选项仅适用于 Raspberry Pi 5、500、500+ 和Compute Module 5。
强制对 GPIO 针座或 CSI 连接器的 3.3V 输出进行 PWM。
若要禁用,请设置 power_force_3v3_pwm=0。