1,centos启动过程中前半段启动流程图:
2.对流程的具体介绍:
内核设计流程:
单内核设计:linux
把所有功能集成于同一个程序
微内核设计:Windows , Solaris
每种功能使用一个单独子系统
linux内核特点:
支持模块化:*.ko
支持模块的动态装载和卸载:
组成部分:
核心文件:/boot/vmlinuz-VERSION-release
ramdisk: 基于内存的磁盘
centos5:/boot/initrd-VERSION-release.img
centos6:/boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release
centos 系统启动流程
(1)POST:加点自检
根据ROM:CSOM
BIOS:Basic Ipot and Output System
(2)BOOT Sequence:引导程序
按次序查找各个引导设备,第一个有引导程序的设备即为本次启动用到设备:
BootLoader:引导加载器,程序 作用:找到操作系统所在的分区把内核加载到内存中并且把控制权正常转交给内核。
windows:ntloader
linux: LILO:linux LOadeer
GRUB:GRand Uniform Bootloader
功能:提供一个菜单,允许用户选择要启动系统的或不同内核版本;把用户选定的内核装载到内存中的特定空间中,解压,展开,并把系统控制权移交给内核;
MBR:
446:bootloader
64:fat
2:55AA
GRUB:
bootloader :lst stage
disk : 2nd stage
kernel:
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序:(有可能会借助于randisk加载驱动)
以只读的方式挂在根文件系统
运行用户空间的第一个程序:/sbin/init
init程序的类型:
SysV:init,Centos 5
配置文件:/etc/inittab
Upstart: init,centos6
配置文件:/etc/inittab, /etc/init/*.conf
Systemd:systemd, centos7
配置文件:/user/lib/systemd/system , /etc/systemd/system
ramdisk:
内核的特性之一是:使用缓冲来回应对磁盘上的文件访问:
ramdisk --> ramfs(现用)
centos5:initrd,工具程序:mkinitrd
centos6:initramfs, 工具:mkinitrd ,dracut
3.对init文件的具体介绍
/sbin/init
centos 5:
运行级别:为了系统的运行或者维护等应用目的而设定
0-6 : 7个级别
0:关机
1:单用户模式(root,无需登录),single,维护模式
3:多用户模式,正常模式,文本界面
4:预留级别,可用3级别
5:多用户模式,正常模式,图形界面
6:重启
默认级别:3-5
切换级别:init #
查看级别:runlevel who -r
配置文件:/etc/inittab
每一行定义一种action以及与之对应的process
id:runlevel:action:process
action:
wait:等待:切换至次级别运行一次
respawn:重新启动 ,终止就重新启动
initdefault;设定默认运行级别:processs省略:
sysinit:设定系统初始化方式,此处一般指定/etc/rc.d/rc.sysinit;
id:3:initdefault
si::sysinit:/etc/rc.d/rc.sysinit
chkconfig命令:
查看服务在所有级别的启动或关闭设定情形
chkconfig [--list] [name]
添加:
SysV的服务脚本放置于/etc/rc.d/init.d(/etc/init.d)
chkconfig --add name :添加服务别添加的服务文件必须包好以下语句:
#!/bin/bash
#
#chkconfig:LLL nn nn
删除:chkconfig --del name
修改指定的连接类型:
chkconfig [--leve leves] name <on|off|reset>
--level LLL:指定要设置的级别:省略时表示2345:
注意:正常级别下,最后启动的一个服务S99local没有连接至/etc/rc.d/init.d一个服务脚本,而是值相同为了/etc/rc.d/rc/local脚本,因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,又想开机自动运行的命令,可以直接放置于/etc/rc.d/rc.local文件中;
4./etc/rc.d/rc.sysinit:系统初始化
(1)设置主机名
(2)设置欢迎界面
(3)激活udev和selinnx
(4)挂载/etc/fstab文件中定义的文件系统
(5)检测跟文件系统,并以读写方式重新挂载根文件系统
(6)设置系统时钟
(7)激活swap设备
(8)根据/etc/sysctl.conf文件设置内核参数
(9)激活lvm及软raid设备
(10)清理操作
总结:/sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始化脚本,完成系统初始化 --> 关闭对应下需要关闭的服务 ,启动需要启动的服务-->设置登录终端