计算机通电后会运行主板上的特定程序(老主板BIOS, 新主板UEFI). 该程序会通电自检, 并 且读取基本设置项, 完成后会找到用户配置的主引导项(bootloader), 并且启动它.
BIOS已经过时, Intel决定在2020年前使用UEFI全部替换BIOS.
BIOS启动: BIOS->MBR->DPT->PBR->Bootloader->操作系统
UEFI UEFI->ESP分区->bootloader->操作系统
BIOS是
Basic Input-Output system
的简写, 保存在主板的只读内存芯片里(可以使用 特殊方式刷新BIOS程序).BIOS一般使用ROM或NVRAM作为芯片, ROM又分为ROM(只读, 不可擦除), EPROM(电可编程只 读存储器), EEPROM(电可擦只读存储器). NVRAM(非易失性随机访问存储器)分为nor flash和 nand flash. 演进过程: ROM->PROM->EPROM->EEPROM->nor flash->nand flash 主要是从擦除方式, 擦除速度, 次数, 读取速度和方式来优化的.
开机启动可以按功能键(Esc, F2, F10, Delete)进入BIOS设置界面, 设置后可以保存内容到 主板内存, 下次启动会自动加载. BIOS设置是保存在
CMOS(Complementary Metal Oxide Semiconductor)
中, 是一个随机存储器RAM, 一般集成到主板的南桥芯片组里, 需要一直供电, 不然数据会 丢失. 主板上的电池就是为它供电的, 现代主板使用EEPROM取代.
BIOS主要有四大功能:
POST(Power-On Self Test), 通电自检, 会检查硬件是否正常, 不正常时使用不同报警声 来表示错误. 因为自检在加载显卡驱动之前, 所以不能在显示器上显示错误信息.
Boot Sequence. 根据CMOS配置的启动顺序查找第一个发现的MBR分区, 512个字节, 最后 为0x55和0xAA为MBR
CMOS设置程序. 配置CMOS, 重新BIOS后, CMOS需要重新配置.
硬件I/O和中断服务. 简单的与硬件交互, 检查或者简单的驱动硬件
BIOS淘汰的原因:
使用16位实模式CPU指令集, 1MB的内存空间, 前640K为基本内存, 后面384K内存留给开机必要硬 件和各类BIOS本身使用. 启动慢, 功能小, 限制了自身的发展
只支持MBR分区, MBR最大只支持4个主分区, 2TB大小. 当前已经不够用了.
Intel为了改进BIOS, 在1998年出了EFI(Extensible Firmware Interface), Apple在2006年从 PowerPC换成Intel时, 选择了EFI, 但是其他公司没有跟随. 直到2007年, Intel把EFI公布 出来后, 其他的公司加入, 制作出UEFI(Unified Extensible Firmware Interface)标准, 才 流行起来.
UEFI有BIOS支持的所有功能, 并且向后兼容. 老主板只能使用BIOS+MBR, GPT分区硬盘只能 作为数据盘, 不能作为引导盘. 新主板支持UEFI+ GPT, 新主板如果开启Legacy BIOS , 那么也支持BIOS+MBR.
主要优点:
可以使用GPT分区, 硬盘容量和分区个数更大.
使用32位和64位指令, 开机可以更快, 更多的驱动硬件设备, 显示更清晰的引导画面.
UEFI就像一个微型操作系统, 可以有自己的驱动程序, 是顺序驱动的. 驱动过程有(Secure Boot) 模式, 驱动过程会检查程序是否被篡改, 不然不允许加载(黑苹果为了模拟白苹果硬件平台, 需要篡改硬件的相关信息, 所以要关闭Secure Boot)
UEFI先会检查CPU和内存, 如果这两个部件有问题, 不会报警, 屏幕也不会亮, 可以根据主板 上的指示灯大致判断.
MBR(Master boot record, 主引导记录), 一共只有512个字节.
分区表(DPT
)64个字节, 分为4项, 每项16字节(所以最多只能有4个主分区):
其中分区扇区总数记录为32位, 最多只能有2^32个扇区, 每个扇区规定大小512B, 那么最大 支持为 2^32 * 512 = 2TB. 但是现代512B读取效率不高, 开发了每个扇区4K, 如果不数据 不对齐, 那么一次读取写入会跨物理扇区, 所以有个4K对齐, 空出数个扇区, 让每次读4K 时在一个扇区里.
当4个主分区不够时可以使用逻辑分区, 就是在主分区的头部再使用扩展分区表(Extended boot record,缩写为EBR). 64字节的分区表最多只有两项, 可以创建2个逻辑分区, 逻辑上 可以无限递归下去, 但是没有人会这么做.
MBR主分区中只能有一个激活状态的分区, 这个激活状态的分区的第一个扇区叫作
引导 记录(VBR OR PBR)
, 指定操作系统第一个启动程序的位置.如果操作系统不在主分区, 或者有多个操作系统, 需要修改主引导记录的机器码, 用来 指向
启动管理器(Boot loader)
, 如Grub, 由用户选择启动哪一个操作系统.
GPT(全局唯一标识分区表(GUIDPartition Table), 是EFI中定义的新式分区.
优点:
保护MBR, 为了使不支持GPT分区的操作系统, 错误操作破坏硬盘中的数据, 分区表最开头 还是保存了MBR区域, 只是这个区域会保存第一阶段的启动码, 并且标识为0xEE的分区, 以 此来表示这块硬盘使用GPT分区表. 不支持GPT分区表的读取这个标识, 为未知分区类型, 不 会进一步错误处理.
MBR/GPT混合分区表, 里面保存GPT前4个分区, 可以以MBR启动, 但是只能操作MBR分区表中 的分区. 如Boot Camp就是使用这种方式启动Windows.
保护MBR中指向bootloader程序, 因此必须通过bootloader程序引用操作系统.
Eeprom和Flash的区别 MBR和EFI启动过程 Intel to Remove Legacy BIOS Support from UEFI by 2020 What Is UEFI, and How Is It Different from BIOS? 计算机是如何启动的? IT之家学院:浅谈BIOS和CMOS BIOS、EFI与UEFI详解