BIOS

从1980年代开始,一对Dell 310计算机的AMD BIOS芯片。底部显示了EPROM芯片的不同窗口。
年开始 1981
组织 最初是IBM作为专有软件,后来作为事实上的标准。 1996年, BIOS引导规范CompaqPhoenix TechnologiesIntel撰写。
接班人 UEFI

计算中, BIOS-oss,-⁠Hohss ;基本输入/输出系统,也称为系统BIOSROM BIOSBIOS ROMPC BIOS )是固件,用于为操作系统和程序提供运行时服务,并在启动过程(Power-on-On Startup)期间执行硬件初始化。 BIOS固件预装在IBM PCIBM PC兼容的系统板上,并存在于一些基于UEFI的系统中,以保持与不支持UEFI本机操作的操作系统的兼容性。该名称源自1975年CP/M操作系统中使用的基本输入/输出系统。BIOS最初专有IBM PC的BIOS已由某些公司(例如Phoenix Technologies )进行了逆转,希望创建兼容系统。原始系统的界面事实上的标准

现代PC中的BIOS初始化并测试系统硬件组件(自动测试),并从质量存储设备中加载启动装载机,然后将内核初始化。在DOS时代,BIOS提供了BIOS中断的电话,用于键盘,显示,存储和其他输入/输出(I/O)设备,该设备将接口标准化为应用程序程序和操作系统。最新的操作系统在启动后不使用BIOS中断呼叫。

大多数BIOS实施方法是专门设计用于与特定计算机或主板模型一起使用的,通过与各种设备(尤其是系统芯片组)接口。最初,BIOS固件存储在PC主板上的ROM芯片中。在后来的计算机系统中,BIOS内容存储在闪存上,因此可以在不从主板上删除芯片的情况下重写它。这允许对BIOS固件的简单,最终用户更新,因此可以添加新功能或可以修复错误,但它还可以使计算机被BIOS Rootkits感染。此外,失败的BIOS升级可以砖砌主板。 Microsoft Windows的最后一个版本是正式支持在PC上运行的使用旧版本BIOS固件,因为Windows 11需要一个符合UEFI的系统。

统一的可扩展固件接口(UEFI)是传统PC BIOS的继任者,旨在解决其技术限制。

历史

/* C P / M   B A S I C   I / O    S Y S T E M    (B I O S)
                    COPYRIGHT (C) GARY A. KILDALL
                             JUNE, 1975 */
[…]
/*  B A S I C   D I S K    O P E R A T I N G   S Y S T E M  (B D O S)
                    COPYRIGHT (C) GARY A. KILDALL
                            JUNE, 1975 */
- lawrence livermore Laboratories (LLL)的PL/M源代码中的BDOS.PLM文件标头的摘录

BIOS一词(基本输入/输出系统)是由Gary Kildall创建的,并于1975年首次出现在CP/M操作系统中,描述了直接与硬件接口的启动时间中加载的CP/M的特定于机器特定部分。 (CP/M机器通常在其ROM中只有一个简单的引导加载器。)

MS-DOSPC DOSDR-DOS的版本包含一个称为“ io.sys ”,“ ibmbio.com ”,“ ibmbio.sys”或“ drbios.sys”的文件;该文件被称为“ DOS BIOS”(也称为“ DOS I/O系统”),并包含操作系统的低级硬件特定部分。它与驻留在ROM中的基本硬件特定但无关的“系统BIOS”一起,代表了“ CP/M BIOS ”的类似物。

IBM PC最初专有的BIOS已由一些公司(例如Phoenix Technologies )进行了反向设计,希望创建兼容系统。

随着PS/2机器的引入,IBM将系统BIOS分为实体和受保护的模式部分。房地纪部分旨在与现有操作系统(例如DOS)提供向后兼容性,因此被命名为“ CBIO”(用于“兼容性BIOS”),而“ Abios”(对于“高级BIOS”)提供了新的接口。适用于多任务操作系统,例如OS/2

使用者介面

原始IBM PCXT的BIOS没有交互式用户界面。错误代码或消息显示在屏幕上,或者生成一系列声音,以发出电源自动测试(POST)未继续成功初始化视频显示适配器时的信号错误。 IBM PC和XT上的选项是由主板上的开关和跳线设置的,并在扩展卡上设置。从1990年代中期开始,BIOS ROM包括“ BIOS配置实用程序” (BCU)或“ BIOS设置实用程序”,它是由特定的密钥序列访问的。该程序允许用户通过通过键盘控制的交互式菜单系统设置以前使用DIP开关的类型设置系统配置选项。在此期间,IBM兼容的PC ‍(包括在‍处的IBM )在电池支持的RAM中使用配置设置,并在ROM中使用了一个可启动的配置程序,而不是在ROM中设置该内存中包含的配置选项。软盘提供了计算机,如果丢失了,则无法更改系统设置。通常,在具有EISA总线的计算机上使用了同样的应用,为此,配置程序称为EISA配置实用程序(ECU)。

