一些用戶 想知道 Raspberry Pi 是否有 BIOS 或 UEFI,與其他計算機一樣,因為如您所知,基於 Arm 的計算機也支持 UEFI,例如 這款 SBC 如此受歡迎且便宜. 但事實是,樹莓派已經選擇了另一種替代解決方案。
在這裡您將了解該解決方案是什麼以及原因 不使用這個固件, 除了向您展示當沒有計算機上的設置菜單時如何在 Raspberry Pi 上進行一些配置...
為什麼樹莓派不使用 BIOS/UEFI?
如你所知, BIOS 或 UEFI 是固件 它存在於大量計算機中,包括台式機、筆記本電腦、AIO、服務器、工作站等。 然而,它不在 Raspberry Pi 上,儘管它是一個 SBC(單板計算機),不像其他 x86 SBC 那樣使用這個固件進行啟動過程和系統檢查。 這並不是因為 Raspberry Pi 是基於 ARM 的,因為許多 ARM 計算機也有 BIOS/UEFI。
另一方面,必須說這個固件的設計是為了 靴子 除了能夠控制許多其他設置之外,還可以更輕鬆地從操作系統所在的存儲介質進行操作。 在這裡,他向我們提供了有關 Raspberry Pi 不使用 BIOS 的原因的線索。 一方面,因為它只能從相同的介質啟動設備,比如 SD 卡,而不能通過其他方式啟動。 另一方面是因為樹莓派的外設數量和功能比較有限。
然而,這並不完全是不使用 BIOS 或 UEFI 的理由。 其實仔細分析的話, Raspberry Pi 的 ARM SoC 使用自己的內部固件 無需單獨的 BIOS 芯片即可將 CPU 引導至正確狀態和系統的其餘部分。 但是...那麼為什麼您不能訪問 BIOS 設置或 BIOS 菜單? 一方面,因為這個固件非常有限,不像BIOS/UEFI那麼複雜,所以菜單配置參數沒有意義,另一方面,因為前面提到的,它只能從默認存儲介質。 ,如 SD 卡。
出於這個原因,Raspberry Pi 的開發人員更喜歡使用這個基本固件進行初始化和從 SD 卡啟動,而不是使用 只讀存儲器芯片 在 PCB 上安裝更複雜的固件。 而且,如果您看的話,移動設備也沒有 BIOS / UEFI,因為它們只能從內部存儲器啟動 Android(或其他操作系統)。
這樣一來,一方面省去了板上那塊額外的芯片,另一方面也免除了閃存存儲的需要。 會使Raspberry Pi更貴. 您必須單獨購買 SD 卡。
但是,必須要說的是,在樹莓派 3 實驗中加入了對 從 USB 介質啟動 必須明確啟用並且不能禁用。 這包含在新版本 SoC 的嵌入式固件中,但這有點複雜,這可能是為什麼他們最初決定從簡單的東西開始,只使用從 SD 存儲卡啟動。
Raspberry Pi 使用的是什麼?
例如,Raspberry Pi 沒有 PC 世界所理解的 BIOS 或 UEFI,但它確實有一個 閉源固件 在我上面提到的 SoC 中。 該芯片由 Broadcom 公司設計,該公司為這些 Raspberry Pi Foundation 板提供 BCM。
在 SoC(片上系統) 它集成了一個ARM Cortex-A系列CPU、一個VideoCore GPU、一個用於數字信號處理的DSP、CPU和GPU共享的SDRAM內存以及USB等控制器。 此外,它還包括一個 ROM 存儲器,其中集成了我們正在談論的固件,這是引導所必需的。
啟動程序
很多 步驟 跟隨此固件的是:
- 這個固件負責 啟動引導程序 SD 卡上的操作系統。 如您所知,bootloader 掛載 SD 存儲卡的 FAT32 分區並進入第二個引導階段,該階段已在 SoC 中編程且無法修改。
- 在第二階段,一個名為 啟動代碼.bin,其中準備並啟動了 GPU 固件。 該文件只能存儲在 SD 卡上,因此無法像 PC 的傳統 BIOS/UEFI 那樣更改啟動優先級,並且只能從那裡啟動。 然而,正如我所說,在 Pi 3 上還實驗性地添加了從 USB 啟動的功能。
- 然後是第三個階段,其中使用啟動 CPU 的 start.elf 文件和一個名為 fixup.dat 的文件,該文件用於在 SDRAM 中創建必要的分區以便開始使用由CPU和GPU。
- 最後,執行用戶代碼,通常是可執行二進製文件或圖像 Linux內核,例如 kernel.img,或來自 Raspberry Pi 支持的其他操作系統,這就是操作系統啟動的方式,因此您可以使用它......
如您所見,這是一個簡單的過程,但如果我們將其與 PC 或其他計算機進行比較,則有些奇怪。 就是這樣,在 Raspberry Pi 的情況下,不像在其他情況下那樣啟動 CPU, GPU 首先啟動. 事實上,這個 Broadcomo GPU 將負責在 SoC 中執行一種非常簡單但功能必需的嵌入式操作系統。 它被稱為 VCOS(視頻核心操作系統),它將與 Linux 進行通信。 這是非常罕見的,但事實是 Pi 的 GPU 不僅負責圖形和啟動,它還負責 控制系統時鐘和音頻.
原則上,話雖如此,但我們似乎無能為力 修改啟動配置但事實是並非完全如此。 就是在系統的/boot/目錄下有一個名為config.txt的文件,如果用文本編輯器打開它,可以很容易地修改它的內容來改變引導並配置一些參數.
此 配置文件 它會在啟動 ARM 內核後由 GPU 讀取,它包含讓 SoC 知道在系統啟動期間要做什麼的指令。 例如,我們可以修改其中的專用內存、內存刷新、禁用對 L2 緩存的訪問、更改 CMA 配置、啟用或禁用相機 LED、更改視頻模式選項、編解碼器、一些選項啟動、超頻等。
這個文件有一個 句法 非常奇特,因此必須尊重它以避免在啟動時出現問題。 如果你想了解更多關於它的信息,你可以 閱讀我在此鏈接中留給您的維基.
更改 Raspberry Pi 上的啟動優先級
當您更改 PC 上的啟動順序或優先級時,一切都非常簡單,您只需進入 BIOS/UEFI,然後在“啟動”選項卡中,您可以找到可以更改的參數以從硬盤啟動,一種光學介質、USB、網絡等反而, 在 Raspberry Pi 上就沒那麼容易了. 默認情況下,它將始終從 SBC 中插入的 SD 存儲卡啟動操作系統。 事實上,即使在版本 3 之後,如果同時插入 SD 卡和 U 盤,系統仍然會先從 SD 啟動。 如果拔掉SD,只剩下USB,那麼就通過USB來完成。
但是這個順序是可以改變的。 為此你必須 啟動樹莓派,例如,並執行以下操作:
- 使用以下命令打開 Raspberry Pi 安裝程序:
須藤raspi-config
- 轉到“高級選項”部分。 (注意,菜單是英文的)
- 然後,在此部分中,在“引導順序”選項上按 ENTER。
- 您現在應該看到三個不同的選項可供選擇:
- SD卡開機- 默認情況下,此選項已在您的 Raspberry Pi 設備上啟用,如果您同時插入 SD 卡和 USB,系統將使用 SD 卡作為默認啟動選項,除非您將其移除。
- USB啟動:如果你想使用USB作為啟動的主要設備,你可以選擇這個選項,當你有一個USB設備插入Raspberry Pi時可以使用。 否則,您不應該插入 SD 卡來引導系統。
- 網絡啟動:如果您的 Raspberry Pi SD 卡由於某種原因無法工作或您的操作系統有問題,此啟動選項很有用。 在這種情況下,它將使用 Imager 工具將系統重新安裝到 SD 卡上。
完成後,您可以 重啟樹莓派 應用更改...
診斷 Raspberry Pi 問題 (POST)
最後,您會知道在 BIOS/UEFI 中有一個稱為 POST 的步驟,該步驟在操作系統啟動之前執行,將檢查不同組件的狀態。 如果一切正常,它將啟動操作系統。 但是,如果它檢測到任何問題,它就會停止並在屏幕上顯示一條錯誤消息或發出一些可聽見的蜂鳴代碼以確定問題所在。
這在 Raspberry Pi 上也不存在。 但是,SoC 固件有一種方法可以嘗試標記可能發生的問題以便於診斷。 這是通過其電源 LED 實現的。 例如,對於 Raspberry Pi 4,LED 發出的指示問題的燈碼是:
長閃 | 短閃 | Status |
---|---|---|
0 | 3 | 啟動期間的一般故障 |
0 | 4 | start*.elf 未找到 |
0 | 7 | 找不到內核映像 |
0 | 8 | 內存故障 |
0 | 9 | 內存不足 |
0 | 10 | 處於暫停狀態 |
2 | 1 | 分區不是 FAT(不支持) |
2 | 2 | 讀取分區失敗 |
2 | 3 | 非 FAT 擴展分區 |
2 | 4 | 哈希或簽名不匹配 |
3 | 1 | SPI-EEPROM錯誤 |
3 | 2 | SPI EEPROM 寫保護 |
3 | 3 | I2C錯誤 |
4 | 4 | 不支持的板類型 |
4 | 5 | 致命固件錯誤 |
4 | 6 | A型失火 |
4 | 7 | B型失火 |