跳转至内容

LPI Linux 认证/配置基本 BIOS 设置

来自 Wikibooks,开放世界中的开放书籍

配置基本 BIOS 设置

[编辑 | 编辑源代码]

详细目标

[编辑 | 编辑源代码]

权重:1

描述
候选人应能够通过在基于x86架构的硬件的系统BIOS中进行正确的设置来配置基本系统硬件。
  • 关键知识领域
    • 启用和禁用集成外设。
    • 配置带有或不带外部外设(如键盘)的系统。
    • 为所有 BIOS 管理的端口正确设置IRQDMAI/O地址,以及错误处理的设置。
  • 以下是使用的文件、术语和实用程序的部分列表
    • /proc/ioports
    • /proc/interrupts
    • /proc/dma
    • /proc/pci
BIOS 提示与技巧
熟悉
设备中的 BIOS 设置
您支持的。
了解蜂鸣声:您可能
在出现问题时无法访问
互联网。
变更控制:始终
确保您可以撤消
您在
BIOS 中进行的任何更改。
BIOS 更新:保持知情。
不要在它们出现在镜像上时就立即
推出它们。等待
几个月,然后检查
制造商论坛以了解
更新存在的问题。
一旦您满意,更新
一个系统,监控它,然后
推广到您的其余
系统。记录
更改,BIOS 更新通常是
难以
撤消的。
注意F1键以
继续,尤其是在
重新启动远程服务器时。
远程管理
如果可用,请使用它。
认真考虑
实施 BIOS 安全。
是否可以在
其他地方实施
相同级别的安全?通常可以。
了解
BIOS 日期和时间的限制。
系统日期和时间是否可以
通过
其他方式更好地维护?

BIOS(基本输入/输出系统)可以被认为是一套小型程序,在任何给定计算机上的操作系统和硬件之间运行。它提供许多服务,使计算机能够启动任何给定的操作系统。BIOS 还可以根据操作系统和/或安装的硬件类型向操作系统提供或呈现其他服务。还应注意,现代计算机可能有多个 BIOS 芯片连接各种不同的硬件组件,这些组件共同构建了整台计算机。其中包括磁盘阵列控制器显卡声卡,以及可能的一些其他组件。首先,让我们看一下 BIOS 提供的服务,无论安装了哪个操作系统:即POST(加电自检)、硬件管理、安全和日期与时间。

英特尔和其他制造商已经开发了另一种名为EFI(可扩展固件接口)的标准,它执行与 BIOS 相似的功能,但以不同的方式完成工作。EFI 比 BIOS 更加灵活和强大,但它并没有获得那么多的商业成功。目前,探索 EFI 超出了本文档的范围。

POST - 加电自检

[编辑 | 编辑源代码]
  • POST 过程涉及一个小型诊断程序,该程序检查系统硬件,例如 RAM 或主板组件。如果存在特定硬件,则会执行基本测试以检查故障。可能会执行更高级的测试,例如长内存测试,但通常需要在 BIOS 中手动启用这些功能。
  • 如果 POST 过程发现错误,它通常会在主板扬声器上发出蜂鸣声和/或通过主板上的 LED 和/或屏幕上的消息显示一些视觉信息。这被称为“不规则 POST 条件”。
  • 蜂鸣声、灯光或消息的数量(在某些情况下还有模式)将帮助您诊断问题;但是,不同的主板型号(即使是同一制造商的型号)也具有不同的这些信号实现方式,因此始终明智的做法是为支持的每个型号准备一份印刷参考手册或在另一台机器上访问互联网以快速查找。

硬件管理

[编辑 | 编辑源代码]
  • 在 POST 过程中,BIOS 允许您通过存储在CMOS(互补金属氧化物半导体)内存中的设置来灵活自定义系统的某些方面。CMOS 内存是易失性内存,但您的主板有一个备用电池来保存您所做的任何自定义系统配置。这个电池最终会失效。如果您发现您的计算机无法在一个电源周期内保留 BIOS 设置,通常的原因是您需要更换这个电池。
  • 用户和系统管理员经常编辑的有用 BIOS 设置可能包括
    • 启动设备优先级
    • 启用/禁用主板功能,如集成视频、局域网或声音
    • 为 PCI(或更旧的)卡设置首选内存地址或 IRQ 向量
  • 在较旧的主板上,这些配置是通过将某些跳线DIP 开关置于硬件制造商的规格来完成的。现代 CMOS 菜单已经几乎取代了所有这些设备,除了设置 SCSI ID 或重置 BIOS 密码。仍然有一些“老式”主板在运行,因此请始终牢记跳线的可能性。
  • 大多数 BIOS 允许用户设置密码。计算机在完成启动过程之前需要输入此密码。通常,此 BIOS 密码会带来不便,而没有任何真正的安全性:绕过这些密码的信息在互联网上公开提供。如果用户忘记此密码,则计算机将不会继续加载操作系统。不难看出为什么 BIOS 密码在企业级很少被使用。
  • 许多现代计算机能够检测配置更改,例如内存大小更改,甚至机箱是否被移除。如果此更改是可以接受的,BIOS 通常会报告这些更改并提示用户按一个键(通常是 F1 键)继续。根据特定的 BIOS 制造商,用户可能需要按另一个键进入 BIOS 配置屏幕以更改参数。