现代的Wintel兼容计算机提供了一种基本上从1990年代后期的ROM住宅BIOS设置实用程序中进行的设置常规。用户可以使用键盘和视频显示来配置硬件选项。现代的Wintel机器可以将BIOS配置设置存储在Flash ROM中,也许是具有BIOS本身的闪光灯。

手术

系统启动

早期英特尔处理器从物理地址000FFFF0H开始。具有较晚处理器的系统提供逻辑,以开始从系统ROM运行BIOS。

如果系统刚刚供电或按下重置按钮(“冷启动”),则运行完整的自动启动自我测试(POST)。如果按下CTRL+ALT+DELETE(“温暖启动”),则在BIOS测试的非挥发性BIOS内存(“ CMOS ”)中存储的特殊标志值允许绕过冗长的帖子和内存检测。

该帖子标识,测试和初始化系统设备,例如CPU芯片组RAM ,主板,视频卡键盘键盘鼠标硬盘驱动器,光盘驱动器,光盘驱动器和其他硬件,包括集成的外围设备

早期的IBM PC在帖子中有一个例程,可以通过键盘端口将程序下载到RAM并运行它。此功能旨在用于工厂测试或诊断目的。

引导过程

引导过程

在完成选项扫描并完成了所有带有有效校验和的ROM模块后,或在BIOS版本中邮寄后立即调用了未扫描选项ROM的所有检测到的ROM模块,BIOS调用INT 19H来开始启动处理。启动后,加载的程序也可以致电INT 19H重新启动系统,但是它们必须谨慎地禁用中断和其他异步硬件过程,这些过程可能会干扰BIOS重新启动过程,否则系统可能会在重新启动时悬挂或崩溃。

当调用INT 19H时,BIOS试图在“引导设备”(例如硬盘软盘CDDVD)上找到引导加载器软件。它加载并执行它找到的第一个引导软件,从而使其控制PC。

BIOS使用在非挥发性BIOS内存CMOS )或最早的PC中设置的启动设备,或DIP开关。 BIOS检查每个设备,以查看是否可以通过加载第一个扇区(引导部门)来启动。如果无法读取该扇区,则BIOS将继续前往下一个设备。如果成功读取该扇区,则在接受引导扇区并考虑可启动设备之前,在该扇区的最后两个字节(为512个字节长)中,在该扇区的最后两个字节(为512个字节长)中还会检查引导扇区签名0x55 0xaa。

当找到可引导设备时,BIOS将控制权转移到已加载的扇区。 BIOS除了检查最后两个字节中的引导扇区签名外,没有解释引导部门的内容。启动扇区本身或通过引导过程加载的其他程序中的启动程序来完成诸如分区表和BIOS参数块之类的数据结构的解释。

一个非磁盘设备(例如网络适配器)尝试通过其选项ROM定义的过程或集成到主板BIOS ROM中的等效物来启动。因此,选项ROM也可能影响或取代主板BIOS ROM定义的启动过程。

使用El Torito光学媒体启动标准,光学驱动器实际上是为了引导目的,将3.5英寸高密度的软盘模拟。就像它在软盘上或硬盘上一样。此外,介质的复杂性使得很难在一个扇区中编写有用的启动程序。可引导的虚拟虚拟磁盘可以包含可提供对本机中光学介质访问的软件格式。

启动优先级

用户可以选择BIOS实现的引导优先级。例如,大多数计算机都具有可引导的硬盘,但是有时有一个可移动的媒体驱动器具有更高的启动优先级,因此用户可以导致启动可移动的磁盘。

在大多数现代化的BIOSE中,启动优先顺序可以由用户配置。在较旧的bioses中,有限的启动优先级选项可供选择;在最早的BIOSE中,实施了固定的优先级方案,首先是软盘驱动器,固定磁盘(即硬盘)第二,通常不支持其他启动设备,但要通过安装的选项ROM修改这些规则。早期PC中的BIOS通常也只能从第一个软盘驱动器或第一个硬盘驱动器启动,即使安装了两个驱动器。

启动失败

在原始的IBM PC和XT上,如果找不到可启动磁盘, ROM BASIS是通过致电INT 18H启动的。由于很少有ROM中使用的程序,因此克隆PC制造商将其遗漏了。然后,一台未能从磁盘启动的计算机将显示“无基本基本”,并停止(响应INT 18H)。

