bootloader和bootstrap的區別

2021-09-30 11:03:42 字數 1563 閱讀 6509

在 《embedded linux primer 》上看到的,其實還有一些分歧和不精確的地方,

比如bootstrap 和bootstrap loader似乎在pc上還有區別,不過還是不影響理解了

又如redboot(redhat embedded debug and bootstrap),本質是乙個bootloader但名字又有bootstrap,讓人鬱悶

這裡僅限於嵌入式+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 負責進行核心上下文的初始化

bootloader和bootstrap的區別

bootloader和bootstrap的區別 在 embedded linux primer 上看到的,其實還有一些分歧和不精確的地方,比如bootstrap 和bootstrap loader似乎在pc上還有區別,不過還是不影響理解了 又如redboot redhat embedded debu...

關於BSP,BIOS,和bootloader區別

bsp是板級支援包,是介於主機板硬體和作業系統之間的一層,應該說是屬於作業系統的一部分,主要目的是為了支援作業系統,使之能夠更好的執行於硬體主機板。bsp是相對於作業系統而言的,不同的作業系統對應於不同定義形式的bsp,例如vxworks的bsp和linux的bsp相對於某一cpu來說儘管實現的功能...

Bootloader介紹和啟動

一 bootloader的介紹 1.什麼是bootloader bootloader是硬體啟動的引導程式,是執行作業系統的前提。在作業系統核心或使用者應用程式執行之前執行的一段小 對硬體進行相應的初始化和設定,最終為作業系統準備好環境。2.bootloader的特點 bootloader不屬於作業系...