BIOS(基本输入输出系统,Basic Input/Output System)是嵌入在计算机主板固件中的底层软件,负责在计算机启动时初始化硬件、执行自检(POST,上电自检),并引导操作系统加载。它是计算机硬件与操作系统之间的桥梁,位于固件层,通常存储在主板上的非易失性存储器(如ROM或闪存)中。
BIOS的主要功能:
1. 硬件初始化与自检(POST)
开机时,BIOS检测CPU、内存、存储设备、显卡等核心硬件状态,若发现问题会通过蜂鸣代码或屏幕提示错误信息。
2. 引导加载(Boot Loader)
根据配置的启动顺序(如硬盘、U盘、光盘),BIOS从存储设备读取引导扇区,将控制权转交给操作系统引导程序(如GRUB)。
3. 硬件抽象层接口
提供标准化的中断调用(如INT 13h访问磁盘),使操作系统无需直接操作硬件细节。
4. CMOS设置
通过BIOS设置界面(按Del/F2键进入),可调整硬件参数(如启动顺序、CPU频率、安全启动选项)。CMOS由主板电池供电,保存用户配置。
Linux与BIOS的交互:
启动依赖:传统Linux发行版通过BIOS的Legacy模式启动,依赖MBR分区表。现代系统则更多采用UEFI(统一可扩展固件接口),支持GPT分区表和更快的启动速度。
内核参数传递:BIOS/UEFI将硬件信息(如ACPI表)传递给Linux内核,影响电源管理、设备驱动加载等。
安全机制:UEFI的安全启动(Secure Boot)可能限制未签名内核的加载,需在BIOS中禁用或添加密钥。
扩展知识:
UEFI替代传统BIOS:
UEFI支持更大的硬盘(超过2.2TB)、图形化界面、模块化驱动,并直接加载位于ESP(EFI系统分区)中的EFI可执行文件,如`/boot/efi/EFI/grub.efi`。
Coreboot与开源替代
部分Linux用户使用开源固件Coreboot替换BIOS,以减少闭源代码依赖,提升启动速度和安全性。
BIOS与虚拟化
在虚拟化环境(如QEMU/KVM)中,可通过SeaBIOS或OVMF(UEFI固件)模拟物理机的启动过程。
故障排查
Linux工具如`dmidecode`可读取BIOS信息,`efibootmgr`管理UEFI启动项,`acpidump`分析ACPI配置。
BIOS的局限性和复杂性促使现代系统转向UEFI,但两者在Linux生态中仍并存,理解其原理对系统维护和调优至关重要。