后来的计算机将显示一条消息,例如“找不到启动磁盘”;有些会提示插入磁盘,并按下键以重试启动过程。当启动过程失败时,现代BIOS可能没有显示任何内容,也可以自动输入BIOS配置实用程序。

引导环境

引导程序的环境非常简单:CPU处于实际模式,并且除SS,SP,CS和DL外,通用用途和细分寄存器是未定义的。 CS:IP总是指向物理地址0x07C00。实际上CS和IP实际上没有很好的定义。一些Bioses使用CS:IP0x0000:0x7C00而其他人可能会使用0x07C0:0x0000。由于启动程序总是在此固定地址加载,因此无需重新定位启动程序。 DL可以包含启动设备的驱动器号,与INT 13H一起使用。 SS:SP指向有效的堆栈,大概足以支持硬件中断,但否则SS和SP是未定义的。 (必须已经设置堆栈才能为中断服务,并且必须启用中断,以使系统计时器键入中断,BIOS始终始终使用它来维持日期计数及其初始化的时间在帖子期间,要保持活动状态并使键盘工作。即使未调用BIOS键盘服务;即使接收到键键,也将接收到键盘,并将其放置在BIOS维护的15个字符的类型Ahead缓冲液中。)启动程序必须设置擡起自己的堆栈,因为BIOS设置的堆栈大小尚不清楚,并且其位置同样是变量。尽管启动程序可以通过检查SS:SP来调查默认堆栈,但无条件地设置新堆栈是更容易且较短的。

在启动时,所有BIOS服务都可用,下面的内存地址0x00400包含中断矢量表。 BIOS Post已根据需要将系统计时器,中断控制器,DMA控制器和其他主板/芯片组硬件初始化,以将所有BIOS服务带到现成状态。在常规内存和扩展内存中的所有系统DRAM的DRAM刷新,但不一定是扩展的内存,已经设置并正在运行。与BIOS中断相对应的中断向量已设置为BIOS中的适当输入点,BIOS初始化的设备的硬件中断向量已设置为指向BIOS提供的ISR,包括其他一些中断,包括其他中断该BIOS生成用于挂钩的程序,已设置为立即返回的默认虚拟ISR。 BIOS在地址上维护一个保留的系统RAM块0x00400–0x004FF在帖子期间初始初始参数。所有内存在地址0x00500可以由启动程​​序使用;它甚至可以覆盖自己。

扩展(选项rom)

外围卡(例如硬盘驱动器主机总线适配器视频卡)具有自己的固件,BIOS扩展选项ROM可能是扩展卡固件的一部分,可为BIOS提供其他功能。选项中的代码ROM在BIOS启动从质量存储的操作系统之前运行。这些ROM通常测试和初始化硬件,添加新的BIOS服务或用自己的服务替换现有的BIOS服务。例如, SCSI控制器通常具有BIOS扩展ROM,该ROM为通过该控制器连接的硬盘驱动器增加了支持。扩展ROM原则上可以包含操作系统,或者它可以实现完全不同的引导过程,例如网络引导。可以通过删除或插入包含BIOS扩展ROM的适配器卡(或ROM芯片)来完全更改IBM兼容计算机系统的操作。

主板BIOS通常包含用于初始化和自举的集成显示和集成存储的代码。此外, SCSIRAID网络接口卡视频卡等插件适配器卡通常包括其自己的BIOS(例如视频BIOS ),补充或替换给定组件的系统BIOS代码。甚至内置在主板中的设备也可以以这种方式行事。他们的选择ROM可以成为主板BIOS的一部分。

如果主板BIOS不支持该卡,并且需要在加载操作系统之前通过BIOS服务访问该卡(通常这意味着这在启动过程中需要) )。 ROM在某些早期PC系统(特别是包括IBM PCJR)上的另一个优势是,ROM比主系统RAM快。 (在现代系统上,情况非常相反,并且BIOS ROM代码通常被复制(“ Shadowed”)为RAM,因此它将运行得更快。)

引导过程

如果扩展ROM希望以合作的方式更改系统启动(例如来自网络设备或SCSI适配器)的方式,则可以使用BIOS启动规范(BBS) API来注册其这样做的能力。一旦扩展ROM使用BBS API注册,用户就可以在BIOS用户界面中的可用引导选项中进行选择。这就是为什么大多数符合BBS的PC BIOS实现将不允许用户输入BIOS的用户界面,直到扩展ROM完成并在BBS API上进行了注册。

