樹莓派啟動選項
- 啟動選項
- `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_file
,fixup_file
這些選項指定在引導步驟前傳輸到 VideoCore GPU 的固件文件。
start_file
指定要使用的 VideoCore 固件文件。
fixup_file
指定用于修改 start_file 中使用的內存位置以匹配GPU內存拆分的文件。
start_file
和 fixup_file
是匹配的一對,使用不匹配的文件導致板子無法啟動。這是一個高級選項,因此我們建議您使用 start_x
和 start_debug
而不是此選項。
NOTE: 不能以這種方式選擇裁剪固件( start*cd.elf
和 fixup*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 文件名 和 內存地址。它在一個參數中同時執行 ramfsfile
和 ramfsaddr
的操作。地址也可以是 followkernel
(或 0
),以便將其放在內核映像之后的內存中。示例值如下 initramfs initramf.gz 0x00800000
或 initramfs 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_prefix
和 upstream_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_2ndstage
為 1
,則啟用 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.bin
的 config.txt
中的 eeprom_write_protect
設置。
NOTE: flashrom
不支持清除寫保護區域,如果定義了寫保護區域,將無法更新 EEPROM。
在 Raspberry Pi 5 上,/WP
默認為低電平,因此一旦配置了 寫狀態寄存器
,就會啟用寫保護。要清除寫保護,可通過連接 TP14
和 TP1
將 /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
如果該屬性設置為 1
,recovery.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_pubkey
和 revoke_devkey
。該選項可能會阻止故障分析,只有在設備經過全面測試后才可設置。
Default: 0
上一篇 – 樹莓派超全系列教程文檔–(32)config.txt常用音頻配置
下一篇 – 樹莓派超全系列教程文檔–(34)樹莓派配置GPIO