1.BIOS阶段
计算机在按下开机键后,首先运行的是BIOS程序,BIOS首先进行加电自检,完成对系统的全面检查。确保核心组件如CPU、主板、内存、串并口、磁盘等正常运行。这一检测经常被称为post或power on selftest。
完成加电自检后,BIOS所做的第二项工作就是设备初始化。
然后,BIOS将根据用户所指定的引导次序,按照顺序选择引导设备。在选择了合适的引导设备后,BIOS会把引导设备第一个数据块载入内存,并把执行权移交给它。
2.引导加载程序阶段
第一个数据块所记载的是主引导记录(MBR),共512个字节。包括:引导加载程序(Boot Loader)(前446个字节,如GRUB等)、磁盘分区表(DPT,Disk Partition Table)、分区有效性标志(55AA)。引导加载程序负责加载启动硬盘分区中的操作系统。
Linux系统中的引导程序有以下3个作用:
1)编写合适的内核命令行;
2)装载合适的初始虚拟磁盘(简称initrd);
3)装载合适的linux内核并移交控制权给它。
引导程序在设计上通常包括两个阶段:
第一阶段,第一阶段的引导程序通常很小,适合存放在MBR中(因为只有446个字节)。第一阶段引导程序的任务是:定位、装载并把控制权传递给第二个阶段的引导程序,这个程序在文件系统中是看不到的;
第二阶段,第二阶段的引导程序通常就是引导程序自身,它在启动时就运行了某种形式的应用程序,能够读取有关默认设置的配置信息。第二阶段引导程序通常是文件系统中可以识别的二进制文件。
3.内核运行阶段
Linux内核文件都是以压缩格式存放的,在上一步骤成功完成后,Linux内核被加载至内存中,内核文件首先完成自解压,并在ramdisk文件的帮助下,内核拥有了访问磁盘及文件系统等基本设备的驱动程序。随后内核在完成探测可识别的硬件设备并加载相应驱动,以只读方式加载根文件系统等操作后,内核就可以启动位于磁盘上的第一个应用程序init,进而完成系统的初始化。
参考文献:
- 冯冬艳.Linux操作系统GRUB故障的识别与修复[J].山西电子技术,2018,{4}(06):53-55.
- 王士刚.Linux系统的启动过程研究[J].科技传播,2011,{4}(24):184+191.