同样,如果扩展ROM希望改变系统单方面启动的方式,则它可以简单地将INT 19H或其他通常从中断19H中调用的中断(例如INT 13H)(例如BIOS磁盘服务)拦截BIOS启动过程。然后,它可以用自己的一个替换BIOS启动过程,也可以通过防止BIOS检测到某些设备为启动或两者,仅通过将其自己的引导操作插入其中或两者来修改启动序列。在发布BIOS启动规范之前,这是扩展ROM实现启动功能的唯一途径,用于不支持主板的本机BIOS启动的设备。

初始化

主板BIOS完成其帖子后,大多数BIOS版本都搜索选项ROM模块,也称为BIOS Extension ROM,并执行它们。主板BIOS在“上部内存区域”的一部分(x86房地产模式地址空间的一部分和上方地址0xA0000)中扫描扩展ROM,并按顺序运行每个ROM。要发现内存映射选项ROM,BIOS实现从0x0C00000x0F0000在2 kb (2,048个字节)边界上,寻找两个字节rom签名:0x55,其次是0xaa。在有效的扩展ROM中,此签名之后是单个字节,指示512字节的数量阻止了ROM在真实内存中占据的扩展,而下一个字节是Option ROM的入口点(也称为“输入偏移”) 。如果ROM具有有效的校验和,则BIOS将控件转移到条目地址,在正常的BIOS扩展中,ROM应该是扩展程序初始化例程的开始。

在这一点上,扩展ROM代码接管,通常测试和初始化它控制的硬件并注册中断向量以供启动后应用程序使用。它可以使用BIOS服务(包括先前初始化的选项ROM提供的服务)来提供用户配置接口,显示诊断信息或执行所需的其他任何操作。 ROM的选项可能不会返回BIOS,从而使BIOS的引导序列完全抢占。

选项ROM在完成其初始化过程后通常应返回BIOS。一旦(如果)返回一个选项,则BIOS继续搜索更多的选项ROM,呼叫每个选项,直到扫描了内存空间中的整个选项ROM区域为止。

身体位置

戴尔310中的BIOS芯片通过更新筹码来更新

选项ROM通常位于适配器卡上。但是,原始的PC,也许也是PC XT,在主板上具有备用ROM插座(以IBM的术语为“系统板”)可以插入选项ROM,并且包含基本解释器的四个ROM可以也可以删除并替换为可以作为选项ROM的自定义ROM。 IBM PCJR在PC中是独一无二的,在正面有两个ROM墨盒插槽。这些插槽中的墨盒映射到用于选件ROM的上部内存区域的同一区域,并且墨盒可以包含BIOS识别的选件ROM模块。墨盒还可以包含其他类型的ROM模块,例如基本程序,这些模块的处理方式不同。一个PCJR弹药筒可以包含几个不同类型的ROM模块,可能将一个ROM芯片存储在一起。

操作系统服务

BIOS ROM是针对特定制造商的硬件定制的,可以以标准化的方式(包括操作系统)以标准化的方式提供低级服务(例如,读取击键或编写数据扇区为diskette)。例如,IBM PC可能具有单色或颜色显示适配器(使用不同的显示内存地址和硬件),但是可以调用一个单个标准的BIOS系统调用来在屏幕上指定的位置显示一个字符文本模式图形模式

BIOS为操作外围设备提供了一个基本输入/输出功能的小(例如键盘,基本文本和图形显示功能等)。使用MS-DOS时,可以通过执行INT 13H中断指令访问磁盘函数,或执行许多其他已记录的BIOS中断呼叫来访问访问视频,从而可以通过应用程序程序(或MS-DOS)访问BIOS服务。显示键盘,盒式和其他设备功能。

旨在取代此基本固件功能的操作系统和执行软件为应用程序软件提供了替换软件接口。申请也可以为自己提供这些服务。即使在1980年代,当程序员观察到将BIOS视频服务用于图形显示非常慢时,这甚至始于1980年代。为了提高屏幕输出的速度,许多程序绕过了BIOS并直接对视频显示硬件进行编程。其他图形程序员,尤其是非典型中但不仅仅是在非镜下,观察到PC显示适配器的技术功能不受IBM BIOS支持的支持,并且在不绕过它的情况下无法利用它。由于兼容的BIOS以英特尔实际模式运行,因此在286上以保护模式运行的操作系统需要与受保护模式操作兼容的硬件设备驱动程序以替换BIOS服务。

在运行现代操作系统(例如WindowsLinux )的现代PC中,BIOS中断呼叫仅在操作系统的启动和初始加载过程中使用。在显示操作系统的第一个图形屏幕之前,通常通过BIOS处理输入和输出。通过BIOS显示启动菜单,例如Windows的文本菜单,该菜单允许用户选择要启动的操作系统,启动到安全模式或使用最后一个已知的良好配置,并通过BIOS显示,并通过BIOS接收键盘输入。

