0%

Linux操作系统-(5) Linux启动流程

Linux

5. Linux启动流程

概括描述linux系统从开机到登陆界面的启动过程

1.开机BIOS自检

2.MBR引导

3.grub引导菜单

4.加载内核

5.启动init进程

6.读取inittab文件执行rc.sysinit、rc等脚本

7.启动mingetty进入系统登录界面

下面将对这些内容详细介绍。

5.1 POST开机自检

电脑主机打开电源的时候,随后会听到滴的一声响,系统启动,开始了开机自检POST-power on self。

Test自检开始这个过程中,主要是检测计算机硬件设备,比如CPU内存、主板、显卡等设备是否有故障存在。如果有硬件故障的话,对于严重故障(致命性故障)则停机。

5.2 加载BIOS并读取设置

计算机加电自检完成后,第一个读取的地方就是就是BIOS(Basic Input Output System,基础输入输出系统)。BIOS里面记录了主机板的芯片集与相关设置,如CPU与接口设备的通信频率、启动设备的搜索顺序、硬盘的大小与类型、系统时间、外部总线、各种接口设备的I/O地址、已经与CPU通信的IRQ中断信息,所以启动如果要顺利启动首先要读取BIOS设置。

5.3 读取MRB

按BIOS设定的系统启动流程,检测通过则根据引导次序(Boot Sequence)开始在第一台设备上支持启动程序。我们的启动设备主要包括硬盘、usb、sd等。我们一般用的是硬盘,然后进行读取第一个设备就是硬盘;第一个要读去的就是该硬盘的主引导记录MBR(Master Boot Record),然后系统可以根据启动区安装的引导加载程序Boot Loader开始执行核心识别的工作。

硬盘上第0柱面0磁道1扇区被称为MBR,也就是Master Boot Record,即主引导记录它的大小是512字节里面存放了预启动信息、分区表信息及分区标志等。分为两部分第一部分为(PRE-BOOT)引导区,占了446个字节第二部分为分区表(PARTITION PABLE),共66个字节记录硬盘的分区信息(其中前64字节是分区表信息后2个字节是分区结束的标志)。

预引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到Linux系统那就是grub了。

5.4 Boot Loader加载Grub程序。

Boot Loader就是在操作系统内核运行之前运行的一小段程序。通过这小段程序我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

5.5 内核初始化

根据Grub内的定义grub读取完毕后,就把下面的工作交给内核了。kernel主要是完成系统硬件探测及硬件驱动的初始化,并且以读写的方式挂载根文件系统。

kernel初始化所要工作的内容做下简单总结:探测硬件->加载驱动initrd)->挂载根文件系统->rootfs(/sbin/init)

5.6 init进程依据inittab文件来设定运行级别

内核被加载后,内核空间的任务开始向用户空间转移。内核空间通过一个间接的initrd(微型linux)向用户空间的/sbin/init过渡,所以gurb开始引导内核转向initrd。

initrd会读取/etc/inittab文件并依据此文件来进行初始化工作。

5.7 init进程执行rc.sysinit

在设定了运行等级后linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序。它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。

5.8 启动内核模块

具体是依据/etc/modules.conf或/etc/modules.d目录下的文件来装载内核模块。

5.9 执行不同运行级别的脚本程序

根据运行级别的不同系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

5.10 执行/bin/login程序启动mingetty,进入登录状态

系统已经进入到了等待用户输入username和password的时候了,可以用自己的账号登入系统了。到此为止linux系统启动全部完成。

下图是对上面所有步骤的总结:


本文由『后端精进之路』原创,首发于博客 http://teckee.github.io/ , 转载请注明出处

搜索『后端精进之路』关注公众号,立刻获取最新文章和价值2000元的BATJ精品面试课程

后端精进之路.png