linux启动流程 (1)

启动流程一览:

1.加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备

2.读取并执行第一个启动设备内MBR的boot loader(也就是grub,spfdisk等程序)

3.依据boot loader的设置加载kernel,kernel会开始检测硬件与加载驱动程序

4.在硬件驱动成功后,kernel会主动调用init进程,而init会取得run-level信息

5.init执行/etc/rc,d/rc.sysinit文件来准备软件执行的操作环境

6.init执行run-level的各个服务的启动(script)

7.init执行/etc/rc.d/rc/local文件

8.init执行终端机模拟程序mingetty来启动login进程,最后等待用户登陆。


BIOS与MBR:

由于我们系统软件大多放置在硬盘,所以bios会制定起懂得设备好让我们可以读取磁盘中的操作系统内核文件,但由于不同的操作系统的文件系统格式不同,因此我们必须要以一个引导装载程序来处理内盒文件加载(load)的问题,因此这个引导程序成为boot loader,而这个程序是安装在第一个扇区也就是MBR中,而BIOS是通过硬件的INT13这条信道来读取MBR的。


Boot loader功能:

安装windows和linux双系统时,每个系统都有自己的boot loader,而系统的MBR只有一个,那该如何安装呢?

其实每个系统都会保留一块引导扇区提供操作系统安装boot loader,也就是每个系统都会默认安装一套boot loader到它自己的文件系统中,在linux安装时,可以选择将boot loader安装到MBR中,也可以不安装,而在windows安装时,默认会主动将MBR与boot sector都装一份boot loader。

boot loader功能:1.提供菜单:用户可以选择不同的启动选项,这也是多重引导的重要功能。2.加载内核文件:直接指向可启动的程序区段来开始操作系统。3.转交其他loader:将引导装载功能转交给其他loader负责。

在安装双系统时,要先安装windows再安装linux:

原因在于windows的loader默认不具有控制权转交的功能,因此你不能使用windows的loader来加载linux的loader,因此要后安装linux,保证linux的boot loader覆盖windows的。


加载内核检测硬件与initrd的功能

linux会将内核解压缩到内存当中,并利用内核的功能,测试与驱动各个周边设备,内核文件一般放置在/boot下,/boot/vmlinuz

虚拟文件系统:initialRAM DIsk,

一般使用的文件名是/boot/initrd,这个文件的特色在于,也能够通过boot loader来加载到内存中,然后这个文件会被解压缩并在内存中仿真成一个根目录,并且能够提供一个可执行的程序,通过该程序来加载启动过程中所最需要的内核模块,通过这些模块就是USB,RAID等文件系统与磁盘接口的驱动程序。


第一个进程init:

在内核加载完毕进行完硬件检测和驱动程序加载后,此时你的主机硬件已经准备就绪,此时内核会主动调用第一个进程,/sbin/init,最主要的功能就是准备软件执行的环境,包括系统 的主机名、网络设置等,而所有的操作都会通过init的配置文件,/etc/inittb来规划,而inittab内还有一个很重要的设置选项,那就是默认的run level(启动执行等级)。

run level 执行等级

0  halt(系统直接关机)

1 single user mode(单用户维护模式,用在系统出问题时维护)

2 multi user without NFS

3 full multi user mode

4 unused

5 x11 加载使用x window

6 reboot 重启


posted on 2016-07-21 16:11  sichenzhao  阅读(110)  评论(0编辑  收藏  举报

导航