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

熱點內容
天狐app怎麼樣 瀏覽:889
程序員佛系頭像 瀏覽:701
貓架app是干什麼的 瀏覽:513
建行app怎麼繳社保 瀏覽:99
flooding演算法 瀏覽:414
福州地區吃飯用什麼app 瀏覽:952
榮耀大文件夾名稱大全 瀏覽:980
空白文件夾集中 瀏覽:16
php查看瀏覽器版本 瀏覽:636
怎麼用搜索引擎搜奧運會伺服器 瀏覽:210
蘋果手機使用軟體怎麼伺服器繁忙 瀏覽:586
長河全文在什麼app可以看 瀏覽:597
廣東dns伺服器雲伺服器 瀏覽:45
java等待喚醒 瀏覽:754
app系統中已鎖定什麼時候 瀏覽:328
qq在後台顯示加密 瀏覽:178
如何訓練演算法 瀏覽:462
ios查看壓縮文件 瀏覽:659
移除的app怎麼找回桌面 瀏覽:859
低級語言編譯器 瀏覽:30