旧版config.txt
旧版选项
此处描述的 config.txt 选项不适用于 Raspberry Pi OS Bookworm 及更高版本,且不再获得官方支持。
不过,由于这些选项在进行裸机开发时仍可能对您有所帮助,因此我们仍在此处保留相关文档。
旧版启动选项
(另请参阅 config.txt 启动选项)。
start_x、start_debug
这些选项提供了一些替代 start_file 和 fixup_file 设置的快捷方式,是选择固件配置的推荐方法。
start_x=1 表示
start_file=start_x.elf
fixup_file=fixup_x.dat
在树莓派4上,如果存在 start4x.elf 和 fixup4x.dat 文件,则将使用这些文件。
start_debug=1 意味着
start_file=start_db.elf
fixup_file=fixup_db.dat
disable_commandline_tags
将 disable_commandline_tags 命令设为 1,以阻止 start.elf 在启动内核前填写 ATAGS(0x100 开始的内存)。
arm_control
此设置已被弃用。请使用 arm_64bit 来启用 64 位内核。
设置板卡特定的控制位。
armstub
armstub 是引导分区中加载 ARM 存根的文件名。默认 ARM 存根存储在固件 中,并根据树莓派型号和各种设置自动选择。
存根是先于内核运行的一小段 ARM 代码。它的任务是在将控制权传递给内核之前设置中断控制器等低级硬件。
arm_peri_high
将 arm_peri_high 设为 1 可在树莓派4上启用高外设模式。如果加载了合适的 DTB,它会自动设置。
在没有兼容设备树的情况下启用高外设模式将导致系统无法启动。目前缺少 ARM 存根支持,因此还需要使用 armstub 加载合适的文件。
kernel_address
kernel_address 是加载内核映像的内存地址。默认情况下,32 位内核加载到地址 0x8000,64 位内核加载到地址 0x200000。如果设置了 kernel_old,内核将被加载到 0x0 地址。
kernel_old
将 kernel_old 设为 1,可将内核加载到内存地址 0x0。
init_uart_baud
init_uart_baud 是初始 UART 波特率。默认值为 115200。
init_uart_clock
init_uart_clock 是初始 UART 时钟频率。默认值为 48000000(48MHz)。请注意,该时钟仅适用于 UART0(Linux 中为 ttyAMA0),而且 UART 的最大波特率限制为时钟的 1/16。树莓派3 和树莓派Zero 的默认 UART 为 UART1(Linux 中为 ttyS0),其时钟为核心 VPU 时钟 - 至少 250MHz。
bootcode_delay
bootcode_delay 命令在加载 start.elf 之前,在 bootcode.bin 中延迟给定的秒数:默认值为 0。
如果树莓派和显示器的电源相同,但显示器的启动时间比树莓派长,那么在读取显示器的 EDID 之前插入一个延迟就非常有用。如果初始启动时显示器检测错误,但在软启动树莓派而不移除显示器电源时检测正确,请尝试设置该值。
boot_delay
boot_delay 命令会在加载内核前在 start.elf 中强制等待指定秒数:默认值为 0。以毫秒为单位的总延迟计算公式为 (1000 x boot_delay) + boot_delay_ms。如果你的 SD 卡在 Linux 从它启动之前需要一段时间准备就绪,这将非常有用。
boot_delay_ms
boot_delay_ms 命令表示在加载内核前等待 start.elf 和 boot_delay 中给定的毫秒数。默认值为 0。
enable_gic(仅限树莓派4)
在树莓派4B 上,如果将此值设为 0,中断将使用旧版中断控制器路由到 Arm 内核,而不是通过 GIC-400。默认值为 1。
sha256
如果设置为非零,将启用由 sha256sum 工具生成的已加载文件(内核、initramfs、设备树 .dtb 文件和覆盖层)的 SHA256 哈希值日志。如果启用,日志输出将发送到 UART,也可通过 sudo vclog --msg 访问。该选项在调试启动问题时可能有用,但代价是启动时间可能会增加很多秒。在所有平台上默认为 0。
uart_2ndstage
设置 uart_2ndstage=1 会导致第二阶段加载器(树莓派4之前设备上的 bootcode.bin,或树莓派4设备 EEPROM 中的启动代码)和主固件(start*.elf)向 UART0 输出诊断信息。
请注意,输出可能会干扰蓝牙操作,除非禁用(dtoverlay=disable-bt)或切换到其他 UART(dtoverlay=miniuart-bt),而且如果同时访问 UART 从 Linux 输出,则可能会发生数据丢失,导致输出损坏。只有在诊断早期启动加载问题时才需要使用该功能。
upstream_kernel
如果使用 upstream_kernel=1,固件会将 os_prefix 设置为 "upstream/",除非明确将其设置为其他值,但与其他 os_prefix 值一样,如果使用该前缀时无法找到所需的内核和 .dtb 文件,该值将被忽略。
固件还会优先使用上游 Linux 名称来命名 DTB(例如,用 bcm2837-rpi-3-b.dtb 代替 bcm2710-rpi-3-b.dtb)。如果找不到上游文件,固件将加载下游变体,并自动应用 "上游 "覆盖进行一些调整。请注意,这一过程是在确定 os_prefix 之后进行的。
旧版超频选项
(另请参阅 config.txt 超频选项)。
超频
never_over_voltage
在一次性可编程(OTP)内存中设置一个位,防止设备过压。这样做的目的是锁定树莓派,使其无法通过使用无效过压无意或恶意地设置保修位。
disable_auto_turbo
在树莓派2和3上,设置此标志将禁止 GPU 进入Turbo模式,在特定负载下,GPU 可以进入Turbo模式。
旧版的条件过滤器
(另请参阅 config.txt 条件筛选器)。
[HDMI:*] 过滤器
此过滤器仅适用于树莓派4。
树莓派4 有两个 HDMI 端口,对于许多与 HDMI 相关的 config.txt 命令,有必要指定所指的是哪个 HDMI 端口。HDMI 条件将后续 HDMI 配置过滤为特定端口。
[HDMI:0]
hdmi_group=2
hdmi_mode=45
[HDMI:1]
hdmi_group=2
hdmi_mode=67
所有特定端口的 HDMI 命令都有另一种变量:索引语法。您可以使用下面的语法,它与前面的示例相同:
hdmi_group:0=2
hdmi_mode:0=45
hdmi_group:1=2
hdmi_mode:1=67
旧版内存选项
(另请参阅 config.txt 内存选项)
树莓派5不代表操作系统分配 GPU 内存,因此以下设置没有影响。
gpu_mem
指定保留多少内存(以兆字节为单位)供 GPU 独用:剩余内存分配给 Arm CPU 供操作系统使用。对于内存小于 1GB 的树莓派s,默认值为 64;对于内存大于等于 1GB 的树莓派s,默认值为 76。
与 x86 机器上的 GPU(增加内存可提高 3D 性能)不同,VideoCore 的架构意味着指定大于必要值的内存不会带来任何性能优势,而且这样做实际上会损害性能。
为确保 Linux 的最佳性能,应将 gpu_mem 设置为尽可能小的值。如果某个图形功能无法正常工作,可以尝试增加 gpu_mem 的值,但要注意下面显示的建议最大值。
在树莓派4上,GPU 的 3D 组件有自己的内存管理单元 (MMU),不会使用 gpu_mem 分配的内存。内存是在 Linux 中动态分配的。这样,在树莓派4上指定的 gpu_mem 值就比以前的型号小。
在旧版内核中,分配给 GPU 的内存用于显示、3D、编解码器、摄像头以及一些基本的固件内务管理。下面指定的最大值假定您正在使用所有这些功能。如果没有,则应使用较小的 gpu_mem 值。
建议的最大值如下
| 总内存 | gpu_mem 建议最大值 |
|---|---|
| 256MB | 128 |
| 512MB | 384 |
| 1GB 或更大 | 512,树莓派4 上为 76 |
树莓派OS 上的相机堆栈(libcamera)使用 Linux CMA 内存分配缓冲区,而不是 GPU 内存,因此增加 GPU 内存大小没有任何好处。
可以将 gpu_mem 设置为更大的值,但应避免这样做,因为这会导致问题,例如阻止 Linux 启动。最小值为 16,但这会禁用某些 GPU 功能。
还可以使用 gpu_mem_256、gpu_mem_512 和 gpu_mem_1024,以便在内存容量不同的树莓派之间交换同一张 SD 卡,而不必每次都编辑 config.txt:
gpu_mem_256
gpu_mem_256 命令以 MB 为单位为拥有 256MB 内存的树莓派设置 GPU 内存。如果内存大小不是 256MB,该命令将被忽略。该命令覆盖 gpu_mem。
gpu_mem_512
gpu_mem_512 命令以 MB 为单位为配备 512MB 内存的树莓派设置 GPU 内存。如果内存大小不是 512MB,该命令将被忽略。该命令覆盖 gpu_mem。
gpu_mem_1024
gpu_mem_1024 命令以 MB 为单位为配备 1GB 或更多内存的树莓派设置 GPU 内存。如果内存小于 1GB,该命令将被忽略。该命令覆盖 gpu_mem。
disable_l2cache
将此值设为 1 将禁止 CPU 访问 GPU 的二级缓存,并需要相应的二级缓存禁用内核。在 BCM2836、BCM2837、BCM2711 和 BCM2712 上,ARM 拥有自己的二级缓存,因此默认值为 1。标准的树莓派kernel.img 和 kernel7.img 版本反映了缓存设置的这种差异。
旧版视频选项
(另请参阅 config.txt 视频选项)
HDMI模式
对于具有多个 HDMI 端口的设备,某些 HDMI 命令可以应用于任何端口。您可以使用语法<command>:<port>(其中端口为 0 或 1)来指定设置应应用于哪个端口。如果在不需要端口号的命令中指定端口号,端口将被忽略。有关语法和替代机制的更多详情,请参阅文档 条件部分中的 HDMI 子部分。
hdmi_safe
将 hdmi_safe 设置为 1 将导致使用 "安全模式" 设置,尝试以最大 HDMI 兼容性启动。这与设置以下参数相同:
hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=4
disable_overcan=0
overscan_left=24
overscan_right=24
overscan_top=24
overscan_bottom=24
hdmi_ignore_edid
如果显示器没有准确的 EDID,将 hdmi_ignore_edid 设置为 0xa5000080 可忽略 EDID/显示数据。它需要这个不寻常的值,以确保不会意外触发。
hdmi_edid_file
将 hdmi_edid_file 设置为 1 将导致 GPU 从启动分区中的 edid.dat 文件读取 EDID 数据,而不是从显示器读取。
hdmi_edid_filename
在树莓派4B上,可以使用 hdmi_edid_filename 命令指定要使用的 EDID 文件的文件名,还可以指定该文件要应用到哪个端口。这还要求 hdmi_edid_file=1 以启用 EDID 文件。
例如
hdmi_edid_file=1
hdmi_edid_filename:0=FileForPortZero.edid
hdmi_edid_filename:1=FileForPortOne.edid
hdmi_force_edid_audio
将 hdmi_force_edid_audio 设置为 1 时,显示屏会假装支持所有音频格式,即使报告不支持 DTS/AC3 也允许直通。
hdmi_ignore_edid_audio
将 hdmi_ignore_edid_audio 设置为 1 时,显示屏将假装不支持所有音频格式。这意味着 ALSA 将默认使用模拟音频(耳机)插孔。
hdmi_force_edid_3d
将 hdmi_force_edid_3d 设置为 1 时,即使 EDID 并不显示支持 3D,也会假定所有 CEA 模式都支持 3D。
hdmi_ignore_cec_init
将 hdmi_ignore_cec_init 设置为 1 将阻止在启动过程中发送初始活动信号源信息。这样可以防止启用了 CEC 的电视在重新启动树莓派时从待机状态切换频道。
hdmi_ignore_cec
将 hdmi_ignore_cec 设置为 1 时,显示器将假装完全不支持 CEC。不支持任何 CEC 功能。
cec_osd_name
cec_osd_name 命令用于设置设备的初始 CEC 名称。默认为树莓派。
hdmi_pixel_encoding
hdmi_pixel_encoding 命令强制像素编码模式。默认情况下,它将使用从 EDID 请求的模式,因此无需更改。
| hdmi_pixel_encoding | 结果 |
|---|---|
| 0 | 默认(RGB 限制用于 CEA,RGB 完全用于 DMT) |
| 1 | RGB 受限(16-235) |
| 2 | RGB 全屏(0-255) |
| 3 | YCbCr 受限(16-235) |
| 4 | 全 YCbCr(0-255) |
hdmi_max_pixel_freq
固件和 KMS 使用像素频率过滤 HDMI 模式。注意,这与帧频不同。它规定了有效模式的最大频率,从而筛选出更高频率的模式。例如,如果您想禁用所有 4K 模式,您可以指定最大频率为 200000000,因为所有 4K 模式的频率都高于此值。
hdmi_blanking
hdmi_blanking 命令控制当操作系统要求使用 DPMS 将显示器置于待机模式以节省电能时发生的情况。如果未设置该选项或将其设置为 0,HDMI 输出将处于空白状态,但不会关闭。为了模仿其他电脑的行为,可以将此选项设置为 1,从而将 HDMI 输出也设置为关闭:连接的显示器将进入低功耗待机模式。
在树莓派4上,设置 hdmi_blanking=1 不会导致 HDMI 输出关闭,因为该功能尚未实现。在使用不使用帧缓冲器的应用程序(如 omxplayer)时,此功 能可能会导致问题。
| hdmi_blanking | 结果 |
|---|---|
| 0 | HDMI 输出将处于空白状态 |
| 1 | HDMI 输出将关闭并消隐 |
hdmi_drive
使用 hdmi_drive 命令可以在 HDMI 和 DVI 输出模式之间进行选择。
| hdmi_drive | 结果 |
|---|---|
| 1 | 正常 DVI 模式(无声音) |
| 2 | 正常 HDMI 模式(如果支持并启用,将发送声音) |
onfig_hdmi_boost
配置 HDMI 接口的信号强度。最小值为 0,最大值为 11。
原始型号 B 和 A 的默认值为 2,型号 B+ 和所有后续型号的默认值为 5。
如果出现 HDMI 问题(斑点、干扰),请尝试 7。很长的 HDMI 电缆可能需要多达 11 个值,但除非绝对必要,否则不应使用这么高的值。
此选项在树莓派4上被忽略。
hdmi_group
hdmi_group 命令将 HDMI 输出组定义为 CEA(消费电子协会,电视机通常使用的标准)或 DMT(显示监视器定时,监视器通常使用的标准)。该设置应与 hdmi_mode 结合使用。
| hdmi_group |
|---|