1、Introduction开机启动过程分为以下6个步骤,分别是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition
2、BIOS按下电源开关那一刻,开始加载BIOS,并且执行MBR(Master Boot Record)BIOS表示基本输入输入系统(Basic Input/Output System),完成一些系统的完整性检查、搜索、加载并且执行引导程序(boot loader), 它在软盘,CD-ROM或者硬盘上寻找引导程序。你可以在系统启动时按下键盘(通常是F12或者F2,但是因系统而异)来修改启动顺序一旦引导程序被检测到并且加载到内存,BIOS会将控制权移交给它
3、MBRMBR表示主引导记录(Master Boot Record)用于加载并执行GRUB
4、GRUBGRUB是多重引导管理器(GRand U艘绒庳焰nified Bootloader)执行 /etc/grub.conf, 加载内核镜像vim /etc/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-504.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_ddz-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_ddz/lv_root crashkernel=128M.UTF-8 rd_LVM_LV=vg_ddz/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-504.el6.x86_64.img
5、Kernel执行内核首个进程 /sbin/init, 进程号为1, 是接下来所有其它进程的父进程initrd表示Initial RAM Diskinitrd被内核用作临时的根目录,直到内核启动完成并且真正的根目录挂载成功。它也包括一些编译好的必要的驱动程序,这些程序有助于它访问硬盘和其他硬件
6、Init执行 /etc/inittab, 来确定启动尽谮惋脑级别vim /etc/intttab # Default runlevel. The run造婷用痃levels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode (终端模式) # 4 - unused # 5 - X11(图形用户界面) # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault:执行 /etc/rc.d/rc.sysinit, 来启动系统进程,比如说NetWork
7、RunLevel执行启动级别相对应的一系列系统服务对应启动级别的目录如下ll /etc/rc.d/drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc0.d drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc1.d drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc2.d drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc3.d drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc4.d drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc5.d drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc6.d
8、RunDefinition最后执行 /etc/rc.d/rc.loca盟敢势袂l, 来运行自定义的服务vim /etc/rc.d/rc.local1 #!/bin/sh 2 # 3 # This script will be executed *after* all the other init scripts. 4 # You can put your own initialization stuff in here if you don't 5 # want to do the full Sys V style init stuff. 6 7 touch /var/lock/subsys/local 8 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then 9 echo never > /sys/kernel/mm/transparent_hugepage/enabled 10 fi 11 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then 12 echo never > /sys/kernel/mm/transparent_hugepage/defrag 13 fi 14 15 /bin/bash /usr/local/apps/kylin/bin/kylin.sh start其中第15行为自定义启动脚本