导航:首页 > 源码编译 > 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 浏览:533
androidmirrors 浏览:464
光点服务器地址 浏览:265
php7教程pdf 浏览:386
摄像头多怎么用服务器装硬盘 浏览:178
kmeans聚类算法权重距离公式 浏览:688
安卓怎么下载信聊 浏览:936
天狐app怎么样 浏览:893
程序员佛系头像 浏览:705
猫架app是干什么的 浏览:516
建行app怎么缴社保 浏览:101
flooding算法 浏览:414
福州地区吃饭用什么app 浏览:952
荣耀大文件夹名称大全 浏览:980
空白文件夹集中 浏览:16
php查看浏览器版本 浏览:636
怎么用搜索引擎搜奥运会服务器 浏览:210
苹果手机使用软件怎么服务器繁忙 浏览:586
长河全文在什么app可以看 浏览:597
广东dns服务器云服务器 浏览:45