固件:硬件和操作系统之间的桥梁
固件:硬件和操作系统之间的桥梁
固件:硬件和操作系统之间的桥梁
刚才遗漏的一个细节
CPU = 无情执行指令的机器
从 CPU Reset 开始执行
从 Mem[PC] 取指令
译码、执行,如此往复
这里必须得是
合法的代码
那到底执行了什么代码呢?
代码是谁放在这里的呢?
答案:系统厂商的代码
把一个特殊的存储器 memory-map 到 CPU Reset 后的代码
这段代码 “出生” 就有机器完整的控制权
固件:硬件和操作系统之间的桥梁
Firmware
“固件”
厂商 “固定” 在计算机系统里的代码
早期:固件是 ROM
想升级?换芯片!(今天可以直接升级固件了)
Firmware 的功能
运行程序前的计算机系统配置
CPU 电压、内存时序、接口开关……
(这些配置要生效可能需要重启计算机)
不严格地说,
加载操作系统
QEMU:可以绕过 Firmware 直接加载操作系统 (
Manual
)
固件:硬件和操作系统之间的桥梁
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,store 指令不会有任何效果)
但是 Firmware 也需要更新
Intel 430TX (Pentium) 芯片组允许
写入 (更新) PROM
在那个时代,大家还没意识到问题……
有些主板有写保护的跳线 (但默认可写)
为防止 Bug 损坏 Firmware
只要向 BIOS 写入特定序列,写保护即打开
但这个序列就在手册里
……
固件:硬件和操作系统之间的桥梁
有一个和你们差不多大的青年
“……CIH (Chernobyl) 病毒完全是他一人设计的,目的是想出一家在广告上吹嘘 “百分之百防毒软件” 的洋相……”
历史上影响最大的病毒之一:它可以
破坏硬件
!
坏了就只能拆主板,换 EEPROM 啦!
cih-1.4.asm
; 当年作者被捕,未被定罪 (时年 23 岁)
固件:硬件和操作系统之间的桥梁
如何预防病毒破坏固件?
只允许写入
信任
的固件更新
数字签名机制
公钥加密 (Diffie-Hellman/RSA)
感谢今天的 SSL/TLS (HTTPS)!
Intel Boot Guard 私钥泄露
为什么现在电脑病毒越来越少了?
更安全的操作系统
AppStore 机制 (软件包经过审查)
云端备份 (“给钱恢复文件” 勒索越来越无效)
我不小心 rm -rf 了 iCloud,也找回来了