计算机系统中的固件

计算机系统中的固件

2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

计算机系统 = 状态机

程序员如何控制计算机系统?

  • 仅有 RESET 状态是不够的
  • 答案:计算机系统会和 System Programmers 达成约定

如果你把代码放在某个位置,它就会被执行

  • 随着计算机发展形成的约定
2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

Firmware

“固件”

  • 厂商 “固定” 在计算机系统里的代码
    • 早期:固件是 ROM
    • 想升级?换芯片!

Firmware 的功能

  • 运行程序前的计算机系统配置
    • CPU 电压、内存时序、接口开关……
    • (这些配置要生效可能需要重启计算机)
  • 不严格地说,加载操作系统
    • QEMU:可以绕过 Firmware 直接加载操作系统 (RTFM)
2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

Firmware:配置计算机系统

center

2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

Firmware:加载存储设备上的引导程序

center

  • qemu-system-x86_64 可以看到 Firmware 打印的日志 (QEMU 也可以用 OVMF 支持 UEFI 启动)
2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

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 蓝牙转接器连接的蓝牙键盘……
2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

小插曲:梦回 1998

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

  • (它可是接管了 CPU Reset)

但是 Firmware 也需要更新

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

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

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

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

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

center

2024 南京大学《操作系统:设计与实现》
计算机系统中的固件

UEFI Firmware 与程序员的约定

一块磁盘需要满足什么条件,才能被 UEFI 固件识别并启动上面的操作系统?

今天只要提问、提问、提问就行了!

  • 你可以一边追问,一边用命令行工具制作 UEFI 启动盘!

可以看一看我们的系统里的 EFI 分区吗?

  • 当然可以了!
2024 南京大学《操作系统:设计与实现》