许多现代PC仍然可以启动和运行旧的操作系统,例如MS-DOS或DR-DOS,这些操作系统严重依赖BIOS用于控制台和磁盘I/O,前提是该系统具有BIOS或具有CSM功能的UEFEFI韧体.

处理器微码更新

P6微体系结构以来,英特尔处理器具有可重编程的微码。自K7微体系结构以来, AMD处理器具有可重编程的微码。 BIOS包含贴片的处理器微型模块,该处理器在初始处理器微码中固定误差。将Microcode加载到处理器的SRAM中,因此重新编程不持久,因此每次系统供电时,都会执行Microcode更新的加载。如果没有可重编程的微码,则需要昂贵的处理器交换;例如,奔腾FDIV错误成为Intel的昂贵惨败,因为它需要召回产品,因为无法重新编程原始的奔腾处理器的有缺陷的微码。操作系统也可以更新主处理器微码。

鉴别

一些BIOSE包含一个软件许可描述表(SLIC),这是原始设备制造商(OEM)放置在BIOS内部的数字签名,例如Dell 。将SLIC插入ACPI数据表中,不包含活动代码。

分发Microsoft Windows和Microsoft Application软件的OEM版本的计算机制造商可以使用SLIC来验证许可到OEM Windows安装磁盘和包含Windows软件的系统恢复光盘。具有SLIC的系统可以用OEM产品密钥对其进行预归作,并且它们可以验证BIOS中针对SLIC的XML格式OEM证书,以作为自动激活的一种手段(请参阅System锁定的预安装,SLP) 。如果用户执行新的Windows安装,则他们将需要拥有OEM密钥(SLP或COA)和SLIC的数字证书,以绕过激活。如果用户使用OEM提供的预注定图像执行还原,则可以实现这一点。电源用户可以从OEM图像复制必要的证书文件,解码SLP产品密钥,然后手动执行SLP激活。

超频

某些BIOS实施允许超频,其中CPU时钟速率比其制造商评级高于其保证能力。但是,超频可能严重损害了冷却计算机不足的系统可靠性,并且通常缩短了组件寿命。当不正确执行时,超频也可能导致组件过热,以至于机械地破坏了自己。

现代用途

一些较旧的操作系统(例如MS-DOS)依靠BIOS来执行PC中的大多数输入/输出任务。

直接调用真实模式BIOS服务对受保护模式(和长模式)操作系统的效率低下。现代多任务操作系统最初加载后, BIOS中断呼叫不会使用。

