原文链接:操作系统引导全过程
导言
预备知识
了解操作系统引导需要先了解预备知识
BIOS
BIOS(Basic Input Output System基本输出输入系统):主板的固件(具有软件功能的硬件)程序,位于ROM芯片中,能控制管理硬件设备
BIOS程序内存分布
BIOS工作在实模式下,最大20位寻址,也就是1M寻址范围(0x00000 ~ 0xFFFFF)(最初的8086处理器能够访问的内存最大只有1MB,保证兼容性)
0x00000 ~ 0x9FFFF(640KB):基本内存
1 | 0x00000 ~ 0x003FF: 中断向量表(1024B) |
0xA0000 ~ 0xBFFFF(128KB):显存
1 | 0xA0000 ~ 0xAFFFF: EGA/VGA/XGA/XVGA图形视频缓冲区(64KB) |
0xC0000 ~ 0xFFFFFF(128KB):BIOS运行内存
1 | 0xC0000 ~ 0xC7FFFF: 显卡bios使用(32KB) |
硬盘
硬盘结构
物理结构
硬盘有机械和固态,存储介质和读写方式不同,但是都逻辑化为柱面(磁道)、磁头和扇区。硬盘扇区默认大小512B,空间分配一般按簇分配(多个扇区为一组簇)。
$硬盘容量=磁头数柱面数扇区数*512B$
文件结构
主要包括NTFS、FAT32、FAT16、exFAT等。不同操作系统的文件系统兼容性不同,如FAT32最大文件4G,但是win10镜像超过4G。FAT32本身理论上文件分配表的文件大小没有限制,但是却人为限制了大小。
逻辑结构
硬盘结构:硬盘内部有MBR(Master Boot Record主引导记录)、以及多个分区,每个主分区也有自己的PBR(分区引导记录)。一个MBR硬盘最多4个主分区(可通过其他方法创建逻辑分区),可标记为活动分区
MBR
MBR大小512B,位于0柱面、0磁头、1扇区,包括:主引导程序(446B)、硬盘分区表DPT(64B)、MBR结束标志AA55(2B)
- 主引导程序:如GRUB,是执行操作系统引导的程序,用汇编实现,可以自己写然后刻录到iso中
- 分区表DPT:一个分区16B空间
偏移 | 长度 | 内容 |
---|---|---|
00 | 1 | 主分区状态标志 00非活动,80活动 |
01 | 1 | 主分区起始磁头号(最大256个磁头) |
02 | 2 | 前5位起始扇区号,后10位起始柱面号 |
04 | 1 | 文件系统标志,常见FAT12:01,FAT16:04或06,NTFS:07 |
05 | 1 | 主分区结束磁头号 |
06 | 2 | 前5位结束扇区号,后10位结束柱面号 |
08 | 4 | 主分区起始相对扇区号 |
0c | 4 | 主分区总扇区数 |
- 结束标志AA55
PBR
每个主分区都有自身的PBR分区引导记录,详细参考
- 跳转指令(3B):跳转至引导代码
- 厂商标识和DOS版本号(8B)
- BPB:BIOS参数块
- 操作系统引导程序
- 结束标志AA55
引导详细过程
- boot加载
按下开机,CPU供电,执行0x0FFFF0H指令(跳转指令),跳转到BIOS程序入口地址 - 执行BIOS程序
- Power-On Self Test BIOS对硬件自检
- 自检完毕后,执行显卡、IDE等BIOS,检查PCIE、SATA等设备,如果检查有问题例如不兼容(b85主板+3代CPU无法兼容P104显卡),BIOS检查不通过,不能亮机
- BIOS显示画面,可以设置引导顺序和CSM等操作
- BIOS加载首位硬盘的MBR到内存,控制权转交MBR引导程序
- MBR从查找分区表找到活动分区表,将活动分区的分区引导记录加载到内存,控制权转交PBR引导程序(启动管理器)
- 加载操作系统
引导考试简单过程
- CPU通电,boot跳转
- 通电自检
- 启动BIOS
- 加载MBR
- 加载PBR、加载启动管理器
- 加载操作系统
BIOS程序在内存最开始的空间构建中断向量表和相应服务程序,在后续POST过程中要用到中断调用等功能。 然后进行通电自检POST (Power-on Self Test)以检测硬件是否有故障。 CPU检测到中断信号后,根据中断号查询中断向量表,跳转到相应的中断处理程序。