Linux启动过程
Linux系统引导过程简图
开机自检:
服务器开机后,将根据主板的BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步探测,探测成功后将控制权交由硬盘控制。
MBR引导(446):
当硬盘接到控制权后,将系统根据MBR分区表,查找系统引导文件所在的分区,或者直接根据MBR记录中的引导信息调用启动菜单。
GRUB菜单:
GRUB是一个多系统的引导菜单,如果安装了双系统可以在这里选择进入那个操作系统,然后加载内核文件,将控制权转交给内核。
加载Linux内核:
内核接过控制权以后,将进行驱动的初始化,并且以只读方式挂载根文件系统,装载第一个进程init(PID:1)
INIT进程的初始化:
INIT进程负责完成一系列的系统初始化过程:配置文件/etc/inittab,根据配置内容首先执行初始化脚本文件/etc/rc.d/rc.sysinit,并通过脚本文件/etc/rc.d/rc控制应该启动那些程序和服务,最后运行终端程序/sbin/mingetty,等待用户登录。
GRUB介绍
GRUB分为三个阶段
阶段一:装在MBR中,为了引导第二阶段
阶段1.5:引导常见的文件系统
阶段二:引导操作系统
GRUB配置文件位于/etc/grub
default=0 //设置默认启动的title的编号 timeout=5 //等待用户选择的超时时常 splashimage=(hd0,0) /boot/grub/splash.xpm.gz //指定grub背景图片的 hiddenmenu //隐藏菜单 password 密码 // 添加密码 password --md5 $1$la77x1$Tdm1FD2adjRf7VdufZqlS0 //设置加密密码 title Red Hat Enterprise Linux Server (2.6.18-92.el5) //内核标题或操作系统标题,可自由修改 root (hd0,0) //内核文件所在的设备:对grub而言,所有类型的硬盘一律hd;第一个0表示第几个磁盘;最后一个0表示对应磁盘的分区 kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet //内核文件路径,及传递给内核的参数 initrd /boot/initrd-2.6.18-92.el5.img //ramdisk文件路径
生成grub加密的密码串,将密码串放入grub文件中可以访问其他人查看grub密码
[root@localhost sbin]# grub-md5-crypt Password: Retype password: $1$la77x1$Tdm1FD2adjRf7VdufZqlS0
如果GRUB损坏,或被误删除,那么就需要重新安装GRUB
安装grub第一阶段
grub命令打开grub
root (hd0,0) 指定内核磁盘
setup (hd0) 指定安装磁盘
安装grub的第二种方式
grub-install --root-directory=/内核所在路径的父目录(不需要输入boot目录,会自动寻找) 指定硬盘
比如需要将grub安装到/test/boot下
grub-install --root-directory=/test/ /dev/sdb
如果GRUB被删除后无法进入操作系统
grub> find //如果有多块磁盘可以使用find探测根在那里
grub>root (hd#,N) //指定根所在的磁盘
grub>kernet /PATH/TO/KERNEL_FILE //指定内核文件路径
grub>initrd /PATH/TO/INITRD_FILE //指定initrd文件路径
grub>boot //启动系统
启动系统后创建一个grub文件,下次在启动系统就不需要手动输了
INIT介绍
init定义的
运行级别
0:关机
1:单用户模式,直接登录管理员,不用输入密码
2:多用户模式,网络功能,禁用nfs文件系统
3:字符界面的多用户模式,大多数服务器主机运行在此级别
4:保留,级别
5:图形多用户,终端模式
6:关机
当init程序运行后,将按照/etc/inittab文件指定的配置依次启动系统中对应的脚本和程序。
在/etc/inittab文件中,除了以#号开头的注释信息和空行外,没一行都视为一条有效配置记录。每条配置记录中的四个字段之间使用“:”进行分割。
格式如下:
id:runlevels:action:process
id: 标识符,需唯一
runlevels: 在哪个级别运行此行;
action: 在什么情况下执行此行;
process: 要运行程序; 可以是具体的命令、脚本程序等
action字段可用参数说明
initdefault:设置初始化后系统默认进入的运行级别
sysinit:设置系统初始化的操作脚本
wait:init进程将等待该行配置所对应的脚本操作完成后,在继续执行其他操作
ctrlaltdel:设置当用户按下Ctrl+Alt+Delete组合键后的操作
powerfail:设置当系统收到断电信号(使用不间断电源)时采取何种操作
powerokwait:设置当系统收到恢复供电信号时采取何种动作
respawn:一旦该行配置所对应的进程被终止,则重新启动该进程
rc.sysinit脚本文件
rc.sysinit是init进程所调用的系统初始化脚本,位于/etc/rc.d/目录下,通过次脚本可以完成以下操作
/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文件;
rc脚本文件
rc脚本同样由init进程调用,文件位于/etc/rc.d/rc。rc脚本通过使用不同的级别参数,分别加载及终止不同的系统服务,进入相应的系统级别中。
[root@localhost ~]# cat /etc/inittab | grep "rc.d/rc" si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6
/etc/rc.d/rc 0到/etc/rc.d/rc 6目录中,保存了一些特殊的符号链接文件,rc脚本根据这些链接文件调用对应的服务控制程序,进行启动或终止相关服务程序的操作。
/etc/rc.d/rcX.d目录下的文件具有以下规律。
文件名以K或S开头,中间是数字序号,最后是系统中的服务脚本名;
对与rc脚本来说,当链接文件的名称以S开头时,表示启动对应服务,而以K开头时表示终止对应的服务,中间的数字表示在启动或终止时执行的顺序。
本文出自 “梅花香自苦寒来” 博客,请务必保留此出处http://wangjunkang.blog.51cto.com/8809812/1564207
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。