Chinaunix

标题: X86一定需要BIOS吗? [打印本页]

作者: new_learner    时间: 2011-01-19 23:28
标题: X86一定需要BIOS吗?
不太明白X86为什么一定要配上BIOS, 那些硬件信息,OS不是照样可以检测到么?

大侠请指点。。。
作者: linyunxian    时间: 2011-01-20 09:07
内核启动需要一些基本的条件,如内存已初始化至工作状态,CPU类型,启动分区等....
作者: EZWORD    时间: 2011-01-20 09:42
的确,用其它的类似bios的应该也行的,只要功能上差不多
作者: new_learner    时间: 2011-01-20 10:59
内核启动需要一些基本的条件,如内存已初始化至工作状态,CPU类型,启动分区等....
linyunxian 发表于 2011-01-20 09:07



    那用烧在flash里的uboot或者类似的不就行了?
我的疑问是为什么"一定"要用BIOS?
作者: smalloc    时间: 2011-01-20 12:50
BIOS是主版厂商出的吧.和主版配套. 卖硬件的也管不到你用哪款OS了.
完全是商业上的便利
作者: eggqq007    时间: 2011-01-20 13:26
BIOS并不是只用来检测硬件信息。。。

没有BIOS。。。OS都运行不起来。。。因为不知道操作系统第一条指令在哪~~~
作者: dzmcs    时间: 2011-01-20 21:35
自己感觉x86那样处理bios比较稳定和方便,如果像uboot vivi那样普通用户使用就不方便了,二级loader的地址也可以变来变去的了
作者: tempname2    时间: 2011-01-21 12:52
Bios只是严重与硬件相关、负责初始化并提供一些驱动的程序而已,它不负责启动特定OS。当然,给BIOS做个漂亮的GUI,增加启动特定OS的代码,或者加个网络协议栈,甚至把它做成个小型的OS,理论上说是可以的。但又有新的OS出现你又没辙了。把任务的层次分开估计还是好一些。不过现在有些BIOS做的也好远了,比如把x86换到保护模式,要是想在这台机器上启动早期的DOS怎么办呢。。。。
作者: cjaizss    时间: 2011-01-22 10:57
这只是一种模式
作者: new_learner    时间: 2011-01-23 00:17
这只是一种模式
cjaizss 发表于 2011-01-22 10:57



   什么模式?商业?技术?
能否具体说一下?
谢谢!
作者: cjaizss    时间: 2011-01-23 21:51
什么模式?商业?技术?
能否具体说一下?
谢谢!
new_learner 发表于 2011-01-23 00:17


很多行业必须要有个规范,一团糟最终只能各走各的。是技术也是商业,更重要的是规范。
作者: amarant    时间: 2011-01-25 15:57
我感觉bios还是有用的,比如说设置了bios密码,别人就用不了你的电脑了。如果设置的是系统的密码,别人还是可以通过其他方式启动看你的资料
作者: dibug    时间: 2011-01-29 22:15
OS是在BIOS之上的那‘层’,OS对硬件的检查, 是通过bios层的。
作者: accessory    时间: 2011-02-07 06:00
看你怎么定义BIOS了。UBOOT没有弄过,X86 PC 下 BIOS最近一直在弄。

其实BIOS干了很多事情,其中比较主要的一个是 POST, 就是检测和初始化硬件。这些事情OS是可以做,但是对于一般的OS (WINDOWS, LINUX ETC) 来说,很多硬件他们是不知道如何初始化的,因为他们没有相关的硬件手册和文档。

比如说 DDR2 OR DD3 MEMORY. 这个东西的初始化非常复杂,即使是各大主板厂商,IBV(例如PHOENIX),里面知道怎么初始化内存的也不多。有一部分代码叫MRC, 这个是INTEL 直接给各个BIOS厂商的,也就是说,最核心的东西只有INTEL 知道。其他人都不是很清楚,更别说OS 厂商了。

现在的模式是主板厂商找IBV 买一个一般版本的BIOS,这个BIOS还不能直接用,要主板厂商根据自己的板子做很多修改和设置,弄好之后才可以用。其中涉及到很多硬件规范,手册等。很多都是商业机密,OS厂商不一定能拿到。

