Linux操作系统启动流程
无论Windows还是Linux操作系统,启动之前都会对硬件进行检测,之后硬盘引导启动操作系统,下面是与启动系统相关的几个概念。
BIOS
基本输入输出系统 是一组固化到计算机主板上的只读内存镜像芯片上的程序,主要功能是为计算机 提供最底层的最 直接的硬件设置和控制。
MBR
全新硬盘在使用之前必须进行分区格式化,硬盘分区初始化的格式主要有两种,分别为MBR 格式和GPT 格式。
如果使用MBR 格式,操作系统将创建主引导记录扇区,主要功能是操作系统对磁盘进行读写时,判断分区的合法性以及分区引导信息的定位。在MBR 硬盘中,硬盘分区信息直接存储于主引导记录中,同时主引导记录还存储着系统的引导程序。
GPT
在GPT 硬盘中,分区表的位置信息储存在GPT 头中。出千兼容性考虑,第一个扇区同样有一个与MBR 类似的标记,叫作受保护的主引导记录,作用是当使用不支持GPT 的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏,而其中存储的内容和MBR 一样,之后才是GPT 头。GPT 优点支持2TB 以上磁盘,MAC 、Linux 系统都能支持GPT 分区格式, Windows 7 /8 64位,Windows Server 2008 64 位支持GPT 。
GRUB
GNU 项目的多操作系统启动程序(GRand unified bootloader, GRUB), 可以支持多操作系统的引导,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。它是一个多重操作系统启动管理器。
Linux 操作系统启动流程
初学者对Linux 操作系统启动流程深入理解,能有助于后期在企业中更好地维护Linux 服务器,能够快速定位系统问题,进而解决问题。Linux 操作系统启动流程如图所示。
1 . 加载BIOS
计算机电源加电质检,首先加载基本输入输出系统,包含硬件CPU,内存,硬盘等相关信息,设备启动顺序信息,硬盘信息,内存信息,时钟信息等。加载完BIOS 信息,计算机将根据顺序进行启动。
2. 读取MBR
读取完BIOS 信息,计算机将会查找BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c00地址所在的物理内存中。被复制到物理内存的内容是bootloader, 然后进行引导。
3. GRUB 引导
GRUB启动引导器是计算机启动过程中运行的第一个软件程序, 当计算机读取内存中的GRUB 配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。
4. 加载kernel
计算机读取内存映像,并进行解压缩操作,屏幕一般会输出"Uncompressing Linux" 的提示,当解压缩内核完成后,屏幕输出''OK, booting the kernel" 。系统将解压后的内核放置在内存之中,并调用start_kernel () 函数来启动一系列的初始化函数并初始化各种设备,完成Linux 核心环境的建立。
5. 设定inittab 运行等级
内核加载完毕,会启动Linux 操作系统第一个守护进程init, 然后通过该进程读取/etc/inittab,/etc/inittab 文件的作用是设定Linux 的运行等级。
6. 加载rc.sysinit
读取完运行级别,Linux 系统执行的第一个用户层文件/ etc/rc. d/rc.sysinit, 该文件功能包括设定path运行变量、设定网络配置、启动swap 分区、设定/ proc 、系统函数、配置SELinux 等。
7. 加载内核模块
读取/etc/modules.conf文件及/etc/modules.d 目录下的文件来加载系统内核模块。
8. 启动运行级别程序
根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d 中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中以S 开头表示系统即将启动的程序,如果以k 开头,则代表停止该服务。
9. 读取rc.local 文件
操作系统启动完相应服务之后, 会读取执行/ etc/rc. d/ rc.loca l 文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。
10. 执行/ bin/ login 程序
执行/ bin/login 程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到shell 终端,如图所示,输入用户名、密码即可登录Linux 操作系统,至此Linux操作系统完整流程启动完毕。