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系统最后执行的一个脚本,不是特别麻烦的操作,不希望做成服务的可以在这里声明。
转载于:https://blog.51cto.com/soulboy/1266162