CentOS 5与6的启动流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 5与6的启动流程相关的知识,希望对你有一定的参考价值。
Linux主要组成部分:kernel+rootfs+库+程序
kernel(内核):进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等
rootfs(根文件系统):glibc(库文件)等
库:函数集合,function,调用接口
procedure:过程调用,无返回值
function:函数调用,有返回值
内核设计流派:
单内核设计:所有功能集成于同一个程序中。例如:Linux
微内核设计:每种功能使用给一个单独子系统实现。例如:windows,solaris
Linux内核特点:
支持模块化: .ko
支持模块的动态装载和卸载
Linux内核组成部分:
核心文件:/boot/vmlinux-VERSION-release
ramdisk:辅助装载硬盘驱动
centos5:模拟成硬盘/boot/initrd-VERSION-resease.img
centos6:模拟成文件系统/boot/initramfs-VERSION-resease.img
模块文件:/lib/modules/VERSION-release/
CentOS 5 系统启动流程
POST --> Bootsequence(Bios) --> bootloader(MBR)--> kernel(ramdisk) --> rootfs(只读) --> /sbin/init --> (/etc/inittab) --> 设置默认运行级别 (id:3:initdefault:) --> 运行系统初始化脚本、完成系统初始化(si::sysinit:/etc/rc.d/rc.sysinit) --> 关闭和启动对应级别写需要关闭的服务(l#:#:wait:/etc/rc.d/rc #) --> 设置登录终端(tty1:2345:respawn:/usr/sbin/mingetty tty1)
(1) POST:加电自检
(2) BIOS:Basic Input and Output System
Boot Sequence:按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到的设备;
(3) bootloder:引导加载器
Linux包含两个bootloder,分别为LILO(LInux LOader)和 GRUB(Grand Uniform Bootloader)
功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
(4) kernel:(加载根时必须为只读方式,在系统初始化脚本/etc/rc.d/rc.sysinit中重挂)
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统(rootfs只读)
运行用户空间的第一个应用程序:/sbin/init
init程序的类型:
SysV:init (CentOS5中使用,配置文件:/etc/inittab)
Upstart:init (CentOS6中使用并兼容centos5,配置文件:/etc/inittab,/etc/init/*.conf)
systemd:systemd (centos7配置文件:/usr/lib/systemd/system,/etc/systemd/system)
ramdisk类型:
ramdisk:initrd (centos5系统安装后由mkinitrd生成
ramfs:initramfs (centos6系统安装后后由dracut生成)
(5) /sbin/init
运行级别:为了系统的运行或维护等应用目的而设定
0-6:
# 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)
0:关机
1:单用户模式(root,无需登录),single,维护级别
2:多用户模式:会启动网络功能,但不会启动NFS,维护模式
3:多用户模式:正常模式,默认为文本界面
4:预留级别:可同3级别
5:多用户模式:正常模式:图形界面
6:重启
切换级别:init #
查看级别:runlevel,who -r
配置文件:/etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
...
l6:6:wait:/etc/rc.d/rc 6
每一行定义一种action以及与之对应的process
id:runlevel:action:process
action:
wait:切换至此级别运行一次
respawn:此process终止,就重新启动之
initdefault:设定默认运行级别:process省略
sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit
...
note:rc 0-->意味着读取/etc/rc.d/rc0.d/[K*|S*]
K*:K##*
S*:S##* 链接文件,源文件位于/etc/rc.d/init.d/
##:数字越小越优先,取决于服务的依赖关系
按次序终止K开头服务,启动S开头服务
for srv in /etc/rc.d/rc0.d/K*;do
$srv stop
done
for srv in /etc/rc.d/rc0.d/S*;do
$srv start
done
chkconfig:管理服务
--list :查看所有服务在所有级别的on/off状态
--add name:添加SysV类型放置于/etc/rc.d/init.d(/etc/init.d)的服务脚本
--del name :删除
--level ### name on/off/reset:修改指定级别的链接类型
--level:省略为2345
7个级别的S或K取决有服务脚本中的chkconfig行
#!/bin/bash
#
#chkconfig:LLL NN nn
LLL:哪个级别为S(0-6)
NN:S中的次序
nn:K中的次序
NOTE:正常级别下,最后启动的一个服务S99local不是链接至/etc/rc.d/init.d的一个服务脚本,而是指向于/etc/rc.d/rv/local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d目录,且有想开机自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中
tty1:2345:respawn:/usr/sbin/mingetty tty1
tty2:2345:respawn:/usr/sbin/mingetty tty2
tty3:2345:respawn:/usr/sbin/mingetty tty3
tty4:2345:respawn:/usr/sbin/mingetty tty4
tty5:2345:respawn:/usr/sbin/mingetty tty5
tty6:2345:respawn:/usr/sbin/mingetty tty6
mingetty会自动调用login程序
tips:
/etc/rc.d/rc.sysinit:系统初始化脚本
(1) 设置主机名
(2) 设置欢迎信息
(3) 激活udev和selinux
(4) 挂载/etc/fstab文件中定义的文件系统
(5) 检测根文件系统,并以读写方式重新挂载根文件系统(内核挂载为只读模式,此处需重新挂载)
(6) 设置系统时钟
(7) 激活swap设备
(8) 根据/etc/sysctl.conf文件设置内核参数
(9) 激活lvm及software raid设备
(10) 加载额外设备的驱动程序
(11) 清理操作
CentOS 6的系统启动过程与5大致相同,但其init程序为upstart,其配置文件为/etc/inittab,/etc/init/*.conf,并非单个的/etc/inittab文件。
[[email protected] init]# ll
total 68
-rw-r--r--. 1 root root 412 Apr 9 2015 control-alt-delete.conf
-rw-r--r--. 1 root root 130 Mar 12 2014 init-system-dbus.conf
-rw-r--r--. 1 root root 463 Apr 9 2015 kexec-disable.conf
-rw-r--r--. 1 root root 560 Apr 9 2015 plymouth-shutdown.conf
-rw-r--r--. 1 root root 357 Apr 9 2015 prefdm.conf
-rw-r--r--. 1 root root 505 Apr 9 2015 quit-plymouth.conf
-rw-r--r--. 1 root root 417 Apr 9 2015 rc.conf
-rw-r--r--. 1 root root 1046 Apr 9 2015 rcS.conf
-rw-r--r--. 1 root root 430 Apr 9 2015 rcS-emergency.conf
-rw-r--r--. 1 root root 725 Apr 9 2015 rcS-sulogin.conf
-rw-r--r--. 1 root root 2915 Nov 23 2013 readahead-collector.conf
-rw-r--r--. 1 root root 1559 Nov 23 2013 readahead.conf
-rw-r--r--. 1 root root 726 Nov 23 2013 readahead-disable-services.conf
-rw-r--r--. 1 root root 1302 Apr 9 2015 serial.conf
-rw-r--r--. 1 root root 791 Apr 9 2015 splash-manager.conf
-rw-r--r--. 1 root root 473 Apr 9 2015 start-ttys.conf
-rw-r--r--. 1 root root 335 Apr 9 2015 tty.conf
[[email protected] init]#
本文出自 “机智少年普朗克” 博客,谢绝转载!
以上是关于CentOS 5与6的启动流程的主要内容,如果未能解决你的问题,请参考以下文章