熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程。

       开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用
寻找启动磁盘(boot disk) ,然后寻找寻找硬盘的第一个扇区(MBR  master boot record  主引导记录),如果主启动扇区没有存储操作系统,则寻找磁盘中标记被启动分区的第一个扇区中的操作系统,若在找不到则会/boot 目录下进行寻找,存储操作系统信息的空间只有446字节。

      找到操作系统内核之后载入内核,内核需要做的是检测硬件,驱动硬件,之后将以只读的方式挂载根文件系统(以只读的方式挂载最主要的目的就是为了安全),挂载的根文件系统至少包括以只读形式挂载根文件系统:/etc /bin /sbin /lib /dev,,然后挂载在根目录下的init服务,启动init服务系统寻找的过程:/sbin/init   /etc/init   /bin/init   若上述目录中没有找到则会给出一个/bin/sh  让我们自己手动输入init程序的位置,若没有找到导致系统启动不起来则会出现类似kernel......kill init这样的字样,这说明init程序没有找到。对应init的介绍下面将会详细介绍。
 

      然后分别启动初始化系统环境:/etc/rc.d/rc.sysinit   /etc/rc.d/rc   /etc/rc.d/rc.local

rc.sysinit 是系统初始化脚本,位于"/etc/rc.d/rc.sysinit",这是在inittab(下面将会说到)配置文件中预先设置好的。

rc.sysinit主要完成的工作如下:

启动udev和selinux子系统:udev负责管理 /dev中的设备文件,selinux可增强linux系统的安全性,selinux的配置文件位于 /etc/selinux/config  虽然可以增加安全性,但是不建议开启,开启selinux后会占用20%的系统资源。
设置内核参数:sysctl -p 可以重新加载内核,从/etc/sysctl.conf中加载内核参数
设置系统时间:将硬件时间设置为linux系统时间
加载键盘对应表:保证输入正确的字符
启动swap:swapon -a -e根据/etc/fstab的设置启动所有交换空间
设置主机名:/etc/sysconfig/network的HOSTNAME                                                       
检查挂载文件系统:以读写的形式挂载所有文件系统,以便写入数据
初始化硬件设备:试着驱动剩余的硬件设备
加载模块:根据/etc/modprobe.conf中的信息加载模块
ISA PnP硬件设备:ISA(总线) PnP(即插即用)
USB设备
启动软件磁盘阵列与LVM
卸载/initrd:节省系统资源
初始化串行端口设备:
清除过期的锁定文件:锁定文件的作用是为了保证只有一个实例运行。
重设磁盘参数:根据/etc/sysconfig/harddisk来设置磁盘参数
 

rc:同样由init进程进行调用,文件位于"/etc/rc.d/rc" rc脚本通过指定不同的级别参数分别加载及终止不同的系统服务,进入相应的系统运行级别。

rc.local

建立用户接口
建立虚拟控制台:/bin/login
建立图形接口:启动图形界面
 

管理init服务

管理init服务:建立系统使用环境 确保系统运行 监控周边设备 处理ctrl+alt+del PID恒为1 只能被重启不能被停止,重启命令如下

重启init服务
init q
kill -HUP 1
telinit q

配置init服务
/etc/inittab

ID:RUNLEVELS:ACTIONS:PROCESS
ID:init服务参数识别名称,由1-4个字符组成
RUNLEVELS:在哪个运行级别调用
ACTIONS:init服务执行程序的方法
PROCESS:执行文件的位置,必须为绝对路径


ID字段内容
id:定义linux默认运行级别
si:系统初始化要执行的程序
l0-l6:进入到不同的运行级别时,要执行的动作
ca:拦截到ctrl+alt+del事件系统要执行的工作
pf:电源失效的时候要执行的工作
pr:电源恢复的时候要执行的工作
N:如何启动第N个控制台
x:启动图

管理启动加载器
启动加载器的作用是用加载操作系统内核,并传递一些参数给内核
GRUB   LILO

grub的特性
修改配置文件后,不需要重新安装
可加密

e 编辑选择的项目
a 在启动操作系统前,修改启动参数
c 进入到grub的命令行模式
p 输入grub密码
enter 确认
esc 返回/不保存退出
o 新增一行设置
d 删除选择的设置
配置文件
/boot/grub/grub.conf
安装grub
grub-install /dev/hda   /dev/sda

第二种方法:

grub--root (hd0,0)-- setup(hd0)