首页 > 代码库 > Linux系统启动过程
Linux系统启动过程
过程解说:
POST:在CPU的指挥下,将某个特殊硬件设备的内容加载到内存物理空间,不需要任何
额外指令,是硬件设备自带的。将系统自检所需要的BIOS程序加载到CPU可以查
找的物理地址空间。
BIOS(Boot Sequence)启动顺序。设定外部IO设备或存储设备哪一个作为默认找操作
系统或者系统所在的设备。决定了去那去找操作系统所在的位置。从上到下的顺序去
寻找启动设备的MBR。
MBR(Boot Loader,占据446字节)主要是Boot Loader工作。主要用于根据MBR中的分区表查找
活动分区,找到操作系统所在的分区,并将操作系统的kernel加载到内存。,然后将控制权交给
Kernel。Boot Loader一旦获得控制权,BIOS就退出。
bootloader(MBR)
LILO: LInux LOader:早期Linux使用的。但是不能引导1024柱面以后分 区的内核,所以不支持大硬
盘。8G以后的分区装内核的话,就无法引导
GRUB: GRand Unified Bootloader
Stage1: 装载在MBR内,主要为了引导Stage2
Stage1_5: 用来识别常见的不同类型的文件系统
Stage2: 位于/boot/grub/。这才是真正启动操作系统
使用
grub.conf
default=0 设置默认启动的title编号
timeout=5 等待用户等待的超时时间,单位为秒
splashimage=(hd0,0)/grub/splash.xpm.gz 指定北京图片
hiddenmenu 隐藏菜单,
titleCentOS 6 (2.6.32-504.el6.x86_64) <==当前主机上系统的内核标题或系统名称,字符串,可自由修改
root (hd0,0) 内核文件所在的设备,对于grub而言,所有类型硬盘一律为hd,格式为(hd#,n)#表示第几个磁盘,后面的0表示第几个分区
kernel /vmlinuz-2.6.32-504.el6.x86_64ro root=UUID=40c06d08-45d3-405e-87ed-fe6059a4b32f rd_NO_LUKS rd_NO_LVMLANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgbquiet 内核文件路径及传递给内核的参数,和/prco下的cmdline相同
initrd/initramfs-2.6.32-504.el6.x86_64.img ramdisk文件路径,操作系统安装完成最后一步生成的
Kernel:探测并加载硬件,完成后
Kernel初始化的过程:
1、设备探测
2、驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)
3、以只读挂载根文件系统;
4、装载第一个进程init(PID:1
/boot/initrd
作用一:在内存中释放供kernel使用的root filesystem
作用二:执行根文件系统中的/sbin/init进程
init
调用/etc/inittab
运行级别:0-6
0:halt
1: single user mode, 直接以管理员身份切入, s,S,single
2:multi user mode, no NFS
3: multi user mode, text mode
4:reserved
5: multi user mode, graphic mode
6: reboot
/etc/rc.d/rc.sysinit:OS初始化
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:系统最后执行的一个脚本;
/etc/inittab的任务:
1、设定默认运行级别;
2、运行系统初始化脚本;
3、运行指定运行级别对应的目录下的脚本;
4、设定Ctrl+Alt+Del组合键的操作;
5、定义UPS电源在电源故障/恢复时执行的操作;
6、启动虚拟终端(2345级别);
7、启动图形终端(5级别)
本文出自 “黑夜路人” 博客,请务必保留此出处http://kevinhao.blog.51cto.com/5204735/1606136
Linux系统启动过程