Bootloader存在的意義是什么?
時間:2023-09-09 來源:華清遠見
Bootloader存在的意義是什么?
前言
首先做個字面翻譯(boot啟動loader裝載器),合在一起叫“啟動加載器”,關鍵字有兩個一個是“啟動”一個“裝載”,可以理解為輔助某個“軟件或系統”啟動的“裝置”。“啟動軟件”還需要“裝置”,不是雙擊鼠標就運行了?——經常聽到學員如是反應。的確在普通用戶使用電腦時(尤其是windows系統)只需要簡單雙擊鼠標或者觸摸屏就可以啟動自己想要啟動的軟件。針對bootloader的討論是計算機專業人才針對計算機底層的運作機理的,尤其是“操作系統”是如何啟動的,才知道其意義;
技術前提
計算機核心組件:
Cpu:執行程序的組件
內存:容量小,存放程序和數據的地方,掉電消失,但是cpu能直接去操作的地方
注意:SRAM內存上電可用,DRAM內存條需要進行必要的初始化才能用
外村:容量大,存放程序和數據的地方,掉電不消失,但是cpu不能直接操作
一個簡單結論:程序平時是存在外存上的,運行的時候需要搬入內存才能運行。
更細致的剖析

以exynos4412嵌入式芯片為例,上電后cpu自動將啟動盤的固定位置前邊的一小部程序指令(BL1)搬入內部SRAM,內部的SRAM容量是非常少的(如圖 不會大于K為單位),可想而知像操作系統這樣龐大的軟件是不可能只有k單位的。那就遇到一個問題:操作系統等大軟件是不能簡單燒錄到啟動盤。為了解決這個問題,綠色部分就需要存在,里邊的代碼的使命就清楚了:
將容量很大的DRAM做好初始化,以便于讓操作系統也有機會放入內存,以便被執行。
將操作系統從啟動盤搬入內存DRAM。
將必要的啟動初參數(比如系統默認ip等)傳入操作系統,并讓cpu跳到操作系統運行。
綜上所述有這3個功能的代碼就可以被稱之為bootloader軟件!!!常見開源的有:u-boot、grab、vivi等
總結
有了bootloader軟件的實現,才有了操作系統或者稍大一點的裸機程序執行的可能性,當然這與cpu、內存等硬件設計也是非常相關的,如果不考慮成本等因素,SRAM也可以做的很大,其實沒有bootloader也能正常啟動“大軟件”。綜合考慮計算機設計人員選擇了現在的設計,so啟動加載程序可以說必不可少。

