CentOS启动大致流程:
POST –> BootSequence –> Bootloader –> kernel –> rootfs –> switchroot –> /sbin/init –> (/etc/inittab;/etc/init/*.conf) –> 设定默认运行级别 –> 系统初始化脚本 –> 关闭或启动对应级别下的服务 –> 启动终端
-
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测 。
- ROM(服务器没有):BIOS ,Basic Input and Output System ,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
- RAM :CMOS 互补金属 氧化物半导体,保存各项参数的设定按次序查找引导设备,第一个有引导程序的设备为本次启动设备
-
BootLoader: 引导加载器,引导程序
- windows: ntloader ,仅是启动OS
-
Linux :功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
- LILO :LInux LOader
-
GRUB: GRand Unified Bootloader
版本:GRUB 0.X: GRUB Legacy,GRUB2
-
MBR:整个硬盘的第一个扇区
446: bootloader, 64: 分区表, 2: 55AA -
GRUB:
primary bootloader : 1st stage ,1.5 stage
secondary bootloader :2nd stage ,配置文件:/boot/grub/grub.config <– /etc/grub.conf
-
kernel:
自身初始化:- 探测可识别到的所有硬件设备
- 加载硬件驱动程序(借助于ramdisk 加载驱动)分3个地方存放所有的驱动。
-
以只读方式挂载根文件系统
/boot/initramfs-… 安装操作系统的时候生成,存放挂载根需要的文件系统 - 运行用户空间的第一个应用程序:/sbin/init
-
rootfs:
库(glibc)- 函数集合,function,接口调用
- 过程调用:procedure
- 函数调用:function
涉及内容
init程序类型:
-
SysV:init,CentOS 5
配置文件:/etc/inittab -
Upstart:init,CentOS 6
配置文件:/etc/inittab;/etc/init /xxx.conf -
systemd(仿照IOS):systemd,CentOS 7
配置文件:/usr/lib/systemd/system;/etc/systemd/system
ramdisk:
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
- ramdisk –> ramfs 提高速度
-
CentOS 5: /boot/initrd-VERSION-release.img
工具程序:mkinitrd -
CentOS 6 ,7: /boot/initramfs-VERSION-release.img
工具程序:mkinitrd, dracut
内核设计
-
单内核设计:所有功能集成于一个程序,效率高,安全性低。
例如:Linux -
微内核设计:每种功能使用一个单独子系统实现,效率低,安全性高。
例如:Windows,Solaris
Linux系统运行级别(CentOS 5 为例)
0:关机
1:单用户模式(root,无需登录),single,维护模式
2:多用户模式,启动网络功能,不启动NFS(维护模式)
3:多用户模式,正常模式。
4:同3,暂无用。
5:多用户模式;图形界面
6:重启
切换级别:init 0-6 查看级别:runlevel ; who -r
-
配置文件:/etc/inittab (每一行定义一种action)
-
格式:id:runlevel:action:process
-
attion:
wait:切换至次级别运行一次
respawn:此process终止,重新启动之
initdefault:设定默认运行级别;process省略
sysinit:设定系统初始化方,此处一般指定/etc/rc.d/rc.sysinit
-
attion:
-
例:
l0:0:wait:/etc/rc.d/rc 0
l1:2:wait:/etc/rc.d/rc 1
…
-
格式:id:runlevel:action:process
相关服务
-
查看服务在所有级别的启动或关闭设定情形(chkconfig命令)
chkconfig –list
chkconfig — level 3 NetworkManager off
SysV的服务脚本放置于/etc/rc.d/init.d(/etc/init.d) -
添加: chkconfig — add name
删除:chkconfig –del name
修改:chkconfig –level LLLL name on -
正常级别下,最后启动的服务 S99local 没有连接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此不便或不需要写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中。
-
查看:
ll /etc/rc.d/rc3.d/S99local
cat /etc/rc.d/rc.local
-
查看:
原创文章,作者:kstg5663294,如若转载,请注明出处:http://www.178linux.com/80139