启动内核为什么一定要先启动bootloader_为什么需要bootloader-程序员宅基地

技术标签: bootloader  嵌入式  



有个参考资料:

下面是我的理解,基于上面的补充,如有不对的或者需要补充的地方,欢迎指正。

1、linux一开始的设计是在inter的X86上,是有BIOS的。而bootloader是嵌入式设备才有的,一部分功能就是替代了BIOS。 完成对内核的引导和加载。
2、基于上面的考虑,操作系统在设计之初就是基于BIOS的引导而实现的,所以操作系统是单纯独立的。想想笔记本跟台式机   可以安装相同的Windows系统,但是BIOS一定是不一样的(硬件设计不一样,BIOS是主板设计厂商提供的)。   放在嵌入式设备上也可以这么理解。
3、操作系统的启动是个复杂的过程,单纯依靠硬件的时序触发是不可能完成的。操作系统一般放在非易失的存储介质中,比如在机械硬盘(HDD),固态硬盘(SSD),eMMC,Nand-Flash等,也可以通过网络加载,前提是一定要有代码能够驱动相应的硬件或网络运行,也就是驱动程序(有时还需要支持相应的文件系统读写)。而这部分工作就是BIOS或者bootloader做的。
4、BIOS和OS之间还有一个GRUB,准确来说,bootloader相当于BIOS+GRUB。
   至于为什么需要GRUB,我的理解是(我对这个不熟):
   (1)操作系统的启动需要传递参数,BIOS做不到,GRUB可以做到,BootLoader可以做到。
   (2)磁盘一般有多个分区,操作系统一定不是放在第一个扇区(就是从0开始的地方)。放在哪儿,GRUB知道。
        而BIOS要从0这个地方开始读程序。所以GRUB相当于一个门童。
        Windows上有“启动和故障恢复”,可以选择默认启动的操作系统,意思就是如果安装双系统,需要修改GRUB(增加引导程序)。
        然后在下面就可以选择默认启动的那个操作系统,也可以设置其他参数。
     

跟同事讨论之后,同事提了一点看法:

1、为了更好的启动以及把不动部分提出来,内核是经常要动的,升级失败是很头痛的事情;boot基本做好后不动了,这样uImage升级失败就简单了,所以有时需要3段式启动,
      把变的boot再单独出来,这也是grub的思想。华三的设备基本都是3段式启动,MIPS的cn7130也是,海思内部也有个自己的boot,也属于3段式启动。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/who_you_are/article/details/50931489

智能推荐

shiro常用配置_<dependency> <groupid>org.apache.shiro</groupid> <-程序员宅基地

文章浏览阅读195次。快速开始maven依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.3</version&g..._ org.apache.shiro shiro-cor

org.springframework.beans.factory.BeanInitializationException: Could not load properties;-程序员宅基地

文章浏览阅读3.4k次。基本报错信息表现为:严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanInitializationExce...

手持式频谱分析仪推荐哪一款?_手持频谱分析仪-程序员宅基地

文章浏览阅读1.5k次。手持式频谱分析仪,都有什么品牌,推荐哪一款_手持频谱分析仪

《了凡四训》,仅仅12句,改变你的命运-程序员宅基地

文章浏览阅读741次,点赞6次,收藏2次。《了凡四训》是明代著名思想家袁了凡给自己儿子写的告诫书。全书共四个章节,包含了儒家、佛家、道家三家学说,并被后世誉为“中国历史上的第一善书”和“东方励志奇书”。曾国藩在读了《了凡四训》后,对袁了凡推崇备至,并将这本书列为子侄必读的“人生智慧书”。中国人的骨子里,始终存在一个观点:生死有命,富贵在天。但袁了凡认为,只要通过自己的努力,经营自己的人生,就能求财得财,求子得子,万事如意。在这本书中,袁了凡以其毕生的学问与修养,用自己的亲身经历,结合大量真实生动的事例,告诫儿子不要被“命”字束缚手脚,命运是可以_了凡四训》,仅仅12句,改变你的命运

