透彻的了解Linux启动流程是非常关键的知识点,只有了解了这部分内容,才会在Linux出现系统级别的错误时能够非常冷静的面对以及快速的排错。
Linux启动流程
第一阶段

- BIOS不是操作系统的职责范围
- BIOS是硬件的功能,属于firmware
- BIOS存储于ROM,不需要强电就可以实现数据保存
- 更改BIOS如启动顺序保存在一种特定的RAM中,为了保证断电后实际更改保存,通过BIOS上加电池来解决
- 在BIOS可以选择启动顺序(硬盘,光盘,网络等)
- 如果选择BIOS从硬盘启动,硬盘的必须是MBR分区,相应的支持的硬盘最大为2TB
- 替代BIOS的是UEFI(Unified Extensible Firmware Interface),通常配合硬盘分区类型GPT,支持最大硬盘8ZB
- 一旦BIOS找到硬盘MBR分区中的引导程序bootloader,就把后续工作转交给bootloader
第二阶段

- bootloader把内核加载到内存
- 但凡读取了一个设备的MBR,如果MBR中的bootloader损坏,无法正常启动,操作系统不会再去读第二个设备的MBR,这也正是由于bootloader损坏,我们需要更改BIOS的启动顺序从光盘启动去修复硬盘中bootloader的原因
- 一旦Kernel装载完毕,Bootloader退出工作,把后续的工作交给Kernel.
Bootloader详解:
Bootloader是一个程序,不属于任何的操作系统,但是由操作系统安装时提供。常见的有微软的ntloader。Linux有两种常用的bootloader:
- LILO:大于8G的硬盘不支持,在嵌入式系统中常用
- GRUB:GRand Unified Bootloader,目前有两个主流版本grub-0.97和grub2-2.02,下图就是在安装Linux过程中创建bootloader的过程

第三阶段

- 内核Kernel要执行/sbin/init,就必须能够先访问根文件系统,因为在Linux下,文件系统从根/目录开始,就是根文件系统rootfs
- Linux是单内核结构
- 内核本身要尽可能的小,因为内核是常驻内存的,同时内核要尽可能多的支持各种类型的硬件,通过模块化的设计.ko来实现内核模块的动态装载和卸载。
Linux启动流程简介以及各启动阶段失败的恢复方法
原文:https://www.cnblogs.com/liangjindong/p/9018979.html