在1990年代,BIOS为Microsoft Windows类似Unix的操作系统(例如高级电源管理(APM),插头和播放BIOS桌面管理接口(DMI), VESA BIOSESTIONS (VBE),E820和E820和E820和E820多处理器规范(MPS)。从2000年开始,大多数BIOSE为现代操作系统提供了ACPISMBIOVBEE820接口。

操作系统加载后,系统管理模式代码仍在SMRAM中运行。自2010年以来,BIOS技术正在向UEFI进行过渡过程。

配置

设置实用程序

从历史上看,IBM PC和XT中的BIOS没有内置的用户界面。早期PC(XT-Class)中的BIOS版本不可配置。相反,用户通过主板上的DIP开关设置了选项。后来的计算机,包括所有具有80286 CPU的IBM兼容性,具有持有BIOS设置的电池支持的非挥发性BIOS内存(CMOS RAM芯片)。这些设置,例如视频适配类型,内存大小和硬盘参数,只能通过从磁盘中运行配置程序来配置,而不是在ROM中内置。在IBM中插入了一个特殊的“参考软盘”,以配置设置,例如内存大小。

早期BIOS版本没有密码或引导设备选择选项。 BIOS被硬编码从第一个软盘驱动器启动,或者,如果失败了,则是第一个硬盘。早期的上课机器中的访问控制是通过物理钥匙锁开关(如果可以打开计算机情况,这并不难以击败)。任何可以打开计算机的人都可以启动它。

后来,386级计算机开始将BIOS设置实用程序与BIOS代码一起集成在一起。这些计算机通常会启动到BIOS设置实用程序,如果按下某个键或密钥组合,则执行BIOS POST和启动过程。

标准PC上的BIOS设置实用程序

现代的BIOS设置实用程序具有文本用户界面(TUI)或图形用户界面(GUI),当PC启动时按键盘上的某个键访问了某个键。通常,钥匙在早期启动期间的短时间内宣传,例如“按DEL进入Enter Setup”。实际键取决于特定的硬件。 BIOS设置实用程序中存在的功能通常包括:

  • 配置,启用和禁用硬件组件
  • 设置系统时间
  • 设置引导订单
  • 设置各种密码,例如用于确保访问BIOS用户界面的密码,并防止恶意用户从未经授权的便携式存储设备中启动系统,或用于启动系统的密码

硬件监视

现代的BIOS设置屏幕通常具有PC健康状态硬件监视选项卡,该选项卡将其直接与主板的硬件监视器芯片接口。这使得可以监视CPU和底盘温度,电源单元提供的电压,并监视和控制连接到主板的风扇的速度

启动系统后,硬件监视和计算机风扇控制通常直接由硬件监视器本身直接完成,该芯片本身可以是单独的芯片,通过I 2 CSmbus连接,或作为超级I/O解决方案的一部分来,通过行业标准体系结构(ISA)或低针计数(LPC)连接。一些操作系统,例如带有Envsys和带有sysctl hw.sensorsOpenBSD的NetBSD ,具有与硬件显示器的集成接口。

但是,在某些情况下,BIOS还提供了有关通过ACPI进行硬件监视的基本信息,在这种情况下,操作系统可能会使用ACPI执行硬件监视。

重新编程

BIOS替换套件从1980年代后期开始使用310戴尔。其中包括两个芯片,一个用于芯片的塑料支架和一个IC提取器

在现代PC中,BIOS存储在可重写的EEPROMNON闪存中,从而可以更换和修改内容。这些内容的重写有时被称为闪烁。它可以通过特殊程序(通常由系统的制造商提供)或在邮政上提供的特殊程序来完成,并在硬盘驱动器或USB闪存驱动器中使用BIOS图像。包含此类内容的文件有时被称为“ BIOS图像”。可以重新升级BIOS,以升级到较新的版本以修复错误或提供改进的性能或支持较新的硬件。

硬体

American Megatrends BIOS 686.该BIOS芯片位于插座中的PLCC包装中。

原始的IBM PC BIOS(和Cassette Basic)存储在主板上的插座上的掩模读取内存(ROM)芯片上。用户可以更换ROM,但不会更改。为了允许更新,许多兼容的计算机都使用了可重新编程的BIOS内存设备,例如EPROMEEPROM和后来的闪存(通常是闪光灯)设备。根据BIOS制造商微型固件的总裁Robert Braver的说法, Flash Bios芯片在1995年左右变得很普遍,因为与标准的紫外线可擦除的Prom(EPROM)芯片相比,可擦除的舞会( EEPROM )芯片更便宜,更易于编程。闪存芯片是编程(并重新编程)的,而EPROM芯片需要从主板上删除以进行重新编程。升级BIOS版本以利用较新版本的硬件,并在BIOSE先前修订中纠正错误。

从AT的IBM开始,PC支持通过BIOS设置的硬件时钟。它有一个世纪的时间,可以在2000年发生时手动改变世纪。大多数BIOS修订创建于1995年,几乎所有BIOS修订在1997年都支持了2000年,因为当时时钟在1999年12月31日午夜时期时自动设置了一个世纪的位。

第一个闪光芯片连接到ISA巴士上。从1998年开始, BIOS Flash沿着新的标准实现称为“固件中心”(FWH)。 2005年,BIOS闪存移至SPI总线。

随着新功能已添加到代码中,BIOS的大小及其可能存储的ROM,EEPROM或其他媒体的能力随着时间的推移而增加。 BIOS版本现在存在最多32兆字节的尺寸。相反,原始的IBM PC BIOS包含在8 kb的面膜中。一些现代的主板在船上包括更大的NAND闪存IC,这些NAND可以存储整个紧凑的操作系统,例如某些Linux发行版。例如,一些华硕笔记本包含嵌入其NAND闪存IC的Splashtop OS 。但是,将操作系统与BIOS一起在PC的ROM中加入的想法并不新鲜。在1980年代,微软为MS-DOS提供了ROM选项,并包含在某些PC克隆的ROM中,例如Tandy 1000 HX

在IBM PC上发现了另一种类型的固件芯片。在AT中,键盘接口由具有自己可编程内存的微控制器控制。在IBM AT上,这是一个40针的插座设备,而某些制造商使用了类似于EPROM的EPROM版本。该控制器还分配了A20 GATE功能,以管理以上一个兆字节范围上方的内存;有时,对于利用可以使用上层内存的软件,需要升级此“键盘BIOS”。

BIOS可能包含组件,例如内存参考代码(MRC),该组件负责内存初始化(例如SPD存储时间初始化)。

现代BIOS包括英特尔管理引擎AMD平台安全处理器固件。

供应商和产品

比较不同的BIOS实施
公司 奖励 阿米比奥斯 insyde Seabios
执照 所有权 所有权 所有权 LGPL V3
维护 /开发 终止 终止 终止 是的
32位PCI BIOS呼叫 是的 是的 是的 是的
Ahci 是的 是的 是的 是的
APM 是的 是的 (1.2) (1.2)
BBS 是的 是的 是的 是的
引导菜单 是的 是的 是的 是的
压缩 是的lha 是的(lha) (rle) (lzma)
CMOS 是的 是的 是的 是的
埃德 是的 是的 是的 是的
ESCD 是的 是的 ?
来自ROM的闪光 ? 是的 ?
语言 集会 集会 集会 C
lba (48) (48) 是的 (48)
多处理器规范 是的 是的 是的 是的
选项ROM 是的 是的 是的 是的
密码 是的 是的 是的
PMM ? 是的 ? 是的
设置屏幕 是的 是的 是的
Smbios 是的 是的 是的 是的
飞溅屏幕 (EPA) PCX 是的 (BMP,JPG)
TPM 未知 未知 未知 一些
USB引导 是的 是的 是的 是的
USB集线器 ? ? ? 是的
USB键盘 是的 是的 是的 是的
USB鼠标 是的 是的 是的 是的

IBM在每种机器类型的IBM PC技术参考手册的附录中发布了其原始PC,PC XT,PC和其他现代PC模型的BIOS的整个列表。 BIOS列表出版的效果是,任何人都可以准确地看到确定的BIOS的工作以及它的作用。

Compaq便携式386 BIOS

1984年5月, Phoenix Software Associates发布了其第一个ROM-BIO,这使OEM能够建立完全完全兼容的克隆,而无需逆转工程IBM PC BIOS本身,因为Compaq为便携式提供了,有助于推动PC的增长 - DOS的非IBM版本的兼容行业和销售。 1986年发行了第一批美国大型BIOS(AMI)BIOS。

嫁接到BIOS的新标准通常没有完整的公共文档或任何BIOS列表。结果,学习有关BIOS的许多非IBM添加的私密细节并不那么容易,而不是关于核心BIOS服务。

许多PC主板供应商从商业第三方(被称为“独立BIOS供应商”或IBV)的BIOS“核心”和工具包许可。然后,主板制造商定制了此BIOS,以适合自己的硬件。因此,通常直接从主板制造商那里获得更新的BIOSE。 IBV少校包括美国大趋势(AMI), INSYDE软件凤凰技术和Byosoft。微型研究和奖励软件是由Phoenix Technologies于1998年收购的;凤凰城后来逐步淘汰了奖励品牌名称。凤凰城在2007年也收购了一般软件,该软件以英特尔处理器的形式出售了BIOS的嵌入式系统。

开源BIOS固件

开源社区增加了他们通过开源的替代专有biose及其未来化身的替代者的努力。开放式固件是为启动固件制定开源标准的早期尝试。最初,IEEE在其IEEE 1275-1994标准中认可,但在2005年被撤回。后来的示例包括LibrebootCorebootOpenBios / OpenBios / Open Open Conterware Projects。 AMD为某些芯片组提供了产品规格, Google正在赞助该项目。主板制造商泰恩(Tyan)凭借其主板系列提供了标准BIOS旁边的Coreboot

安全

American Megatrends BIOS显示“ Intel CPU UCODE加载误差”,尝试将Microcode补丁上传到CPU失败后
千兆字节Dualbios PLCC 32
独立的BIOS芯片

EEPROM闪存芯片是有利的,因为用户可以轻松更新它们。习惯性硬件制造商发布BIOS更新以升级其产品,提高兼容性并删除错误。但是,这种优势的风险是,执行不当或中止的BIOS更新可能会使计算机或设备无法使用。为了避免这些情况,最近的Bioses使用“引导块”; BIOS的一部分首先运行,必须单独更新。该代码在将控制转移到其之前,请先验证BIOS的其余部分是否完整(使用Hash校验和其他方法)。如果启动块检测到主BIOS中的任何损坏,它通常会警告用户必须通过从可移动媒体(软盘,CD或USB闪存驱动器)引导来启动恢复过程,以便用户可以尝试再次闪烁BIOS。一些主板有一个备用BIOS(有时称为DualBios Boards),可以从BIOS腐败中恢复过来。

至少有五种已知病毒攻击BIOS。其中两个是出于演示目的。在野外发现的第一个是Mebromi ,以中国用户为目标。

第一个BIOS病毒是BIOS脑膜炎,它不是擦除其感染它们的Bios芯片。与CIH这样的病毒相比,BIOS脑膜炎相对无害。

第二种BIOS病毒是CIH ,也称为“切尔诺贝利病毒”,它能够在兼容的芯片组上擦除闪存的ROM BIOS含量。 CIH出现在1998年中,并于1999年4月活跃。通常,感染的计算机不再启动,人们不得不从主板上删除Flash ROM IC并重新编程。 CIH针对当时宽阔的英特尔I430TX主板芯片组,并利用了当时的Windows 9X操作系统也可以直接访问所有程序的事实。

现代系统不容易受到CIH的影响,因为使用了各种芯片组,这些芯片组与Intel I430TX芯片组以及其他Flash ROM IC类型不兼容。也有额外的保护免受意外BIOS重写的重写,以启动块的形式进行,这些启动块不受意外覆盖或双重和Quad BIOS配备的系统,如果发生崩溃,可能会使用备用BIOS。此外,所有现代操作系统,例如FreeBSDLinuxMacOSWindows NT的Windows OS,例如Windows 2000Windows XP和Newer,都不允许用户模式程序使用硬件抽象层具有直接的硬件访问。

结果,截至2008年,CIH基本上变得无害,最坏的情况是通过感染可执行文件并触发防病毒软件而烦恼。但是,其他BIOS病毒仍然可能存在。由于大多数没有Windows Vista/7的UAC的Windows Home用户都运行所有具有管理特权的应用程序,因此现代类似CIH的病毒原则上仍然可以在不使用漏洞的情况下访问硬件。操作系统OpenBSD可防止所有用户具有此访问权限,而Linux内核的GRSECURITY补丁也可以防止此直接硬件访问权限,而差异是攻击者需要更困难的内核级别利用或重新启动机器。

第三个BIOS病毒是由英国下一代安全软件首席安全顾问John Heasman提出的一种技术。在2006年,在Black Hat Security Conference上,他使用恶意程序替换了存储在闪存中的正常ACPI功能的恶意程序,展示了如何提升特权和读取物理记忆。

第四个BIOS病毒是一种称为“持续性BIOS感染”的技术。它于2009年在温哥华举行的Cansecwest安全会议上以及在新加坡举行的SYSCAN安全会议上发表。来自核心安全技术的研究人员Anibal Sacco和Alfredo Ortega演示了如何将恶意代码插入BIOS中的减压例程中,即使在启动操作系统之前,也可以在启动时几乎完全控制PC。概念验证并不能利用BIOS实施中的缺陷,而仅涉及正常的BIOS闪烁程序。因此,它需要对机器的物理访问或用户为根。尽管有这些要求,奥尔特加(Ortega)强调了他和萨科(Sacco)发现的深刻含义:“我们可以修补驾驶员以放下一个完全有效的rootkit 。我们甚至有一些可以删除或禁用防病毒软件的代码。”

Mebromi是一家特洛伊木马,它针对来自两家中国公司的奖励微软Windows防病毒软件的计算机:Rising Antivirus和Jiangmin KV Antivirus。 Mebromi安装了一个rootkit,该词根感染了主引导记录

在2013年12月接受60分钟的采访中,美国国家安全局信息保证总监Deborah Plunkett声称,NSA已经发现并挫败了针对美国金融体系的外国国家的BIOS攻击。该计划引用了匿名消息来源,称这是中国情节。然而, 《卫报》 《大西洋》 《连线》《登记册》中的后续文章驳斥了NSA的主张。

较新的英特尔平台具有启用Intel Boot Guard (IBG)技术,该技术将检查启动的BIOS数字签名,并且IBG公共密钥融合到PCH中。最终用户无法禁用此功能。

替代方案和继任者

统一的可扩展固件界面(UEFI)在许多新机器中补充了BIOS。 UEFI最初为Intel Itanium架构编写,现在可用于X86ARM平台。规范开发是由Unified EFI论坛(一个行业特别兴趣小组)驱动的。 EFI引导仅在支持GPTLinux内核2.6.1及以后的Microsoft Windows版本中得到支持,以及基于Intel的MAC上的MacOS 。截至2014年,新的PC硬件主要使用UEFI固件运输。 Rootkit保障的体系结构还可以防止系统运行用户自己的软件更改,这使UEFI引起争议,作为开放硬件社区中的传统BIOS替换。另外, Windows 11需要UEFI启动。

X86世界中“传统BIOS”功能功能的其他替代方案包括CorebootLibreboot

一些服务器和工作站使用基于第四个编程语言的独立于平台的开放固件(IEEE-1275);它包含在Sun的Sparc计算机,IBM的RS/6000系列以及其他PowerPC系统(例如CHRP主板)以及基于X86的OLPC XO-1中

至少截至2015年, Apple已从MacBook Pro Computers删除了Legacy BIOS支持。因此,BIOS实用程序不再支持传统选项,并打印“该系统不支持的旧模式”。 2017年,英特尔宣布将在2020年之前删除传统BIOS支持。自2019年以来,新英特尔平台OEM PC不再支持传统选项。

也可以看看