SpringMVC实战(三)——自带标签库-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏4次。该文章基于《Spring+MyBatis企业应用实战》进行总结,旨在积累巩固表单标签库如果想要使用SpringMVC自带标签库,需要在开头声明:&lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&gt;form标签自动绑定一个属性值到当前form对应的实体对象(默认为com...

Java学习笔记抽象与接口-程序员宅基地

文章浏览阅读778次。我的Java学习笔记抽象与接口文章目录我的Java学习笔记抽象类和接口1.类和对象的关系?2.abstract关键字2.1 修饰类2.2 修饰方法3.interface关键字3.1接口3.2 implements关键字4.JDK1.8之后接口发生的改变4.1 支持default方法4.2 支持static方法5.工厂模式6.策略模式抽象类和接口1.类和对象的关系?类就是对对象的描述。如果一个类中无法充足的描述一个对象那么这么类就是抽象类。2.abstract关键字2.1 修饰类使用ab

随便推点

【Windows】快捷键操作指南-程序员宅基地

文章浏览阅读580次。作为靠手吃饭的程序员,想过有一天只能单手操作命令,该如何谋生吗?假设有这么一天,你就必须抛弃鼠标,单手操作。作者收集了windows下的部分好用命令,会保持更新。【Windows命令】常用命令:(三个tab,一大一关)Alt+tab(快速):切换窗口Win+ Tab:松开键盘界面不会消失.Ctrl+Tab :切换到下一个选项卡或浏览器的标签Alt键相关

application/json 和 application/x-www-form-urlencoded 有什么区别?_application_form_urlencoded application_json-程序员宅基地

文章浏览阅读816次。两者之间有什么区别? 分析:第一种情况是告诉 Web 服务器您正在发布 JSON 数据,如下所示:​​​“application/json”内容类型是预检请求之一。现在,如果请求不是简单的请求,浏览器会自动在原始请求之前发送HTTP请求,然后通过OPTIONS方法检查发送原始请求是否安全。如果可以,则发送实际请求。您可以在此处查找详细信息。application/json 是初学者友好的。URL编码数组可能是一场噩梦!分析:第二种情况是告诉 Web 服务器,您将在 URL 中对参数进行编码_application_form_urlencoded application_json

PL/Python - Python 过程语言自定义函数实现指定符号分割后元素间包含关系查找_plpython3u 作用-程序员宅基地

文章浏览阅读291次。1、单个单词的查找(元素间按空格拆分的二次判断)-- 定义函数找出列表中元素之间存在的包含关系DROP FUNCTION IF EXISTS pyinclude;CREATE FUNCTION pyinclude(s TEXT) RETURNS textAS $$ global s lt=s.split(";")#将字符串根据分号拆分成列表 long=len(lt) ls=[..._plpython3u 作用

oracle导出expdp-程序员宅基地

文章浏览阅读1.3k次。expdp/impdp 是 oracle 10g 版本后推出的服务器端工具--数据泵,作用是为了将数据库中的逻辑对象,比如表、用户、全库、表空间进 行导入,导出 命令解析 ATTACH ATTACH [=[schema_name.]job_name] schema_name 表示用户名,job_name 表示导出的作业名。 该选...

MSN SNIFFER-程序员宅基地

文章浏览阅读1k次。张 说:早上好Lisa 说:morning 张 说:晕倒,我安装了一个 MSN SNIFFER,原来我们的 MSN 和 ICQ 谈话都可以被自由窃听的 Lisa 说:啊?Lisa 说:只是谁有兴趣窃听这些东东呀?张 说:好久没做安全方面的研究了张 说:原来技术发展这么快了,我还以为 QQ 可以被监听,MSN 会安全一点 传输“MSNSNIFF.jpg”完成。 Lisa 说:你这是在另一台

分页查询时报错:The bean ‘localeResolver‘, defined in class path resource [com/botany/spore/core/config/Comm-程序员宅基地

文章浏览阅读1.2k次。The bean 'localeResolver', defined in class path resource [com/botany/spore/core/config/CommonConfig.class], could not be registered. A bean with that name has already been defined in class path resource