POST->BIOS(Boot Sequence)->MBR(bootloader,446bytes)->Kernel(initrd)->(rootfs)/sbin/init

1、加电自检(PowerOnSelfTest)

开机自动映射rom中程序到cpu可以寻址的空间中,cpu执行指令检查基本硬件是否正常

2、BIOS(Boot Sequence)

如果正常则按照CMOS中保存的BootSequnece依次寻找对应设备上的MBR

3、MBR(BootLoader)

读取第一个MBR存在的设备中的BootLoader,并交与其控制权。

Linux下的常见BootLoader有两种:

   LILO: LInux LOader    不能引导1024柱面以后的分区内核(嵌入式)

   GRUB: GRand Unified Bootloader

GRUB是个程序,装在MBR的BootLoader当中来引动操作系统,但因为MBR空间有限,无法展示其特性,所以将GRUB分为2阶段程序

Stage1(被装载MBR当中)          主要目的是为了引导第二阶段

Stage1.5(/boot/grub/Stage1_5)  识别常见不同类型的文件系统

Stage2(/boot/grub/Stage2)      引导操作系统(突破了446字节的限制)

                              并借助配置件/boot/grub/grub.conf

/boot/grub/grub.conf配置文件作用

default=0#    设定默认启动的title编号

timeout=5#    等待用户选择的超时时长

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz    grub的背景图片

hiddenmenu    隐藏菜单

passwordredhat    定义明文密码

password --md    定义密文密码 生成密文命令grub-md5-crypt修改grub需要密码

title Red Hat Enterprise Linux Server (2.6.18-238.el5)    内核标题或操作系统标题

root (hd0,0)    内核文件所在设备所有硬盘类型一律为hd(磁盘,分区)

kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

               内核文件路径,以及传递内核的参数cat /proc/cmdline

password --md      定义密文密码 生成密文命令grub-md5-crypt 启动此内核需要密码

initrd /initrd-2.6.18-238.el5.img    ramdisk文件路径;操作系统安装最后一步生成的

4、Kernel

设备探测

驱动初始化(可能会从initrd(RHEL6 initramfs)文件中装载驱动模块)

   向内核提供基本驱动能力,此后内核可以访问根文件系统,等待内核丰满之后,逐渐失去作用

以只读挂载根文件系统

装载第一个进程init

5、init(etc/inittab)

/sbin/init    其配置文件(etc/inittab)

   RHEL6.0    upstart    ubuntu    开源项目    并行启动很多进程/etc/init/

   systemd                                  更加快

/etc/inittab    主要任务

   1、设定偶人运行级别

   2、运行系统初始化脚本

   3、运行制定运行级别目录下的脚本

   4、设定Ctrl+Alt+Del组合键的操作

   5、定义UPS电源在电源故障/恢复时执行的操作

   6、启动6个虚拟终端(2345级别)

   7、启动图形终端(5级别)

id:runlevels:action:process

   id标示符

   runlevels在那个级别运行此行

   action什么情况下执行此行

       initdefault设定默认运行级别

       sysinit系统初始化

       wait等待级别切换至次级别时执行

       respawn一段程序终止再重新启动

       ctrlaltdel重启

       powerfail停电

       powerokwait电又来了

   process要运行的程序

si::sysinit:/etc/rc.d/rc.sysinit    主要功能

   1、激活udev和selinux

   2、根据/etc/sysctl.conf文件,来设定内核参数

   3、设定时钟时钟

   4、装载键盘映射

   5、启用交换分区

   6、设置主机名

   7、根文件系统检测,并以读写方式重新挂载

   8、激活RAID和LVM设备

   9、启用磁盘配额

   10、根据/etc/fstab,并检查挂载其他文件系统

   11、清理过期的锁和PID文件

/etc/rc.d/rc.local系统最后执行的一个脚本,不是特别麻烦的操作,不希望做成服务的可以在这里声明。