用于Linux的开放BIOS开源项目介绍

超级自酿啤酒

超级自酿啤酒

2016-01-29 17:40

用于Linux的开放BIOS开源项目介绍,用于 Linux 的开放 BIOS开源项目介绍

  在很多系统上,引导时间中有很大一部分都花费在为 MS-DOS 提供传统支持上面了。有很多项目,包括 LinuxBIOS 和 Open Firmware,都试图使用最新的代码来替换原有的 BIOS 系统,它们只实现加载并运行 Linux 内核所必需的功能。本文对这个领域的内容简要进行了介绍。

  响铃!

  尽管在 PC 硬件加电时喇叭响一下看起来似乎是件非常自然的事情,但实际上却有一些代码来驱动喇叭发声。这段代码就是引导固件。在大部分 PC 上,这都称为 BIOS(这个单词是 basic input/output system(基本输入/输出系统)的缩写)。BIOS 提供了底层的硬件支持,早期的 x86 操作系统就是使用它们来访问磁盘、显示器和其他东西的。

  BIOS 要做的第一件事情是执行各种加电测试:确定(还可能要测试)可用内存、确定时钟速度等。如果测试成功,机器的喇叭就会响一声。这个过程就称为加电测试(power-on self test)或 POST.计算机对于自己是相当幽默的,这个术语通常会被当作动词来使用:“这台机器根本通不过 POST 测试,因此我们应该更换内存”。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/linux/)

  通常的诊断包括响铃代码(不同供应商提供的代码都不相同),或者可以写入到某个特定裸地址的代码。有些后插的卡可以简单地访问这些代码;标准的解决方案是诊断代码都写到 80 端口中。有些制造商会销售一种卡,它可以以 16 进制的形式显示最新写入到 80 端口的内容。如果我们要进行严格调试,可能就会希望有一个这种卡,或者希望使用一个更好的发明,例如 PC Weasel,它可以记录最新的(256)POST 代码以供大家阅读。(有关 PC Weasel 的更多信息请参看下面的 参考资料 一节的内容。)当然,这些代码的确切含义对于各个 BIOS 来说不尽相同,只有部分供应商提供了文档。幸运的是,开源供应商提供了很好的文档。

  BIOS 还为我们实现了哪些功能?

  诸如 MS-DOS 之类的操作系统可以加载其他设备驱动程序,例如 CD-ROM 驱动器,但是需要所有硬件驱动程序在启动时就已经加载上来了。为这些驱动程序提供的标准接口是由 BIOS 来处理的,正是由于这个原因,BIOS 需要对设备进行探测、识别,还可能要进行初始化。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/linux/)

  同样,BIOS 要负责对内存进行初始化。并非所有的操作系统都需要对内存进行初始化,但是早期的 DOS 系统通常都需要进行这种操作,即使在今天大部分 BIOS 为了兼容性的目的也需要进行初始化。这个过程自己可能需要很长时间才能完成,很多现代系统允许彻底或部分地将其禁用。同时,BIOS 还会试图确定系统中有多少内存可用。其他的引导时操作还可能包括对处理器缓存的初始化和启用,配置双 CPU,构建有关处理器的信息表,构建连接到系统中的 PCI 设备,甚至运行这些设备提供的引导 ROM,这可以加载其他驱动程序。

  这里有很多工作需要做。实际上这些工作是如此繁杂,我的某些系统要花一分钟甚至更长时间才能完成 POST 和后续的驱动程序初始化过程。BIOS 可以执行各种硬件扫描,从而寻找可引导的设备,在某些系统上,BIOS 甚至可以执行通过以太网进行的网络引导。我的一个系统就会花大约 5 秒钟的时间来初始化网络引导参数,即使在禁用了网络引导功能的情况下也是如此。这可真令人懊恼!

  最后一点(但不是最不重要的一点),BIOS 还需要做相当多的初始化工作。不管您要引导什么系统,这些工作中的一部分(但并非全部)都会非常有用。为设备分配中断请求(IRQ)的确是一个非常有用的服务,因为它允许 OS 只获取一个服务列表并开始运行,而不用对它们进行编程。很多设备都有配置寄存器,BIOS 可以基于系统可写内存中的设置向其中写入合理或正确的值。(通常来说,这种内存都称为 CMOS,尽管它们并非严格要求使用这种技术来实现。)

  在 BIOS 完成上面这些功能之后又会发生什么呢?它会在某个地方(通常是在磁盘上)查找一段代码,并运行它,这通常会加载一个操作系统。如果操作系统是 DOS,或其他类似的东西,那么这种设置工作就意味着我们可以很快就有自己的命令提示符了。

[1] [2] [3] [4]   

展开更多 50%)
分享

猜你喜欢

用于Linux的开放BIOS开源项目介绍

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
用于Linux的开放BIOS开源项目介绍

Java开源项目Hibernate

Java JAVA基础
Java开源项目Hibernate

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java开源项目Hibernate深度探险

编程语言 网络编程
Java开源项目Hibernate深度探险

BIOS是什么?最全BIOS基础介绍教程

电脑入门
BIOS是什么?最全BIOS基础介绍教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

利用开源项目Hibernate开发Blog系统

编程语言 网络编程
利用开源项目Hibernate开发Blog系统

Delphi的RSS开源项目正式启动了

编程语言 网络编程
Delphi的RSS开源项目正式启动了

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用EasyMailObject组件处理Exchange邮件源代码(2)

用EasyMailObject组件处理Exchange邮件源代码(2)

Windows XP“写入缓存失败”的八个常见原因

Windows XP“写入缓存失败”的八个常见原因
下拉加载更多内容 ↓