centos7启动过程及systemd详细说明
开机启过程
POST—>BOOT SEQUENCE—> BOOTLOADER—>KERNEL + INITRAMFS(INITRD)—>ROOTFS—>/sbin/init
POST:加电自检
当开机按下电源按钮后,计算机开始加电,主板上的BIOS或UEFI基本输入输出程序开始对硬件进行检查,检查内存,CPU等等吧,当检测到错误的时候机器会中断或者启动不了,这个做过电脑维护的人都知道,内存氧化可导至开不了机,还有的机器如果没插鼠标键盘自检也不会通过卡在那里了,不会继续往下走。
Boot sequence:选择引导顺序
当自检通过后,接着就要选择引导介质或方式,是通过光盘启动,硬盘启动,网络启动,还是U盘启动,这些也是在BIOS中设定的,所以设定的第一启动项是哪个就从那个开始引导,这个装过WINDOWS的都很熟悉了。
Bootloader:引导加载器
确定引导介质后便开始从介质中装载引导程序如grub2,这个是一个微小程序,我们知道MBR引导记录大小为512字节,其中前446个字节就是Bootloader,主要用来引导用户选择要启动的系统或不同的内核版本,把用户选定的内核装载到RAM中的特定空间中,解压,展开,而后把系统控制权移交给内核。
grub2就是Linux中Bootloader程序,由于MBR记录限制,所以grub2分为两个部分:
1.在MBR引导记录中,大小为446字节,主要功能是引导启动介质的grub主体文件
2.partition,/boot/grub[2],此为grub的主体。
KERNEL + INITRAMFS(INITRD)—>ROOTFS :加载内核
这时候kernel开始初始化,探测可识别的硬件设备,加载硬件启动程序。以只读方式加载根文件系统
kernel在内存中加载时,为了模拟系统环境,会生成一个ramdisk文件,来进行下一步操作,等到加载到真正的根文件系统时,就会退出ramdisk,切换到真正的根文件系统中去。
ramdisk:内存上临时虚拟的系统
ramdisk(虚拟磁盘,双缓冲,双缓存)----> ramfs(虚拟文件系统)
centos5:initrd
工具程序:mkinitrd
centos6,7:initramfs
工具程序:dracut,mkinitrd
/sbin/init:运行用户空间的第一个应用程序
init:
Centos 5: SysV init 配置文件:/etc/inittab
Centos 6: Upstart 配置文件:/etc/inittab;/etc/init/*.conf(主要)
Centos 7: systemd 配置文件:/etc/systemd/system;/usr/lib/systemd/system
至此,内核空间就已经启动完毕,内核启动完成接着开始启动用户态启动过程。systemd是个守护进程,pid号为1,后面所有启动的服务或进程都是systemd的子进程及子进程的子进程。
那么用户态的启动顺序又是什么样的呢?
设置默认允许级别—>初始化脚本,完成系统初始化--->关闭及启动对应级别下的服务----->设置登录终端----->[启动图形终端]
Systemd新特性:
系统引导时实现服务并行启动,没有顺序之分
按需激活进程
支持系统状态快照
基于依赖关系定义服务控制逻辑
关键特性:
基于socket的激活机制:socket与服务程序分离;按需激活程序或服务,可并行启动
基于bus的激活机制:
基于device的激活机制:当某个硬件设备变得可用时就可激活某设备
基于path的激活机制
系统快照:保存各unit的当前状态信息于持久存储设备中
向后兼容sysv init脚本
不兼容:
systemctl命令固定不变,非由systemd启动的服务,systemctl无法与之通信
核心概念:unit
配置文件进行标识和配置,文件中主要包含了系统服务,监听socket,保存的系统快照以及其它与init相关的信息,保存至:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system
unit的类型
Service unit:文件扩展名为.service 无需执行权限,用于定义系统服务
Target unit:文件扩展名为.target,用于模拟实现“运行级别”
Device unit:文件扩展名为.device,用于定义内核识别的设备
Mount unit:文件扩展名为.mount,定义文件系统挂载点
Socket unit:文件扩展名为.socket,用于标识进程间通信用的socket文件
Snapshot unit:文件扩展名为.snapshot,管理系统快照
Swap unit:文件扩展名为.swap,用于标识swap设备
Automount unit:文件扩展名为.automount,文件系统的自动挂载点
Path unit:文件扩展名为.path,用于定义文件系统中的一个文件或目录
管理系统服务
启动:systemctl start name.service
停止:systemctl stop name .service
重启:systemctl restart name.service
重载:systemctl reload name.service
条件式重启:systemctl try-restart name.service
查看某服务当前是否运行:systemctl is-active name.service
查看所有已经激活的服务:systemctl list-units –type service systemctl list-units –type service –-all
开机自启动:systemctl enable name.service
开机不启动:systemctl disable name.service
查看所有服务开机自启动状态:systemctl list-unit-files –-type service
查看服务是否开机自启:systemctl is-enabled name.service
查看服务的依赖关系:systemctl list-dependencies name.service
禁止设定为开机自启:systemctl mask name.service
取消禁止设定为开机自启:systemctl unmask name.service
Target units:(模拟运行级别)
unit配置文件,以.target后辍名结尾
关机:runlevel0.target,poweroff.target
救援:runlevel1.target,rescue.target
多用户:multi-user.target
图形:graphical.target
重启:reboot.target
级别切换:systemctl isolate name.target
查看级别:systemctl list-units –-type target systemctl get-default
设置级别:systemctl set-default name.target
切换至紧急救援模式:systemctl rescue
切换至emergency模式:systemctl emergency(服务不加载不启动,驱动不加载,更彻底)
其它常用命令
关机:systemctl halt,systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hybrid-sleep
参考阅读
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
centos7启动过程及systemd详细说明的更多相关文章
- centos7启动过程及systemd祥细说明
开机启过程 POST->BOOT SEQUENCE-> BOOTLOADER->KERNEL + INITRAMFS(INITRD)->ROOTFS->/sbin/ini ...
- SpringMVC 原理 - 设计原理、启动过程、请求处理详细解读
SpringMVC 原理 - 设计原理.启动过程.请求处理详细解读 目录 一. 设计原理 二. 启动过程 三. 请求处理 一. 设计原理 Servlet 规范 SpringMVC 是基于 Servle ...
- 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程
<一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...
- Centos7启动流程及systemd中Nginx启动配置
Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主 ...
- hadoop namenode启动过程详细剖析及瓶颈分析
NameNode中几个关键的数据结构 FSImage Namenode 会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操 ...
- RAID磁盘阵列及CentOS7启动流程
1. 磁盘阵列 1.1 RAID,磁盘阵列磁盘通过硬件和软件的形式组合成一个容量巨大的磁盘组,提升整个磁盘的系统效能:RAID常见类型: RAID类型 最低磁盘个数 空间利用率 各自的优缺点 级别 说 ...
- linux系统的启动过程简要分析
接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下 ...
- Linux的启动过程及init进程
Linux下有三个特殊进程: idle进程(pid=0)idle进程其前身是系统创建的第一个进程,0号进程,也唯一一个没有通过fork()或者kernel_thread产生的进程,由系统自动创建,运行 ...
- CentOS7 Tomcat 启动过程很慢,JVM上的随机数与熵池策略
1. CentOS7 Tomcat 启动过程很慢 在centos启动官方的tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的: <co ...
随机推荐
- composer修改成国内镜像
因为composer安装包数据是从github.com上下载的,安装包的元数据从packagist.org上下载 作为两个国外的网站,连接速度会很慢,而且很有可能网站被墙. 所以composer中国全 ...
- 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别
目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...
- ILMerge合并多个DLL (转)
最近在研究CodeDom,用到ILMerge 序言 如果你的项目要提供多个dll给别人用,那么不妨让你的dll合并为一个,让别人看起来简洁,引用起来不会过于繁琐. 本篇比较少,但也算是比较实用吧. 下 ...
- git(一) 基本操作
git简介 产生历史 git是目前世界上最先进的分布式版本控制系统. 2005年,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是git. git的两个特点 版本控制:可以解决多人同时 ...
- linux下mysql多实例安装
1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...
- 2018,ANG发展峰会惊喜来袭
区块链的分享——ANG发展峰会重大来袭!2018年10月28日 时至今日,区块链技术已经被越来越多的人所熟知.法国著名的高新公司——凡赛公司汇集世界区块链专家,斥巨资打造了行业领先的区块链技术团队,并 ...
- php intval 两位小数乘以100后结果少1
价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数intval() 这下子结果就不对了,如图: 结果: 可以 ...
- JAVA 根据设置的概率生成随机数
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...
- 第三视角Beta答辩总结
第三视角Beta答辩总结 博客链接以及团队信息 组长博客链接 成员信息(按拼音排序) 姓名 学号 备注 张扬 031602345 组长 陈加伟 031602204 郭俊彦 031602213 洪泽波 ...
- elasticsearch 使用快照进行备份
Elasticsearch也提供了备份集群中索引数据的策略——snapshot API.它会备份整个集群的当前状态和数据,并保存到集群中各个节点共享的仓库中.这个备份的进程是增量备份的,在第一次备份的 ...