而且对于一般的OS来说,他假设他运行的时候,CPU, MEMORY 都是已经可以用的状态。即使是 X86的实模式,也是已经可以用了。而这些硬件在刚开始加载的时候,是几乎不能用的,很多东西都要设置,这个就是BIOS干的事情。

如果OS厂商有足够的人力,又愿意,又可以拿到所有的硬件手册,那么是可以做BIOS的事情的。结果就是OS 和BIOS合并到一起了。 :) 但是OS厂商做这个事情吃力不讨好,所以一般都不做。

个人意见,仅供参考。
作者: accessory    时间: 2011-02-07 06:18
另外,我觉得老兄你没把PC 和嵌入式之间的区别搞清楚吧。UBOOT 是嵌入式的?

那和PC差别太大了。PC上硬件设置多灵活啊,随便你差几条内存,啥型号,啥规格,大小,N种组合。其他硬盘,显卡,IO 等也是。这么多的组合,都要支持起来就需要比较复杂的软件。

嵌入式一般是SOC那种,基本上硬件都定死了,初始化部分的软件可以做的很简单

其实可以看看 COREBOOT, 开源的BIOS。
作者: cjaizss    时间: 2011-02-08 23:03
另外,我觉得老兄你没把PC 和嵌入式之间的区别搞清楚吧。UBOOT 是嵌入式的?

那和PC差别太大了。PC上硬件 ...
accessory 发表于 2011-02-07 06:18



    这个嘛,不同的人对于embedded定义不一样吧。
作者: ysw    时间: 2011-02-15 20:13
那用烧在flash里的uboot或者类似的不就行了?
我的疑问是为什么"一定"要用BIOS?
new_learner 发表于 2011-01-20 10:59



IBM发明PC时就是这样的了。OS之前的都叫BIOS
作者: new_learner    时间: 2011-02-16 00:35
比如说 DDR2 OR DD3 MEMORY. 这个东西的初始化非常复杂,即使是各大主板厂商,IBV(例如PHOENIX),里面知道怎么初始化内存的也不多。有一部分代码叫MRC, 这个是INTEL 直接给各个BIOS厂商的,也就是说,最核心的东西只有INTEL 知道。其他人都不是很清楚,更别说OS 厂商了。

现在的模式是主板厂商找IBV 买一个一般版本的BIOS,这个BIOS还不能直接用,要主板厂商根据自己的板子做很多修改和设置,弄好之后才可以用。其中涉及到很多硬件规范,手册等。很多都是商业机密,OS厂商不一定能拿到。
accessory 发表于 2011-02-07 06:00


多谢A哥,这就是我想要的答案:)
以前一直不清楚X86的PC中,为啥一直要依赖于BIOS做硬件初始化,而不是用其他的类似于BIOS的其他loader来做。原来这后面有这么多story~ 利益群体还挺多的。

另外,我觉得老兄你没把PC 和嵌入式之间的区别搞清楚吧。UBOOT 是嵌入式的?
accessory 发表于 2011-02-07 06:00

其实现在很多嵌入式产品,X86的板子已经很普及了,也是跟PC一个流程,也有BIOS的。
作者: new_learner    时间: 2011-02-16 00:36
看你怎么定义BIOS了。UBOOT没有弄过,X86 PC 下 BIOS最近一直在弄。

其实BIOS干了很多事情,其中比较主要 ...
accessory 发表于 2011-02-07 06:00



A版,关于这些BIOS的商业方面的story,有没有什么文章推荐一下呢?想了解下。。。
作者: accessory    时间: 2011-02-17 02:39
回复 19# new_learner

商业的故事我也是一点一点看到的。印象中没啥比较集中的讲的好文章。如果你对BIOS感兴趣,推荐一个论坛:

BIOSREN.COM

:)
作者: kuwoyidai    时间: 2011-02-18 11:12
X86不是说一定需要BIOS,只是说任何架构它都应该要做一些该做的事情,而BIOS只是做了在OS前一些该做的事情罢了。
作者: rawa9999    时间: 2011-02-20 14:38
http://baike.baidu.com/view/196503.htm
UEFI就是用来替代bios,新标准,已经出来了。
作者: blues083    时间: 2011-02-26 23:22
看《深入理解linux内核》那本书的,附录对linux启动过程的描述,我觉得讲得很清楚了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2