config.txt中的启动选项
start_file,fixup_file
这些选项指定在引导之前传输到 VideoCore GPU的固件文件。
" start_file"指定要使用的 VideoCore 固件文件。
fixup_file指定用于修复 start _file中用于匹配 GPU 内存分割的内存位置的文件。请注意," start_file"和" fixup_file"是一对匹配的文件-使用不匹配的文件将阻止开发板启动。这是一个高级选项,因此我们建议您使用start_x
和start_debug
而不是此选项。
start_x,start_debug
这些提供了一些替代" start_file"和" fixup_file"设置的快捷方式,并且是用于选择固件配置的推荐方法。
start_x = 1
意味着
start_file = start_x.elf
fixup_file = fixup_x.dat
在 Pi 4上,如果存在文件 start4x .elf和 fixup4x .dat,则将使用这些文件。
start_debug = 1
start_file = start_db.elf
fixup_file = fixup_db.dat
Pi 4没有特定的处理方法,因此,如果您希望使用 Pi 4调试固件文件,则需要手动指定" start_file"和" fixup_file"。
使用相机模块时应指定" start_x = 1"。通过raspi-config
启用相机会自动设置。
disable_commandline_tags
将" disable_commandline_tags"命令设置为" 1",以在启动内核之前阻止" start.elf"填充 ATAGS (" 0x100"中的内存)。
cmdline
cmdline是引导分区上的备用文件名,从该文件名可以读取内核命令行字符串;默认值为" cmdline.txt"。
核心
内核是引导分区上加载内核时使用的备用文件名。 Pi 1,Pi Zero和计算模块上的默认值为 kernel .img,而 Pi 2,Pi 3和计算模块 3 上的默认值为 kernel7 .img。在 Pi4 上是kernel7l.img
。
arm_64bit
如果设置为非零,则强制内核加载系统采用 64 位内核,以 64 位模式启动处理器,并将" kernel8.img"设置为加载的内核映像,除非有明确的在这种情况下定义的 kernel
选项。在所有平台上默认为 0 。 注意:64位内核必须是未压缩的映像文件。
请注意,64位内核只能在具有最新固件的 Pi4 ,Pi3和 Pi2B rev1.2板上使用。
arm_control
已弃用-使用 arm _64bit启用 64 位内核。
设置板专用控制位。
武器
" armstub"是引导分区上的文件名,从该文件名可以加载 ARM 存根。默认的 ARM 存根存储在固件中,并且会根据 Pi 型号和各种设置自动选择。
存根是在内核之前运行的一小段 ARM 代码。它的工作是在将控制权传递给内核之前,设置诸如中断控制器之类的底层硬件。
arm_peri_high
将" arm_peri_high"设置为" 1"以在 Pi 4上启用" High Peripheral"模式。如果加载了合适的 DTB ,则会自动设置。
注意:如果没有兼容的设备树,则启用"高外围设备"模式将使您的系统无法启动。当前缺少 ARM 存根支持,因此您还需要使用armstub
加载合适的文件。
kernel_address
" kernel_address"是内核映像应加载到的内存地址。默认情况下,将 32 位内核加载到地址" 0x8000",将 64 位内核加载到地址" 0x80000"。如果设置了" kernel_old",则将内核加载到地址" 0x0"。
kernel_old
将" kernel_old"设置为" 1",以将内核加载到内存地址" 0x0"。
ramfsfile
ramfsfile是要加载的 ramfs 引导分区上的可选文件名。 N.B.足够新的固件支持加载多个 ramfs 文件-用逗号分隔多个文件名,请注意不要超过 80 个字符的行长度限制。所有加载的文件都串联在内存中,并被视为单个 ramfs blob。可在此处获得更多信息。
ramfsaddr
ramfsaddr是应该将 ramfsfile 加载到的内存地址。
initramfs
" initramfs"命令指定 ramfs 文件名和要加载到的内存地址。它在一个参数中执行ramfsfile
和ramfsaddr
的动作。该地址也可以是" followkernel"(或" 0"),以将其放置在内核映像之后的内存中。值示例为:" initramfs initramf.gz 0x00800000"或" initramfs init.gz followkernel"。与ramfsfile
一样,较新的固件通过用逗号分隔文件名来加载多个文件。 注意:**此选项使用的语法与其他所有选项都不相同,因此您不应在此处使用=
字符。
init_uart_baud
" init_uart_baud"是初始 UART 波特率。默认值为" 115200"。
init_uart_clock" init_uart_clock"是初始 UART 时钟频率。默认值为" 48000000"(48MHz)。请注意,此时钟仅适用于 UART0 (Linux中为 ttyAMA0 ),并且 UART 的最大波特率限制为时钟的 1 /16。 Pi 3和 Pi Zero上的默认 UART 是 UART1 (Linux中的 ttyS0 ),其时钟是核心 VPU 时钟-至少 250MHz 。
bootcode_delay
在加载 start .elf之前,bootcode_delay命令在 bootcode .bin中延迟了给定的秒数:默认值为 0 。
这对于在读取监视器的 EDID 之前插入延迟特别有用,例如,如果 Pi 和监视器由同一电源供电,但是监视器的启动时间比 Pi 更长。如果在首次启动时显示检测错误,请尝试设置该值,但是如果您在不断开显示器电源的情况下软重启了 Pi ,则可以正确设置该值。
boot_delay
" boot_delay"命令指示在加载内核之前,要在" start.elf"中等待给定的秒数:默认值为" 1"。以毫秒为单位的总延迟计算为"(1000 x boot_delay)+ boot_delay_ms"。如果您的 SD 卡需要一段时间才能准备好才能从 Linux 引导,这将很有用。
boot_delay_ms
" boot_delay_ms"命令意味着在加载内核之前,在" start.elf"中与" boot_delay"一起等待给定的毫秒数。默认值为" 0"。
disable_splash
如果将" disable_splash"设置为" 1",则彩虹启动屏幕将不会在启动时显示。默认值为" 0"。
enable_gic(仅适用于 Pi 4B)
在树莓派 4B上,如果将此值设置为 0 ,则中断将使用旧版中断控制器而不是通过 GIC -400路由到 ARM 内核。默认值为" 1"。
force_eeprom_read
将此选项设置为" 0",以防止固件在加电时尝试读取 I2C HAT EEPROM(连接到 ID _SD和 ID _SC引脚)。
os_prefix
os_prefix是一个可选设置,允许您在内核的多个版本和安装在同一卡上的设备树文件之间进行选择。 os_prefix中的任何值都将前缀在固件加载的任何操作系统文件的名称之前(在其前面),其中"操作系统文件"的定义是指内核,initramfs,cmdline.txt,.dtbs和覆盖。该前缀通常是目录名,但也可以是文件名的一部分,例如" test-"。因此,目录前缀必须包含结尾的/字符。
为了减少无法启动系统的可能性,固件会首先测试提供的前缀值的可行性-除非可以在新的位置/名称中找到预期的内核和.dtb,否则将忽略该前缀(设置为" ")。此可行性测试的一种特殊情况是应用于叠加层,如果满足以下条件,则只会从$$ {os_prefix} $ {overlay_prefix}(其中[
overlay_prefix`](#overlay_prefix)的默认值为" overlays /")加载叠加层$ {os_prefix} $ {overlay_prefix} README存在,否则它将忽略" os_prefix"并将覆盖视为共享。
(检查前缀时,固件检查密钥文件而不是目录的原因是双重的-前缀可能不是目录,并且并非所有引导方法都支持测试目录的存在。)
N.B.任何用户指定的 OS 文件都可以使用绝对路径(相对于引导分区)绕过所有前缀-只需使用/
开头文件路径即可,例如kernel =/my_common_kernel.img
。
另请参见overlay_prefix
和upstream_kernel
。
overlay_prefix
指定从中加载覆盖的子目录/前缀-默认为overlays /
(注意尾随的/
)。如果与os_prefix
一起使用,则os_prefix
在overlay_prefix
之前,即dtoverlay = disable-bt
将尝试加载$$ os.prefix} $ {overlay_prefix} disable-bt .dtbo`。
请注意,除非存在$$ os_prefix} $ {overlay_prefix} README,否则叠加层会与主操作系统共享(即,忽略 os _prefix)。
uart_2ndstage
设置 uart _2ndstage = 1会导致第二阶段加载程序(树莓派 4之前的设备上的 bootcode .bin或树莓派 4设备的 EEPROM 中的启动代码)和主固件(start * .elf) `)将诊断信息输出到 UART0 。
请注意,除非禁用输出(dtoverlay = disable-bt
)或切换到另一个 UART (dtoverlay = miniuart-bt
),并且同时访问 UART 以从其输出,否则输出可能会干扰蓝牙操作。然后,Linux可能会发生数据丢失,从而导致输出损坏。仅在尝试诊断早期引导加载问题时才需要此功能。
上游_内核
如果使用了" upstream_kernel = 1",则固件将os_prefix
设置为" upstream /",除非已将其显式设置为其他值,但是像其他os_prefix
值一样,如果使用前缀时找不到所需的内核和.dtb文件。
固件还将为 DTB 首选上游 Linux 名称(例如,bcm2837-rpi-3-b.dtb而不是 bcm2710 -rpi-3-b.dtb)。如果找不到上游文件,则固件将加载下游版本,并自动应用"上游"覆盖图进行一些调整。请注意,此过程在 os _prefix已完成之后进行。
本文使用 eLinux Wiki页面RPiconfig中的内容,该页面在Creative Commons Attribution-ShareAlike 3.0 Unported license下共享/by-sa/3.0/)