日期和时间

[编辑 | 编辑源代码]
  • 设置时间和日期是任何现代 BIOS 中的选项。这是一个“实时”时钟,持续运行,由与保留 CMOS 设置相同的电池供电。它并不十分准确,甚至与手表相比,但拥有这个不太准确的时钟总比每次重启都需要用户手动输入时间要好。(这就是早期计算机的运作方式。)
  • Linux(像其他操作系统一样)通过计算计算机中振荡器电路产生的中断来在软件中维护自己的时钟。此时钟仅在操作系统运行时起作用。
  • BIOS 在启动时将日期和时间提供给操作系统。操作系统收集此信息后,BIOS 时钟和操作系统时钟将继续独立运行。这意味着 BIOS 时钟很快就会与操作系统时钟不同,即使仅相差几毫秒。
  • Linux 有一个名为 hwclock 的命令,可用于将操作系统时钟与 BIOS 同步。但是,同步后,它们又会逐渐出现偏差。(这是由于 BIOS 时钟的硬件特性和操作系统时钟的软件特性导致的。)
  • 在课程的后面,您将开始了解 ntp 以及维护一致的“网络时间”的重要性。了解 BIOS 和操作系统维护独立时钟将有助于您制定解决方案。
  • BIOS 不处理时区或夏令时调整。这些由操作系统处理。因此,某些管理员可能会选择将其 BIOS 时钟设置为 UTC 而不是本地时间。

磁盘驱动器

[编辑 | 编辑源代码]

大多数计算机使用 硬盘驱动器 来存储操作系统和用户数据。一些较新的计算机使用 固态硬盘驱动器 代替。尽管物理设备差异很大,但在配置 Linux 或其他操作系统方面几乎没有区别。

连接接口

[编辑 | 编辑源代码]

首先,让我们解决磁盘驱动器术语(如 IDE/ATA(集成驱动电子/高级技术附件)和 SATA(串行高级技术附件),以及 PATA(并行高级技术附件))带来的困惑,它们都使用 ATA(高级技术附件)标准与设备通信。缩写词的第一部分可以简单地理解为修订版。例如,IDE、Fast IDE、EIDE 等修订版。这些修订版改变了连接磁盘驱动器到计算机的物理电缆或带状电缆,从而实现了某些功能,例如处理更多磁盘空间或加快与设备的通信速度。SATA 就像重写一样,一旦 SATA 出现,就决定将所有早于 SATA 的历史 ATA 设备(IDE 等)归类为 PATA 术语。

SCSI 是另一种流行的连接接口,多年来经历了几个版本的修订:SCSI、SCSI-2、SCSI-3、U160、U320 和 SAS。如果需要,请点击本段开头处的链接以获取更多详细信息。SCSI 系列连接接口在硬件上与 ATA 系列不兼容,也不使用相同的软件命令集,因此不能将 SCSI 驱动器与 ATA 控制器混合使用,也不能将 ATA 驱动器与 SCSI 控制器混合使用。由于它们使用不同的命令,因此 Linux 将使用不同的标签对其进行枚举。这将在以后变得重要时进行更详细的处理。

为了了解现代硬盘驱动器,了解一些背景知识很有帮助。BIOS 传统上使用 INT13h 作为与硬盘驱动器的接口。从历史的角度来看,INT13h 有一定的限制。另一方面,IDE/ATA 接口也存在限制。下表中重点介绍了这些限制。

规格 最大柱面数 最大磁头数 最大扇区数 最大容量
IDE/ATA 65,536 16 256 138GB
INT13h 1,024 256 63 528MB







