導航:首頁 > 源碼編譯 > Linux為什麼bootloader編譯

Linux為什麼bootloader編譯

發布時間:2025-01-09 23:19:08

⑴ bootloader和bootstrap的區別

bootloader

bootstrap
的區別

《embedded
linux
primer
》上看到的,其實還有一些分歧和不精確的地方,
比如bootstrap
和bootstrap
loader似乎在PC上還有區別,不過還是不影響理解了
http://www.devbone.com/leadbbs/MINI/Default.asp?100-2246-0-0-0-0-0-a-.htm
又如RedBoot(RedHat
Embedded
Debug
and
Bootstrap),本質是一個bootloader但名字又有bootstrap,讓人郁悶
http://sourceware.org/redboot/
這里僅限於嵌入式+ARM+Linux環境
bootloader
翻譯為
(第一階段)引導裝入程序
bootstrap
loader
翻譯為
第二階段引導裝入程序
bootloader不用多解釋都能理解--上電後執行的第一個程序,它絕對不會依賴內核。比如uboot、vivi
bootstrap,第二階段引導裝入程序,屬於內核代碼(沒有被編譯進vmlinux,但是可執行的鏡像如zImage中含有bootstrap
),充當bootloader和內核鏡像之間的紐帶。
bootstrap通常會校驗內核鏡像、
壓縮
內核鏡像、重新部署內核鏡像到內存、為內核執行提供合適的上下文(無非是關中斷、開指令cache和數據cache、設置c語言運行環境)
執行流程
上電-->bootloader
-->bootstrap(head.o)-->內核vmlinux(head.o)-->內核start_kernel(main.o)
以上兩個head.o並不相同
bootstrap用的是/arch/arm/boot/compressed/head.S
內核vmlinux用的是/arch/arm/kernel/head.S
雖然都是head.o,但是不在一個時代了,自此區分開了bootstrap和內核vmlinux
等於你看到Uncompressing
Linux...
done,
booting
the
kernel.
還屬於bootstrap
等到列印出第二行
內核版本
信息的時候,就已經是真正的內核main.o的時代了
一個嚴格意義上的內核,make的一個最重要的生成文件
vmlinux
去掉了符號、標記和注釋後生成了image
gzip壓縮後變成piggy.gz
接下來,一個名為piggy.s的文件被匯編成piggy.o
非常有意思的是它僅有7行代碼,其實就只有把piggy.gz
包含進來的作用
.section
.piggydata,#alloc
.globl
input_data
input_data:
.incbin
"arch/arm/boot/compressed/piggy.gz"
.globl
input_data_end
input_data_end:
接著piggy.o同misc.o、head.o等屬於bootstrap的代碼一起鏈接成為zImage等可以被引導的合成鏡像。
其中misc.o負責解壓縮、head.o
head_xx.o
負責進行內核上下文的初始化

閱讀全文

與Linux為什麼bootloader編譯相關的資料

熱點內容
截圖R命令 瀏覽:654
基於單片機的智能台燈設計 瀏覽:685
多餘app是怎麼兌換皮膚的 瀏覽:552
sql資料庫查詢表命令 瀏覽:551
簡單音樂網站源碼 瀏覽:644
運動健康app華為手錶怎麼連接 瀏覽:748
肌肉塑造全書pdf下載 瀏覽:796
安卓簡約拼圖用什麼軟體好 瀏覽:289
fx1n加密程序 瀏覽:844
淘客阿里雲伺服器 瀏覽:476
100壓縮打造 瀏覽:422
安卓手機怎麼和蘋果平板傳文件 瀏覽:973
開始選項卡中的頁眉和頁腳命令選項 瀏覽:424
pdf的字體怎麼改 瀏覽:856
python讀寫視頻 瀏覽:88
科魯茲壓縮機軸承 瀏覽:353
word文檔轉換成pdf文件找不到 瀏覽:27
組件注冊命令 瀏覽:760
安卓大屏導航用的是什麼運放 瀏覽:443
myandroidtools的備份 瀏覽:900