樹莓派超全系列教程文檔--(33)樹莓派啟動選項

樹莓派啟動選項

    • 啟動選項
      • `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_filefixup_file

這些選項指定在引導步驟前傳輸到 VideoCore GPU 的固件文件。

start_file 指定要使用的 VideoCore 固件文件。
fixup_file 指定用于修改 start_file 中使用的內存位置以匹配GPU內存拆分的文件。

start_filefixup_file 是匹配的一對,使用不匹配的文件導致板子無法啟動。這是一個高級選項,因此我們建議您使用 start_xstart_debug 而不是此選項。

NOTE: 不能以這種方式選擇裁剪固件( start*cd.elffixup*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 文件名 內存地址。它在一個參數中同時執行 ramfsfileramfsaddr 的操作。地址也可以是 followkernel (或 0 ),以便將其放在內核映像之后的內存中。示例值如下 initramfs initramf.gz 0x00800000initramfs 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_prefixupstream_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_2ndstage1,則啟用 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.binconfig.txt 中的 eeprom_write_protect 設置。

在這里插入圖片描述

NOTE: flashrom 不支持清除寫保護區域,如果定義了寫保護區域,將無法更新 EEPROM。

在 Raspberry Pi 5 上,/WP 默認為低電平,因此一旦配置了 寫狀態寄存器,就會啟用寫保護。要清除寫保護,可通過連接 TP14TP1/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

如果該屬性設置為 1recovery.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_pubkeyrevoke_devkey。該選項可能會阻止故障分析,只有在設備經過全面測試后才可設置。

Default: 0

上一篇 – 樹莓派超全系列教程文檔–(32)config.txt常用音頻配置
下一篇 – 樹莓派超全系列教程文檔–(34)樹莓派配置GPIO

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77615.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java怎么找bug?Arthas原理與實戰指南

Arthas原理與實戰指南 1. Arthas簡介 Arthas是阿里巴巴開源的Java診斷工具,其名字取自《魔獸世界》的人物阿爾薩斯。它面向線上問題定位,被廣泛應用于性能分析、定位問題、安全審計等場景。Arthas的核心價值在于它能夠在不修改應用代碼、不重啟Java進程…

Python自學第1天:變量,打印,類型轉化

突然想學Python了。經過Deepseek的推薦,下載了一個Python3.12安裝。安裝過程請自行搜索。 乖乖從最基礎的學起來,廢話不說了,上鏈接,呃,打錯了,上知識點。 變量的定義 # 定義一個整數類型的變量 age 10#…

基于STM32中斷講解

基于STM32中斷講解 一、NVIC講解 簡介:當一個中斷請求到達時,NVIC會確定其優先級并決定是否應該中斷當前執行的程序,以便及時響應和處理該中斷請求。這種設計有助于提高系統的響應速度和可靠性,特別是在需要處理大量中斷請求的實…

游戲盾和高防ip有什么區別

游戲盾和高防IP都是針對網絡攻擊的防護方案,但??核心目標、技術側重點和應用場景存在顯著差異??。以下是兩者的詳細對比分析: ??一、核心定位與目標?? ??維度????高防IP????游戲盾????核心目標??抵御大流量網絡攻擊&#xff08…

Spark-SQL3

Spark-SQL 一.Spark-SQL核心編程(四) 1.數據加載與保存: 1)通用方式: SparkSQL 提供了通用的保存數據和數據加載的方式。這里的通用指的是使用相同的API,根據不同的參數讀取和保存不同格式的數據&#…

DeepSeek與Napkin:信息可視化領域的創新利器

摘要 在數字化信息爆炸的時代,如何高效地組織思路并將其轉化為直觀、清晰的可視化圖表,成為眾多領域面臨的關鍵問題。本文深入剖析了DeepSeek與Napkin這兩款工具,詳細探討它們在信息處理與可視化過程中的功能特性、協同工作機制、應用場景、…

conda 創建、激活、退出、刪除環境命令

參考博客:Anaconda創建環境、刪除環境、激活環境、退出環境 使用起來覺得有些不方便可以改進,故寫此文。 1. 創建環境 使用 -y 跳過確認 conda create -n 你的環境名 -y 也可以直接選擇特定版本 python 安裝,以 3.10 為例: co…

嵌入式芯片中的 低功耗模式 內容細講

電源域與運行級別概述 電源域(Power Domain) 核心域(Core Domain):包括 CPU 核心和關鍵架構模塊(如 NVIC、CPU 內核寄存器)。 外設域(Peripheral Domain):…

Java中常見的鎖synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock

在Java中,鎖是實現多線程同步的核心機制。不同的鎖適用于不同的場景,理解其實現原理和使用方法對優化性能和避免并發問題至關重要。 一、隱式鎖:synchronized 關鍵字 實現原理 基于對象監視器(Monitor):每…

@JsonView + 單一 DTO:如何實現多場景 JSON 字段動態渲染

JsonView 單一 DTO:如何實現多場景 JSON 字段動態渲染 JsonView 單一 DTO:如何實現多場景 JSON 字段動態渲染1、JsonView 注解產生的背景2、為了滿足不同場景下返回對應的屬性的做法有哪些?2.1 最快速的實現則是針對不同場景新建不同的 DTO…

Etcd 壓縮整理

etcd數據存儲 在實際生產中使用 ETCD 存儲元數據,起初集群規模不大的時候元數據信息不多沒有發現什么問題。隨著集群規模越來越大,可能引發存儲問題。 —auto-compaction-retention 由于ETCD數據存儲多版本數據,隨著寫入的主鍵增加歷史版本需…

【更新完畢】2025媽媽杯C題 mathercup數學建模挑戰賽C題數學建模思路代碼文章教學:音頻文件的高質量讀寫與去噪優化

完整內容請看文章最下面的推廣群 我將先給出文章、代碼、結果的完整展示, 再給出四個問題詳細的模型 面向音頻質量優化與存儲效率提升的自適應編碼與去噪模型研究 摘 要 隨著數字媒體技術的迅速發展,音頻處理技術在信息時代的應用愈加廣泛,特別是在存儲…

React-請勿在循環或者條件語句中使用hooks

這是React Hooks的首要規則,這是因為React Hooks 是以單向循環鏈表的形式存儲,即是有序的。循環是為了從最后一個節點移到一個節點的時候,只需通過next一步就可以拿到第一個節點,而不需要一層層回溯。React Hooks的執行&#xff0…

【大模型】 LangChain框架 -LangChain實現問答系統

LangChain 介紹與使用方法 1. 什么是 LangChain?2. LangChain 的主要功能3. 如何使用 LangChain?3.1 環境準備3.2 基本使用示例3.2.1 簡單的問答系統3.2.2 結合外部工具 3.3 高級用法 4. 常見問題及解決方法4.1 安裝問題4.2 運行問題4.3 性能問題 5. 實戰…

企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置)

企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置) 摘要:本文深入講解在離線環境下部署HAProxy 3.1.1的全流程,涵蓋源碼編譯、系統服務封裝、K8S APIServer四層負載配置等核心環節,并提供生產級高…

Python網絡爬蟲設計(一)

目錄 一、網絡爬蟲 1、基本的爬蟲 2、獲取URL 3、查找網頁源碼關鍵字 4、代碼實現 二、requests庫 1、requests的優勢和劣勢 2、獲取網頁的其他庫 (1)selenium庫 (2)pyppeteer庫 三、pyppeteer庫 1、pyppeteer庫的來歷…

BR_頻譜20dB 帶寬(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])

目錄 一、規范要求 1、協議章節 2、測試目的 二、測試方法 1、樣機初值條件: 2、測試步驟: 方法一:頻譜儀 方法二:綜測儀CMW500 3、預期結果 一、規范要求 1、協議章節 4.5.5 RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Ba…

【橘子大模型】初探rag知識庫的構建

一、簡介 我們在實現了一系列功能之后,終于來到了rag的部分,下面我們將基于langchain來實現一個rag檢索。 關于rag方面的知識,可以查看這兩篇文章: 大模型應用之RAG詳解 什么是 RAG(檢索增強生成) 或者是去…

CentOS7執行yum命令報錯 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7執行yum命令報錯 引更新yum源備份原有源創建新的源文件清理并重建緩存 引 CentOS 7 系統無法連接到 CentOS 的官方鏡像站點。這通常是由于網絡問題或 CentOS 7 已停止維護導致的(2024年6月30日后 CentOS 7 已進入 EOL) 報錯明細: 已…

VSCode安裝與環境配置(Mac環境)

20250419 - 概述 大概是非常久之前了,裝了VSCode,估計都得21的時候了,電腦上也沒更新過。當時安裝也直接裝上就完事了。這次把版本更新一下,同時記錄一下這個安裝過程。 安裝 mac下安裝非常簡單,直接從官網下載&am…