显然,您可以看到由于 INT13h 和 IDE/ATA 的限制(我们已突出显示),在上述情况下,普通计算机可以处理的最大驱动器为 528MB。我们将此规范称为 CHS(柱面-磁头-扇区)。您可能还记得,要计算硬盘驱动器的总容量,请使用以下公式

  • 柱面数 * 磁头数 * 扇区数 * 512 = 容量


为了解决这个问题,实施了一种新的规范,称为 ECHS(扩展柱面-磁头-扇区),有时也称为“大模式”。它在 BIOS 和 INT13h 之间引入了一个转换层。然后,转换层允许计算机处理最大容量为 8.4GB 的磁盘驱动器。我们可以通过修改上面的表格来查看这一点,我们在下面列出了该表格并突出显示了相关的行。

规格 最大柱面数 最大磁头数 最大扇区数 最大容量
IDE/ATA 65,536 16 256 138GB
ECHS 620 128 63 2.5GB
INT13h 1,024 256 63 8.4GB








为了了解转换的工作原理,让我们以一个具有 4960 个柱面、16 个磁头和 63 个扇区的 2.5GB 硬盘为例。转换程序查看柱面数,并与 INT13h 的 1024 个柱面的限制进行“最佳拟合”。转换程序通常通过除法来实现这一点。它将柱面数除以以下数字之一:2、4、6、8,在某些情况下为 16。在我们的例子中,4960 / 8 = 620,这并没有违反 INT13h 的限制。现在,转换程序将磁头数乘以 8,所以 16 * 8 = 128。通过这种方式,转换程序维护了 INT13h 标准,并提供了一种计算机可以查看整个磁盘的方法。我们可以通过计算转换前后的磁盘空间来查看这一点。

  • 原生 4960 * 16 * 63 * 512 = 2.5GB
  • 转换 620 * 128 * 63 * 512 = 2.5GB

上表需要进一步说明。您会注意到,ECHS(转换层)的最大磁头数为 128,这与 IDE/ATA 层不兼容,后者指定了 16 的限制。我们之所以能够做到这一点,是因为转换层只关心 INT13h,并且与 IDE/ATA 层没有任何关系。下表将显示此模型的真实外观。

规格 最大柱面数 最大磁头数 最大扇区数 最大容量
物理驱动器 4,660 16 63 2.5GB
IDE/ATA 65,536 16 256 138GB
INT13h 1,024 256 63 8.4GB
ECHS 620 128 63 2.5GB










不用说,硬盘驱动器的容量远远超过了 8.4GB,因此需要一些其他的方法,因为柱面-磁头-扇区方法不再是一种可行的选择。这将在下一节中介绍,我们将带您了解最新的情况。

LBA(逻辑块寻址)是当今最常见的方案,用于克服对 IDE/ATA 磁盘驱动器施加的 528MB 限制。使用 LBA,每个块都有一个唯一的标识号,从 0 开始,然后是 1、2、3、4、5... 为了使这种机制能够工作,它必须得到 BIOS、操作系统和 IDE 驱动器的支持。关于 LBA 的一个常见误解是,它是 LBA 本身绕过了 528MB 的限制,而实际上 LBA 使用的是转换。当您在 BIOS 中启用 LBA 模式时,实际上是在启用转换。转换可以与上面讨论的 ECHS 相同,也可以由第三方使用其他算法。研究这些算法超出了本课程的范围。但应该说明第三方算法的重要性。随着现代操作系统的普及,BIOS 在“与驱动器通信”方面正在逐渐退居次要地位,现代操作系统现在使用自己对 ATA 规范的解释来执行此功能,更倾向于完全绕过 BIOS。

x86 架构上存在 16 个 IRQ(中断请求)通道。其中只有少数几个是可用的。下表以红色列出了无法使用的 IRQ,以橙色列出了可以重新分配的 IRQ(前提是您的系统中不存在某些硬件),以及以白色列出了您可以自由分配的 IRQ。

IRQ 编号 硬件分配 IRQ 编号 硬件分配 IRQ 编号 硬件分配 IRQ 编号 硬件分配
0 系统定时器 4 COM1 8 实时时钟 12 PS2 鼠标
1 键盘 5 LPT2 / 声卡 9 可用 13 浮点处理器
2 处理 IRQ 8 - 15 6 软盘控制器 10 可用 14 主 IDE
3 COM2 7 并行端口 11 可用 15 次 IDE










