Linux中bootloader介紹
一個(gè)嵌入式Linux系統從軟件的角度通常分為以下四個(gè)層次:
引導加載程序。包括固化在firmware中的boot代碼(可選),和Bootloader兩大部分。
Linux內核。
文件系統。
應用程序。
在嵌入式操作系統中,Bootloader是硬件啟動(dòng)的引導程序,是運行操作系統的前提;在操作系統內核或用戶(hù)應用程序運行之前運行的一小段代碼,對軟硬件進(jìn)行相應的初始化和設定,為最終運行操作系統準備好環(huán)境,類(lèi)似于X86計算機中的BIOS固件;Bootloader不屬于操作系統,一般采用匯編語(yǔ)言和C語(yǔ)言開(kāi)發(fā),需要針對特定的硬件平臺(比如arm、powerpc、MIPS等)編寫(xiě),Bootloader不但依賴(lài)于CPU的體系結構,而且依賴(lài)于嵌入式系統板級設備的配置。對于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也都需要修改Bootloader的源程序。
Bootloader的兩種操作模式自啟動(dòng)模式:在這種模式下,Bootloader從目標機上的某個(gè)固態(tài)存儲設備上將操作系統(kernel)加載到RAM中運行(讀取bootcmd參數),整個(gè)過(guò)程并沒(méi)有用戶(hù)的介入。
交互模式:在這種模式下(uboot可在倒計時(shí)按任意鍵進(jìn)入到這種模式),目標機上的Bootloader將通過(guò)串口或網(wǎng)絡(luò )等方式從開(kāi)發(fā)主機(Host)上下載內核映像和根文件系統映像等到RAM中,可以被 Bootloader寫(xiě)到目標機上的固態(tài)存儲媒質(zhì)中,或者直接進(jìn)行系統的引導。也可以通過(guò)串口接收用戶(hù)的命令。
Bootloader的基本功能初始化相關(guān)硬件
把bootloader自搬運到RAM中
執行用戶(hù)的命令
訪(fǎng)問(wèn)環(huán)境變量
通過(guò)網(wǎng)絡(luò )/串口通信
讀寫(xiě)RAM/FLASH
加載并執行內核
Redboot:Redhat公司隨eCos發(fā)布的一個(gè)BOOT方案,是一個(gè)開(kāi)源項目,Linux操作系統引導,在線(xiàn)讀寫(xiě)Flash。
ARMboot:ARM平臺的開(kāi)源固件項目,2002年ARMboot終止了維護。
U-Boot:ARMboot并入了PPCBoot,和其他一些平臺的Loader合稱(chēng)U-Boot,是目前最常用的bootloader。
Blob、Bios-lt、Bootldr、vivi等
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。