導航:首頁 > 源碼編譯 > 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編譯相關的資料

熱點內容
資料庫查詢系統源碼 瀏覽:614
php5314 瀏覽:354
完美國際安裝到哪個文件夾 瀏覽:666
什麼app可以掃一掃做題 瀏覽:537
程序員編碼論壇 瀏覽:923
淘點是什麼app 瀏覽:658
中國高等植物pdf 瀏覽:453
51單片機時間 瀏覽:181
後台如何獲取伺服器ip 瀏覽:265
單片機流水燈程序c語言 瀏覽:233
程序員第二職業掙錢 瀏覽:237
運行里怎麼輸入伺服器路徑 瀏覽:840
pythonstepwise 瀏覽:509
劉一男詞彙速記指南pdf 瀏覽:62
php認證級別 瀏覽:366
方舟編譯啥時候推送 瀏覽:1010
php手機驗證碼生成 瀏覽:675
哲學思維pdf 瀏覽:14
凌達壓縮機有限公司招聘 瀏覽:534
weblogic命令部署 瀏覽:36