从本质上讲,IRQ 用于停止计算机进一步处理任何信息,并立即为来自中断的请求提供服务。也就是说,分配给中断的设备。上表说明了在 PIC(可编程中断控制器)下 IRQ 架构的外观,但是它隐藏了优先级问题。IRQ 结构的优先级由 0-1-2-8-9-10-11-12-13-14-15-3-4-5-6-7 给出。8-15 具有更高优先级的原因是它们连接到 IRQ 2,实际上 IRQ 2 可以说是 IRQ 9。我们在这里看到的有点历史了。在上述场景下,添加新硬件很快成为一项艺术和痛苦!PCIUSB 的出现使得地址范围更大,并且能够即插即用。

DMA(直接内存访问)是现代计算机的一项功能,它使设备能够在需要将信息写入或读取到另一个设备时绕过 CPU,这样做的目的是减轻 CPU 的负担并利用 DMA 控制器和 RAM 将数据块从一个区域移动到另一个区域。尽管在 DMA 传输中 CPU 从未完全消除,但其作用纯粹是启动过程而不是管理过程。

I/O(输入/输出)是指在现代计算机系统中所有设备(包括外部和内部设备)之间移动数据。某些设备可以执行输入和输出功能。例如 网卡。显然,键盘鼠标等是输入设备的例子,而 显示器打印机 是输出设备的例子。

综合起来

[编辑 | 编辑源代码]

当您打开 PC 时,BIOS 指令将从主板上的永久可用 ROM 芯片加载到 RAM 中。这些指令在执行 POST 后,可能会进一步通知处理器操作系统位于何处以及如何将其加载到 RAM 中。为了允许操作系统和应用程序在 PC 上运行,BIOS 提供了一层标准的服务,操作系统可以使用这些服务与硬件“通信”。反过来,操作系统为应用程序提供标准服务以执行其功能。重要的是要理解,并非所有操作系统都使用所有 BIOS 服务:有些操作系统使用自己的指令来访问硬件。直接访问硬件的方法可能会提高性能。

BIOS 利用多种技术来执行我们上面讨论的服务。但是,与计算机行业的所有事物一样,技术正在快速发展。BIOS 在系统中发挥着至关重要的作用,添加到主板的新技术通常需要 BIOS 的配合,以便操作系统能够利用新技术。

到目前为止,您应该对 BIOS 及其在硬件中扮演的角色有了很好的了解。在下一节中,我们将了解 Linux 及其如何与 BIOS/硬件交互。这将有望为您提供系统管理员对这些关系的看法。

[编辑 | 编辑源代码]

从这一点开始,有必要访问 Linux PC。尽管涉及一些理论,但我们将越来越多地与 Linux 交互。我建议您在遇到命令时尝试一下,在学习过程中测试您的理解。请注意某些命令,因为错误的开关,或者在某些情况下从错误的目录运行命令是不健康的。(一个著名的例子是从 / 作为 root 运行 rm -R *。)因此,如果您是 Linux 新手,请小心:不要滥用 root 帐户。仅在必须时才使用它。我个人建议为课程单独安装一个 Linux 系统,其中不包含任何个人数据。

请理解,本书的任何作者/贡献者对任何数据丢失或任何硬件损坏概不负责,无论其原因如何。打字错误可能会发生,并且任何人都可以编辑此书,无论其知识水平如何。

/proc 是一个伪文件系统,用作内核数据结构的接口。大部分是只读的,但某些文件允许更改内核变量,特别是在 /proc/sys 中。如果您要列出 /proc 中的文件系统,您将看到如下内容

user@host:~$ cd /proc
user@host:/proc$ ls
1     4190  5071  5462  5859  6          dma          pagetypeinfo
128   4312  5103  5478  5867  6024       driver       partitions
1475  44    5162  5547  5868  6553       execdomains  sched_debug
1481  45    5164  5563  5871  6583       fb           scsi
1508  4589  5205  5574  5879  6593       filesystems  self
1524  4590  5224  5579  5880  6685       fs           slabinfo
1526  4594  5227  5655  5884  6694       interrupts   stat
165   4595  5289  5660  5890  6714       iomem        swaps
166   4597  5302  5661  5892  6716       ioports      sys
1784  4765  5315  5695  5901  6717       irq          sysrq-trigger
1786  4805  5318  5697  5902  6735       kallsyms     sysvipc
1787  4878  5328  5698  5903  7          kcore        timer_list
2     4932  5336  5816  5905  acpi       key-users    timer_stats
207   4934  5356  5820  5912  asound     kmsg         tty
2272  4956  5362  5821  5915  buddyinfo  loadavg      uptime
2273  4972  5363  5829  5918  bus        locks        version
2515  4986  5370  5832  5925  cgroups    meminfo      version_signature
2718  4999  5373  5842  5938  cmdline    misc         vmcore
3     5     5378  5851  5941  cpuinfo    modules      vmnet
3181  5021  5416  5854  5970  crypto     mounts       vmstat
4     5042  5419  5856  5973  devices    mtrr         zoneinfo
41    5043  5423  5858  5982  diskstats  net

