计算机系统中的固件
计算机系统中的固件
计算机系统中的固件
计算机系统 = 状态机
程序员如何控制计算机系统?
仅有 RESET 状态是不够的
答案:计算机系统会和 System Programmers 达成约定
如果
你把代码放在某个位置,它就会被执行
随着计算机发展形成的约定
计算机系统中的固件
Firmware
“固件”
厂商 “固定” 在计算机系统里的代码
早期:固件是 ROM
想升级?换芯片!
Firmware 的功能
运行程序前的计算机系统配置
CPU 电压、内存时序、接口开关……
(这些配置要生效可能需要重启计算机)
不严格地说,
加载操作系统
QEMU:可以绕过 Firmware 直接加载操作系统 (
RTFM
)
计算机系统中的固件
Firmware:配置计算机系统
计算机系统中的固件
Firmware:加载存储设备上的引导程序
qemu-system-x86_64 可以看到 Firmware 打印的日志 (QEMU 也可以用 OVMF 支持 UEFI 启动)
计算机系统中的固件
Firmware:就是一段代码
一个小 “操作系统”
CPU Reset 后初始化硬件;对接操作系统 Boot Loader
Legacy BIOS (Basic I/O System)
IBM PC 所有设备/BIOS 中断是有 specification 的
16-bit DOS 时代 BIOS 常驻内存,提供 I/O 等功能
成就了百花齐放的 “兼容机” 时代
AMI
和
Phoenix BIOS
, 等都活到了今天!
UEFI (Unified Extensible Firmware Interface)
提供更丰富的支持 (例如设备驱动程序):指纹锁、山寨网卡上的 PXE 网络启动、USB 蓝牙转接器连接的蓝牙键盘……
计算机系统中的固件
小插曲:梦回 1998
Firmware 通常是只读的 (当然……)
(它可是接管了 CPU Reset)
但是 Firmware 也需要更新
Intel 430TX (Pentium) 芯片组允许
写入 (更新) PROM
在这个时代,大家还没意识到问题……
有些主板有写保护的跳线 (但默认可写)
为防止 Bug 损坏 Firmware
只要向 BIOS 写入特定序列,写保护即打开
但这个序列就在手册里
……
计算机系统中的固件
有一个和你们差不多大的青年
“……CIH 病毒完全是他一人设计的,目的是想出一家在广告上吹嘘 “百分之百防毒软件” 的洋相……”
历史上影响最大的病毒之一:它可以
破坏硬件
!
坏了就只能拆主板,换 EEPROM 啦!
cih-1.4.asm
; 当年作者被捕,未被定罪 (时年 23 岁)
计算机系统中的固件
UEFI Firmware 与程序员的约定
一块磁盘需要满足什么条件,才能被 UEFI 固件识别并启动上面的操作系统?
今天只要提问、提问、提问就行了!
你可以一边追问,一边用命令行工具制作 UEFI 启动盘!
可以看一看我们的系统里的 EFI 分区吗?
当然可以了!