Linux操作系统的引导过程:开机自检、mbr引导、grub菜单、加载linux内核、init进程初始化。
1.开机自检,检测硬件后根据启动顺序将控制权交给本机硬盘
2.mbr引导,根据硬盘的主引导记录,将控制权转交给引导分区或者启动菜单
3.grub菜单,启动菜单提供给用户选择进入不同的操作系统(例如windows)的界面。默认进入linux将系统控制权转交给内核。
4.加载linux内核,内核负责分配调度硬件资源与系统程序,内核接过系统控制权,开始管理整个Linux系统。
5.init进程初始化,内核首先将/sbin/init此进程对应的PID号总是为1。程序加载到内存中运行。init进程负责完成系统初始化过程:
(1).读取配置文件/etc/inittab
(2).根据配置文件判断启动级别,后执行/etc/rc.d/rc.sysinit
(3).通过脚本文件/etc/rc.d/rc N控制不同启动级别启动哪些程序和服务
(4).最后系统会运行/sbin/mingetty指令打开一个新的终端程序
[[email protected] ~]# cat /etc/inittab
# inittab This file describes how the INIT processshould set up
# the system in a certainrun-level.
# Author: Miquel van Smoorenburg,<[email protected]>
# Modified for RHS Linux by Marc Ewingand Donnie Barnes
# Default runlevel.The runlevels used by RHS 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: -----------------初始化系统后进入的默认运行级别
# Systeminitialization.
si::sysinit:/etc/rc.d/rc.sysinit--------------- 系统初始化的操作脚本(启动级别为空就是全部级别)
l0:0:wait:/etc/rc.d/rc0 --------------- init进程等待该内容的所有脚本执行完毕后再继续其他
l1:1:wait:/etc/rc.d/rc1
l2:2:wait:/etc/rc.d/rc2
l3:3:wait:/etc/rc.d/rc3
l4:4:wait:/etc/rc.d/rc4
l5:5:wait:/etc/rc.d/rc5 --------------- 内容为该启动级别所需执行的各个服务的启动脚本
l6:6:wait:/etc/rc.d/rc6
# TrapCTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tellsus power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, ofcourse, assume you have powerd installed and your
# UPS connected andworking correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System ShuttingDown"
# If power wasrestored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; ShutdownCancelled"
# Run gettys instandard runlevels
1:2345:respawn:/sbin/mingettytty1 --------------- 以重生的形式反复开启一个终端
2:2345:respawn:/sbin/mingettytty2
3:2345:respawn:/sbin/mingettytty3
4:2345:respawn:/sbin/mingettytty4
5:2345:respawn:/sbin/mingettytty5
6:2345:respawn:/sbin/mingettytty6
# Run xdm in runlevel5
x:5:respawn:/etc/X11/prefdm–nodaemon
------------------------------------------------------------------------------------------------------------
以上为/etc/inittab 文件中的内容其中#开头的为注释信息。其余内容每一行记录中的四个字段分别代表:
x : 5 : respawn : /etc/X11/prefdm –nodaemon
id : runlevels : action : process
| | | |
标记 运行级别 动作类型 程序脚本
#init q ------------- 如文件改动可以重新读取inittab配置
#cat /etc/rc.d/rc.sysinit ------------ 系统初始化脚本,完成包括设置网络、主机名、加载文件系统、设置时钟、检测文件系统等一系列初始化工作
#vim /etc/rc.d/rc.local ------------ 在级别为2、3、4、5的启动脚本执行后会执行该脚本,可以手动在其中添加一些命令,做为系统启动后执行的自定义命令。例如:
#echo ‘/sbin/hwclock --hctosys’ >> /etc/rc.d/rc.local -------- 根据真实机的bios时间,更新自己的系统时间
系统服务控制:
各个服务的控制脚本的存放路径为/etc/rc.d/init.d/目录中
可以通过两种方法对服务程序进行控制
方法1:#service 服务名称 控制类型
方法2:/etc/init.d/服务名称 控制类型
控制类型分为:stop(启动)|stop(停止)|restart(重启)|reload(重载)|status(查看状态)
例如:#/etc/init.d/sshd start ----------- 开启远程ssh协议
以上两种方法无法再下次启动系统后生效。其中reload(重载)可以在服务不停止的情况下对服务的配置进行更新。
切换运行级别:
#runlevel -------------- 查看上一次的运行级别以及当前的运行级别
#init 3 -------------- 切换运行级别为字符型界面其中级别6为重启级别0为关机
优化开机自动加载过程:
字符界面可以通过两种方法进行优化
方法1:#ntsysv --------------- 在字符界面下开启一个图形话交互界面,来选择当前运行级别可以设置的启动服务。如果要对其他运行级别进行调整可以加选项和参数。例如:
#ntsysv –level 35 ------------ 设置启动级别为3和5的启动服务带星号的为启动不带星号的为不启动通过空格键来选择是否启用。
方法2:#chkconfig –list ------------用来查看服务在各个启动级别的启动情况
#chkconfig –list sshd ------- 用来查看sshd服务在不同的启动级别的启动情况
#chkconfig –level 345 sshd on/off ---------用来控制345启动级别中sshd服务是否被启用