Linux系统启动

一 启动过程概览 (keyword: BIOS,BOOTLOADER,KERNEL,INIT)

①加电自检,通过BIOS读取硬件信息,从而确定第一启动设备,找到BOOTLOADER(grub,lino)等

②BOOTLOADER加载内核,内核再次检测硬件与硬件驱动信息,为读取文件系统做准备

③内核调用INIT进程(PID=1),INIT 通过/etc/rc.d/rc.sysinit脚本准备初始化系统环境

④INIT执行许多后续所需要的服务进程(/etc/rc.d/init.d/*)并执行/etc/rc.d/rc.local用户的自定义脚本

⑤最后根据mingetty服务启动登录界面,系统启动完成

二 过程细看

1.第一阶段 BIOS(Basic Input Output System)

①加载CMOS中的硬件信息,并自检POST(Power-on Self Test),也即检测设备是否能正常启动

②读取BIOS中的启动设备

2.第二阶段BOOTLOADER

①硬盘的最前面的446Byte被用作MBR(Master Boot Record,主引导分区),其他各启动分区一般都有自己的BOOTLOADER,而MBR中可能有或没有

多重引导则是由于BOOTLOADER具有转交功能,可以转交给下一个BOOTLOADER处理;确定BOOTLOADER后,系统显示其所设置 的菜单,从而启动自家的内核

3.第三阶段KERNEL(/boot/vmlinuz-NUMBER.el5)

①内核与ramdisk(REDHAT6 ramfs)被加载,后者可以理解为前者的助手,是一个伪文件系统(只读),帮助内核读取文件系统的信息,实现内核自身的任务,如根据一些脚本配置基本服务

而后者对应文件/boot/initrd-NUMBER.el5.img

4.第四阶段INIT进程

① 由于前续的工作已经就位,系统开始创建INIT进程/sbin/init,关于init信息保存在/etc/inittab文件中,涉及到启动的服务,level等级与相应服务,很容易看明白,这里不介绍

备注几个运行level:0:(关机) 1(单用户模式) 2(无NFS的多用户模式) 3(多用户模式) 4(备用) 5(图形化界面) 6(重启)

②系统初始化

由于第一步是负责把level环境设置好,那么这一部分就是根据level环境设置系统初始化任务,/etc/rc.d/rc.sysinit,文件比较大,涉及很多基本服务和模块的添加,以读写重新挂载根文件系统,并挂载其他分区,网络设置,字体设置,raid或lvm初始化,是否启动selinux等。总之,这一步理解为初始环境的搭建,为大环境设置做好准备

③启动各项重要服务与加载模块

第二步初始化了基本的配置,那么这一步则是通过/etc/rc.d/rc N(N为①下的level)加载最重要的服务模块,rc是running-config的缩写,这些其实是链接文件,链接到/etc/rc.d/init.d/PATH/TO/SCRIPTS

chkconfig命令可以把一个SytemV风格的脚本或服务加载到模块的设置目录下,从而并为其自动在/etc/rc.d/rc N创建链接

④自定义服务的装载

文件在/etc/rc.d/rc.local本地自定义设置,自定义希望开机执行的脚本建议放在这

⑤提供登录界面

根据/etc/inittab或者/etc/init/*文件提供界面

至此,系统便可为正常用户所使用。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。