Bios总是跳到第一扇区(512B)为什么?这是某种BIOS限制吗?

时间:2014-04-04 08:08:27

标签: linux boot bios bootstrapping uefi

首先,我不是Booting的专家,但我想更好地理解它。

1)系统启动进入BIOS,BIOS进入第一个启动扇区,该扇区首先是512个字节,然后从那里读取前440个字节。这被称为bootloader或boot strap,这个代码反过来为我们做所有事情,它跳转(下一阶段),读取分区表,如果需要,请遵循fdisk签名(引导标志)等。我有一个非常基本的问题。可能是一个愚蠢的问题:(

2)为什么BIOS只能读取第一个扇区(512字节),因为这个微小的空间引导装载程序无法适应那里,它们必须跳到舞台上。为什么BIOS不能读取超过512个字节?暂时说BIOS可以先读取100MB。 100MB足以在那里安装启动加载器,无需跳转,我们可以为它编写漂亮的全功能启动加载器,它可以为最终用户提供良好的GUI。 (通过创建单独的分区,UEFI完全相同)

3)为什么只有512Bytes?为什么BIOS不能超越它?

4)我听说BIOS是为8位处理器设计的(可能我完全错了)。你能解释一下这个吗?

很抱歉有很长的描述,但我是stackoverflow的新手。我想添加漂亮的磁盘布局图,但它说我应该至少有10个声誉。提前致谢。

1 个答案:

答案 0 :(得分:1)

当PC首次亮相时,它们的内存不超过640k,这些都是豪华型号。

第一款IBM XT(亲切地命名为'The Tank',因为它是浅军绿色并且有坚固的钢壳)只有一个8k BIOS芯片,512k(半兆字节)成为兼容战争开始时的标准。

对于这些第一台PC,没有硬盘的概念,硬盘上的大型多盘东西看起来像一个带有玻璃盖的蛋糕架(就像你可能在咖啡店里看到的那样)并且通常很重他们带了2到3个人抬起来。

通常这些大型碟片机箱当时只与大型机连接,而且太大而无法考虑提供给台式机,因此使用了软盘。

这些软盘的第一轮可以容纳不超过约300k并且是5.25英寸正方形,约2.5毫米厚,有些是双面的,因此可以容纳600k。还有一系列不同类型的软件和磁盘编码器芯片可以读/写不同的密度,但底线是空间非常非常有限。

再加上大多数BIOS当时只有大约16k到32k的大小,你必须尽可能地使机器启动和运行,并且在IBM适合的情况下基于ROM的基本解释器也在那里,没有外部操作系统,计算机仍可用于一般计算任务。

所有这些限制意味着越小越好。

不要使用大型单片加载器的扁平磁盘大小,最好“格式化”这些软盘,以便大部分空间是用户空间,并允许最终用户有效地自定义引导软件(EG :删除他们没有使用的操作系统部分)所以启动所有内容的初始加载程序仅限于磁盘的前512个字节。

另一个主要原因是当时可用的不同磁盘系统的真实性(请记住这是行业标准化之前的方式)所以无论多么奇怪,都能确保在磁盘的开头放置正确的东西。运行的操作系统将磁盘的其余部分设置为自己使用,因为没有涉及搜索,您不必查看格式标记并尝试理解一些奇怪的目录格式。您只需将驱动器头移动到其静止位置,然后读取512字节,就像那样简单。

一旦凤凰制作了IBM Bios的第一个克隆,并且当公司试图起诉他们窃取知识产权时,他们在法庭上赢得了胜利,洪水门打开了。几乎在一夜之间,每个人都开始制造BIOS系统,而我们所知道的PC市场在各种不同类型的接口中爆炸成一堆标准。

很快,供应商锁定就开始了,因此IEE / ANSI / ISO和其他标准机构开始制定法律,规定每个人如何与其他人保持兼容,这些标准已经举行在今天的现代计算时代也是如此。

当我们在现场获得大量硬盘驱动器和可启动CD,USB以及其他各种各样的东西时,这些标准(其中512b引导扇区是其中的一部分)已经深深扎根于更宏伟的计划中,改变它们是不可能的。

只有少数勇敢的公司敢于冒险进入该领域并取得了有限的成功,例如Sun Micro Systems是其中一位勇敢的人。如果你看一下Sun Raq3(你可以在Ebay上接下来,它们几乎没有),他们有一个启动加载器,模仿基于PC盘的加载器的功能,但它从rom开始直到第二阶段,在那里它立即在标准的基于Linux的磁盘布局上查找/ boot分区,因此即使这些机器中的磁盘仍然具有标准的512字节引导块,它实际上也没有使用。

希望能为您提供您想要的洞察力,因为我经历了很多这样的事情,我记得很多,包括那些没有使用512字节启动块的机器。