一些概念:
扇区:计算机读取硬盘的时候,不是一个字节一个字节的读取,而是一次读取512字节。每512个字节就称为一个扇区。
启动程序IPL:操作系统的大小远超过512个字节,而且不固定。所以在硬盘的第一个扇区中放入一个启动程序,其主要作用就是加载硬盘中的操作系统到内存。这个启动程序就是BootLoader。几乎所有的操作系统都把加载自己的程序放在硬盘的第一个扇区。
BIOS:基本IO处理系统程序,开始时会首先运行此程序,会完成一些列的功能,包括自检,加载BootLoader等。这个程序代码是常驻内存的,例如有的主板中会有一块烧入BIOS 程序的只读ROM。当开机时,计算机会首先运行BIOS。
操作系统的启动过程:
1.以Intel80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0开始执行指令。这个地址上只存放了一条跳转指令,CPU通过跳转指令跳转到BIOS程序的起点。BIOS完成硬件自检和初始化后,会选择一个启动设备,并且读取该设备的第一个扇区(即主引导扇区或启动扇区)到内存中的固定地址0x7C00处。
2.程序计数器指向0x7C00,系统运行BootLoader,把操作系统加载到内存中。
3.程序计数器指向操作系统在内存中的首地址,系统运行操作系统。
BootLoader实践:
这里有一个很好的教程,有安装虚拟机的步骤