您首先会注意到这些编号的目录代表系统上正在运行的进程。每个编号的目录都有一组通用的子目录,这些子目录提供有关该进程的信息。表示目录的数字与使用 ps 命令看到的进程号一致。我们将在后面的章节中介绍进程。
我们感兴趣的目录和文件如下

/proc/acpi        * Power Management  
/proc/bus/pci     * Note on some distributions this may be /proc/pci
/proc/cpuinfo     * processor information
/proc/devices      
/proc/dma
/proc/interrupts
/proc/iomem
/proc/ioports
/proc/irq
/proc/meminfo

获取内核信息

[编辑 | 编辑源代码]

/proc 是一个伪文件系统,用作内核数据结构的接口。大部分是只读的,但某些文件允许更改内核变量。

可用目录的示例包括

[Number]: Process information running on the system.
cmdline: The complete command line, cwd: The working directory, ...
/proc/uptime       Since when the system is up and running.
/proc/sys/kernel   Kernel information.
/proc/sys/net      Network information.
/proc/partitions   Hard drive partitions information.
/proc/scsi         SCSI information.
/proc/mounts       Mounted file system information.
/proc/devices      List the loaded drivers.
/proc/bus          Bus information. 
/proc/version      Linux version.

/proc/acpi

[编辑 | 编辑源代码]

acpi 是用于监视事件和状态的接口。

获取硬盘信息

[编辑 | 编辑源代码]

要获取磁盘信息,请使用 hdparm。更多信息可在 hdparm 手册页 中找到。

hdparm [options] [devices]

Common options:
-g: Get the disk geometry.
-C: Display the power mode of the hard drive.
 active/idle: Normal operation,
 Standby: Low  power  mode,
 or sleeping: Lowest power mode.
-v: Display  all  settings,  except  -i (same as -acdgkmnru for IDE, -gr for SCSI or -adgr for XT).
 This is also the default behaviour when no flags are specified.


示例

hdparm -g /dev/hda
 /dev/hda:
 geometry     = 3648/255/63, sectors = 58605120, start = 0
hdparm -C /dev/hda
 /dev/hda:
 drive state is:  active/idle

以及更多... **粗体文本**

  1. 您系统的 RAM 大小是多少?
  2. 哪些设备共享中断线?
  3. 使用 lspci 实用程序和正确的选项绘制系统的 PCI 架构。
    • 有多少个 PCI 总线和桥接器?
    • 是否存在任何 PCI/ISA 桥接器?
  4. 列出所有 Intel PCI 设备的 lspci 选项是什么?
  5. 将 IDE 硬盘设置为只读模式的命令是什么?
  6. 打开/关闭硬盘磁盘缓存的命令是什么?
  7. setpci 实用程序的作用是什么?(在上面的文章中没有提到,但请进行网络搜索以了解其作用)
  8. 写入 PCI 设备寄存器 N 中的一个字的命令是什么?
练习结果
  1. 显示可用物理 RAM 量:使用 free 或 cat /proc/meminfo | grep MemTotal
  2. 哪些设备共享中断线?cat /proc/interrupts | more
    • 有多少个 PCI 总线和桥接器?lspci | wc -l
    • 是否存在任何 PCI/ISA 桥接器?lspci | grep 'PCI\|ISA'
  3. 列出所有 Intel PCI 设备的 lspci 选项是什么?lspci -d 8086:*
  4. 将 IDE 硬盘设置为只读模式的命令是什么?hdparm -r1 <device>

  5. 如何开启/关闭磁盘缓存硬盘? hdparm -W1 <设备>    hdparm -W0 <设备>
  6. setpci 实用程序有什么作用? setpci 是一个用于查询和配置 PCI 设备的实用程序。
  7. 如何向 PCI 设备的寄存器 N 写入一个字? setpci -s 12:3.4 N.W=1
华夏公益教科书