Linux操作系统启动流程步骤

1、Linux系统启动流程图

2、Linux系统启动步骤简介

  1. BIOS/开机自检

    物理机电源开启,计算机首先会加载BIOS信息,因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等,接下来就会启动读取各个硬件设备。

  2. 读取MBR

    读取完BIOS信息后,接下来计算机系统找到BIOS所指定的硬盘的MBR(主引导记录)后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到计算机,就是lilo或者grub。

  3. Boot Loader引导

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

    Boot Loader有Grub、Lilo和spfdisk等若干种常见的Loader,Grub用的人居多。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

  4. 加载Kernel

    根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出"Uncompressing Linux"的提示。当解压缩内核完成后,屏幕输出"OK, booting the kernel"。

    系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

  5. 加载Inittab运行等级

    内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

    其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,有rc0-rc6共7个不同的运行级别。Linux的运行等级设定如下:

    0:关机

    1:单用户模式

    2:无网络支持的多用户模式

    3:有网络支持的多用户模式

    4:保留,未使用

    5:有网络支持有X-Window支持的多用户模式

    6:重新引导系统,即重启

  6. Init进行执行rc.sysinit

    在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

  7. 启动内核模块

    读取/etc/modules.conf文件及/etc/modules.d目录下的文件来加载系统内核模块。该模块文件,可以后期添加或者修改及删除。

  8. 执行运行级别程序

    根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中以S开头表示系统即将启动的程序,如果以K开头,则代表停止该服务。S和K后紧跟的数字为启动顺序编号。

  9. 执行/etc/rc.d/rc.local文件

    操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令,如果想要开机启动程序可以添加到这个文件中来。

  10. 执行/bin/login程序

执行/bin/login程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到Shell终端,输入用户名、密码即可登录Linux操作系统,至此Linux操作系统完整流程启动完毕。

猜你喜欢

转载自www.cnblogs.com/pangchangfeng/p/9270683.html