为什么操作系统(通常是?)无法访问BIOS设置?


20

主板启动后是否没有在CPU和BIOS芯片之间提供总线?如果是这样,为什么不呢?

如果CPU可以控制风扇速度,我不明白为什么它不能控制BIOS配置。


据我了解,当BIOS将引导加载程序拉入其中时,它停止运行,在IPMI的情况下可以期待。
Linef4ult '16

一些主板制造商具有执行此操作的实用程序,但是这些实用程序特定于该主板,Windows没有内置该实用程序,因为如果恶意软件使用它或普通用户在bios配置中四处逛逛,这可能是个坏消息。
摩押

正如DavidPostill已经回答的那样。Windows(和其他操作系统)通常可以访问BIOS。但是,这取决于芯片组和主板,并且可能无法100%节省时间。如果从BIOS固件转移到UEFI固件,则可以得到更多控制。
汉尼斯

自从我看到具有实际BIOS的PC已经有一段时间了。如果您是说UEFI,那么它就/sys/firmware/efi在Linux下。
德米特里·格里戈里耶夫

将控制权移交给操作系统后,不使用BIOS。在BIOS恢复/刷新损坏的BIOS的情况下,您甚至可以将BIOS芯片取出来编程另一个芯片。
AStopher '16

Answers:


44

为什么操作系统(通常是?)无法访问BIOS设置?

由于操作系统可以访问BIOS,因此无法回答上述问题。

我将在下面回答可能提出的问题。


操作系统如何访问BIOS设置?

在Windows和Unix上,操作系统能够读取BIOS。

视窗

示例(使用wmic):

F:\test>wmic bios /?

BIOS - Basic input/output services (BIOS) management.

HINT: BNF for Alias usage.
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].

USAGE:

BIOS ASSOC [<format specifier>]
BIOS CREATE <assign list>
BIOS DELETE
BIOS GET [<property list>] [<get switches>]
BIOS LIST [<list format>] [<list switches>]


F:\test>wmic bios list brief
Manufacturer              Name                                        SerialNumber      SMBIOSBIOSVersion  Version
American Megatrends Inc.  BIOS Date: 09/05/11 11:20:58 Ver: 04.06.03  27546064-5001600  R1190V3            Sony - 20110905

Windows也可以写入BIOS(某些主板制造商提供了基于Windows的BIOS更新程序。)

例如,请参见如何通过Windows或BIOS刷新BIOS

Unix系统

Unix也有类似的命令。

  • biosdecode解析BIOS内存并打印有关所有结构的信息。

  • 您可以使用包含嵌入式ASM(汇编代码)的C应用程序从root用户进行实时BIOS调用。

来源如何将BIOS数据转储到文件


进一步阅读


5
我想补充一点,在Windows XP之前,您可以做-尽我所能描述的那样-可以通过debug.com访问设置的指针骗术-记住有一个技巧可以删除一些BIOS的密码保护楷模。网络搜索"debug.com" bios password似乎带来了与此主题相关的一些信息。
Theraot '16

1
仍然没有回答“为什么?” ..不满意....
Zaibis

@Zaibis不需要回答“为什么”。操作系统可以访问BIOS,因此询问(并回答)为什么……无法……是没有意义的问题。我已经澄清了答案。
DavidPostill

1
"Unable" should be replaced by "able" as the OS can access the BIOS.如果您只是想将其作为短语,则应将其删除。由于遵循您的建议,他们仍然是您根本没有解决的问题。
Zaibis

1
@Zaibis <sigh>其他所有人都知道答案(包括接受答案的OP)。我已经特别为您更新了一次;)
DavidPostill

19

它们可以,但是那里的设置没有标准化接口的方式,尤其是如果您表示“ BIOS”合适(即UEFI之前的版本)的话。

BIOS的某些部分由BIOS和在其之上运行的OS之间的软件合同约束。很久以前,BIOS例程用于各种日常任务,例如读取和写入磁盘,在屏幕上显示内容以及打印到连接的打印机,因此被称为“基本输入/输出系统”。如果BIOS与硬件匹配,则操作系统可以支持不同的硬件变体,而不必为所有这些事情拥有自己的例程。但是,随着硬件和操作系统变得越来越复杂,并且超出了有限的BIOS设施集,操作系统开始为几乎所有内容提供自己的驱动程序,仅依靠BIOS进行启动,电源管理和检索系统配置信息。

但是BIOS也变得越来越复杂,并获得了不受OS-BIOS接口控制的各种设置和功能,甚至对于其中的内容也仅指定结果而不是实现。这意味着每个BIOS制造商都可以自由地按自己的意愿做事,只要操作系统持续运行,他们就可以随时随地更改事情,并且不必告诉任何细节。访问BIOS所存储的数据只是小菜一碟,但是如果您拥有一个可以理解数据的实用程序,或者可以以BIOS可以实际理解的方式对其进行修改,那么它可能是由BIOS编写的。 BIOS制造商本身,或者它是反向工程的结果。


如果您可以在某些技术细节中描述“小菜一碟”部分,那就太好了。例如,假设我知道如何使任意C代码在内核模式下执行;现在我该如何手动转储BIOS?
Mehrdad

6
@Mehrdad BIOS数据区和扩展BIOS数据区已映射到主内存地址,因此可以使用适当的权限直接进行读写。(通常,您不想这样做...)例如,请参见wiki.osdev.org/Memory_Map_%28x86%29#BIOS_Data_Area_.28BDA.29stanislavs.org/helppc/bios_data_area.htmlbioscentral.com/misc /bda.htm了解有关BDA布局的更多信息(第一个还简要介绍了EBDA布局的一种变体)。将“ BIOS数据区”和“扩展的BIOS数据区”输入您喜欢的搜索引擎以获取更多信息。
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.