linux系统启动流程

    在linux系统中,启动流程主要可分为五个阶段

一、开始

二、初始化BIOS

三、加载主引导加载程序(MDR)

四、加载次引导加载程序(GRUB)

五、linux内核映像

六、init进程{rc.sysinit→rc→rc.local}

七、结束

    计算机在启动后首先会进行BIOS的加电自检,检测计算机的硬件设备,然后按照CMOS的设置顺序搜索处于活动状态并且可以引导的设备。

    GRUB是linux默认的引导加载程序,其引导过程又可以分为启动主引导加载程序(MDR)和启动次引导加载程序(GRUB)。所以,这个过程可以分为两个阶段来完成。第一阶段是保存在MBR中的主引导加载程序的加载,MBR中的主引导加载程序是一个512字节大小的映像,其中包含有机器的二进制代码和一个小分区表。主引导加载程序的任务就是查找并加载保存在硬盘分区上的次引导加载程序,他通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备读入内存中并运行。然后,系统会进入引导加载程序的第二阶段。第二阶段的次引导加载程序也就是内核加载程序,这个阶段的任务是加载linux内核。当该阶段完成后,便会显示GRUB的图形界面,在该界面中用户可以通过上下方向键选择需要加载的操作系统以及他们的内核,并且,GRUB的配置主要通过修改/boot/grub/grub.conf文件来完成。

    当用户选择启动linux操作系统后,GRUB会根据/boot/grub/grub.conf配置文件中所设置的信息,从/boot所在的分区上读取linux内核映像,然后把内核映像加载到内存中并把控制权交给linux内核。linux内核获得控制权后,将会按一下步骤继续引导系统。

    1)内核映像首先会检测系统中的硬件设备,包括内存、CPU、硬盘等,并对这些设备进行初始化并配置。

    2)内核映像是经过压缩的。接下来他要对自身进行解压,同时加载必要的设备驱动。

    3)初始化于文件系统相关的虚拟设备。

    4)装载根文件系统(/),把根文件系统挂在到根目录下。

    5)完成引导后,linux内核会在其进程空间内加载init程序,并把控制权交给init进程,由init进程继续完成接下来的系统引导工作。

    init进程是linux系统所有进程的起点,内核在完成内核引导后,便会加载init进程,进程号为1,init进程启动后,会初始化操作系统,并启动特定的运行级别下的自动运行程序。init进程对应的执行文件为/sbin/init,他是系统中所有进程的发起者和控制者。所有的进程都是由它所衍生。

    当init进程获得控制权后,它首先会执行/etc/rc.d/rc.sysinit脚本,根据脚本中的代码配置环境变量、配置网络、启用SWAP、检查并挂在文件系统、执行其他系统初始化所必须的步骤

   

你可能感兴趣的:(二进制,程序,的)