固件:硬件和操作系统之间的桥梁

固件:硬件和操作系统之间的桥梁

2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

刚才遗漏的一个细节

CPU = 无情执行指令的机器

  • 从 CPU Reset 开始执行
    • 从 Mem[PC] 取指令
    • 译码、执行,如此往复
  • 这里必须得是合法的代码
    • 那到底执行了什么代码呢?
    • 代码是谁放在这里的呢?

答案:系统厂商的代码

  • 把一个特殊的存储器 memory-map 到 CPU Reset 后的代码
    • 这段代码 “出生” 就有机器完整的控制权
2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

Firmware

“固件”

  • 厂商 “固定” 在计算机系统里的代码
    • 早期:固件是 ROM
    • 想升级?换芯片!(今天可以直接升级固件了)

Firmware 的功能

  • 运行程序前的计算机系统配置
    • CPU 电压、内存时序、接口开关……
    • (这些配置要生效可能需要重启计算机)
  • 不严格地说,加载操作系统
    • QEMU:可以绕过 Firmware 直接加载操作系统 (Manual)
2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

Firmware 功能:配置计算机系统

center

2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

Firmware 功能:加载引导程序

center

  • qemu-system-x86_64 可以看到 Firmware 打印的日志 (QEMU 也可以用 OVMF 支持 UEFI 启动)
2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

Firmware:就是一段代码

一个小 “操作系统”

  • CPU Reset 后初始化硬件;对接操作系统 Boot Loader

Legacy BIOS (Basic I/O System)

  • IBM PC 所有设备/BIOS 中断是有 specification 的
    • 16-bit DOS 时代 BIOS 常驻内存,提供 I/O 等功能
  • 成就了百花齐放的 “兼容机” 时代

UEFI (Unified Extensible Firmware Interface)

  • 提供更丰富的支持 (例如设备驱动程序):指纹锁、山寨网卡上的 PXE 网络启动、USB 蓝牙转接器连接的蓝牙键盘……
2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

小插曲:梦回 1998

Firmware 通常是只读的 (当然……)

  • (它可是接管了 CPU Reset,store 指令不会有任何效果)

但是 Firmware 也需要更新

  • Intel 430TX (Pentium) 芯片组允许写入 (更新) PROM
    • 在那个时代,大家还没意识到问题……
    • 有些主板有写保护的跳线 (但默认可写)
  • 为防止 Bug 损坏 Firmware
    • 只要向 BIOS 写入特定序列,写保护即打开
    • 但这个序列就在手册里 👽……
2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

有一个和你们差不多大的青年

“……CIH (Chernobyl) 病毒完全是他一人设计的,目的是想出一家在广告上吹嘘 “百分之百防毒软件” 的洋相……”

历史上影响最大的病毒之一:它可以破坏硬件

  • 坏了就只能拆主板,换 EEPROM 啦!
  • cih-1.4.asm; 当年作者被捕,未被定罪 (时年 23 岁)

center

2025 南京大学《操作系统原理》
固件:硬件和操作系统之间的桥梁

如何预防病毒破坏固件?

只允许写入信任的固件更新

为什么现在电脑病毒越来越少了?

  • 更安全的操作系统
  • AppStore 机制 (软件包经过审查)
  • 云端备份 (“给钱恢复文件” 勒索越来越无效)
    • 我不小心 rm -rf 了 iCloud,也找回来了 😂
2025 南京大学《操作系统原理》