千家信息网

学习笔记之centos系统启动流程

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,CentOS 系统的启动流程:简介:(内核级别)POST -读取-> BootSequence(在BIOS中) --> BootLoader(在MBR中)--> Kernel(借助ramdisk完成根
千家信息网最后更新 2025年01月21日学习笔记之centos系统启动流程

CentOS 系统的启动流程:

简介:

(内核级别)POST -读取-> BootSequence(在BIOS中) --> BootLoader(在MBR中)--> Kernel(借助ramdisk完成根文件系统的加载)--> rootfs(readonly)--> /sbin/init (用户空间的第一个程序)接下面

(用户空间的启动流程): /sbin/init (读取/etc/inittab) 【centos5,6,7在此略有区别】

设置默认运行级别(1) --> 运行系统初始化脚本,完成系统初始化(2) -->关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务(3)--> 设置登录终端(4) [--> 启动图形终端](5并非必须的)

细说内核级别的系统启动:

POST:加电自检;

ROM:CMOS(互补金属氧化物)

BIOS:Basic Input and Output System(基本输入输出系统)

ROM+RAM

Boot Sequence:

按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备;

bootloader:引导加载器,程序;

Linux:

LILO:LIinux LOader

GRUB:Grand Uniform Bootloader(统一引导加载器

GRUB 0.X:Grub Legacy(centos5)

GRUB 1.X:Grub2(centos7)

引导加载器的功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本; 把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核;

bootloader装载到哪里呢?装载到MBR中(UEFI除外)

附加介绍MBR:Master Boot Record(主引导记录)

MBR一共512bytes:

前446bytes:放bootloader

64bytes:fat (分区表)

2bytes:55AA 魔数(如果是55AA表示MBR有效)

加载Kernel:

自身初始化:

探测可识别到的所有硬件设备;

加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)

以只读方式挂载根文件系统;

运行用户空间的第一个应用程序:/sbin/init

注:内核init启动之后,后面的任务就交给init,内核就不管了(除了有特权操作)

init程序的类型:

CentOS 5-:SysV init

配置文件:/etc/inittab

CentOS 6:Upstart

配置文件:/etc/inittab

/etc/init/*.conf

CentOS 7:Systemd

配置文件:/usr/lib/systemd/system/, /etc/systemd/system/

注:centos启动,内核运行用户空间的第一个应用程序init,之后后面的一切任务都交由用户空间的应用来管理了。

Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问;

ramdisk -换成-> ramfs(是一种提速机制)

对CentOS 5ramfs: initrd

可由工具程序创建:mkinitrd

CentOS 6,7: initramfs

工具程序:dracut, mkinitrd

总结:内核级别的系统初始化如下:

系统初始化流程(内核级别):

POST -读取-> BootSequence(在BIOS中) --> BootLoader(在MBR中)--> Kernel(借助ramdisk完成根文件系统的加载)--> rootfs(readonly)--> /sbin/init (用户空间的第一个程序)

注:bootloader代码量很小,为了简化简洁期间2,bootloader本身无法驱动逻辑卷,那么很显然他就没办法访问逻辑卷上的文件,因此我们把内核文件放在逻辑卷上bootloader是无法加载的,所以,此时的kernal只能放在基本磁盘上


上面为centos内核级别的启动

======================================================================================

下面介绍/sbin/init:在各系统上有所差异,所以分别介绍

也即用户空间的系统启动流程

CentOS 5: SysV init

基础掌握:

运行级别:为了系统的运行或维护等目的而设定的机制;

0-6:7个级别;

0:关机, shutdown

1:单用户模式(single user),root用户,无须认证;维护模式;

2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;

3、多用户模式(mutli user),完全功能模式;文本界面;

4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;

5、多用户模式(multi user), 完全功能模式,图形界面;

6、重启,reboot

默认级别:3, 5

级别切换:init #

级别查看:

who -r

runlevel

配置文件:/etc/inittab

每行定义一种action以及与之对应的process(centos5)

id:runlevels:action:process

id:一个任务的标识符;

runlevels:在哪些级别启动此任务;#,###,也可以为空,表示所有级别;

action:在什么条件下启动此任务;

process:任务;

action:

wait:等待切换至此任务所在的级别时执行一次;

respawn:一旦此任务终止,就自动重新启动之;

initdefault:设定默认运行级别;此时,process省略;

sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;

例如:

id:3:initdefault: (默认运行级别为3)

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

示例:/etc/rc.d/rc 3

意味着去启动或关闭 /etc/rc.d/rc3.d目录下的服务脚本所控制服务,解释如下:

K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;

S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;

rc脚本功用:接受一个运行级别数字为参数;

rc脚本框架:

for srv in /etc/rc.d/rc#.d/K*; do

$srv stop

done

for srv in /etc/rc.d/rc#.d/S*; do

$srv start

done

目录/etc/init.d/* (/etc/rc.d/init.d/*)下脚本执行方式:


# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}

# service SRV_SCRIPT {start|stop|restart|status}

eg:[root@bucktan init.d]# /etc/init.d/network restart

Shutting down interface eth0: [ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

Bringing up interface eth0: Determining if ip address 172.18.26.6 is

chkconfig命令:管控/etc/init.d/每个服务脚本在各级别下的启动或关闭状态;

查看:chkconfig --list [name]

添加:chkconfig --add name表示"name"受chkconfig管理

能被添加的服务的脚本定义格式之一:

#!/bin/bash

#

# chkconfig: LLL(级别) NN(启动优先级) NN(g关)

# description:

删除:chkconfig --del name

修改指定的链接类型:

chkconfig [--level LEVELS] name

--level LEVELS:指定要控制的级别;默认为2345;


注意:正常级别下,最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local (/etc/rc.local)脚本;因此,不便或不需写为服务脚本的程序期望能开机自动运行时,直接放置于此脚本文件中即可。

其他示例: tty1:2345:respawn:/usr/sbin/mingetty tty1

... ...

tty6:2345:respawn:/usr/sbin/mingetty tty6

表示:当我们级别是2345中的任何一种时,会运行mingetty程序,这个程序又是打开终端的

(1)mingetty知识启动终端,对于登录,mingetty会调用登录login程序;从而login程序调用登录

(2)打开虚拟终端的程序除了mingetty之外,还有诸如getty等;

系统初始化脚本:/etc/rc.d/rc.sysinit是做什么,它的功能

注:此脚本是学习脚本的好例子

(1) 设置主机名;

(2) 设置欢迎信息;

(3) 激活udev和selinux;

(4) 挂载/etc/fstab文件中定义的所有文件系统;

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;

(6) 设置系统时钟;

(7) 根据/etc/sysctl.conf文件来设置内核参数;

(8) 激活lvm及软raid设备;

(9) 激活swap设备;

(10) 加载额外设备的驱动程序;

(11) 清理操作;

总结(用户空间的启动流程): /sbin/init (读取/etc/inittab)

设置默认运行级别(1) --> 运行系统初始化脚本,完成系统初始化(2) -->关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务(3)--> 设置登录终端(4) [--> 启动图形终端](5并非必须的)

注:centos6,7与5的区别在下面介绍

CentOS 6:

init程序:upstart,但依然为/sbin/init,其配置文件:

/etc/init/*.conf, /etc/inittab(仅用于定义默认运行级别)

注意:*.conf为upstart风格的配置文件;

rcS.conf

rc.conf

start-ttys.conf


CentOS 7:

init程序:systemd,配置文件:/usr/lib/systemd/system/*, /etc/systemd/system/*

完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl命令来控制服务;

# systemctl {start|stop|restart|status} name[.service]

至此centos系统启动介绍完


级别 系统 文件 程序 脚本 服务 内核 用户 运行 空间 任务 模式 终端 设备 配置 功能 流程 方式 登录 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 军队网络安全预防措施 疫情数据排查数据库建立 关于软件开发的职业分析 下载服务器安全不 平板电脑 可以运行数据库 用友软件的数据库在哪里 天佑网络技术有限公司 软件开发的长期目标 徐州app软件开发多少钱 杭州市神舟网络技术有限公司 河田中心小学网络安全平台 301医院合同工网络安全怎么样 适合工艺员使用的数据库软件 苏州无线网络技术管理系统 大同数字币量化交易软件开发费用 此网络安全证书存在问题 服务器IP111开头 定点医疗机构医保医师数据库动态维护 网络安全证书标记 怎么发邮件给邮箱服务器 优化服务器明日之后 数据库安全性控实验答案 服务器cpu的发展趋势 怎么用PC机管理服务器 广州卓越互联网科技有限公司 集中式数据库技术 全国dns服务器地址 工业网络技术属于哪个专业 网络安全管理工作范围 2008服务器图片上传错误
0