开机启过程

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

centos7启动过程及systemd祥细说明的更多相关文章

  1. centos7启动过程及systemd详细说明

    开机启过程 POST->BOOT SEQUENCE-> BOOTLOADER->KERNEL + INITRAMFS(INITRD)->ROOTFS->/sbin/ini ...

  2. 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程

    <一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...

  3. Centos7启动流程及systemd中Nginx启动配置

    Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主 ...

  4. RAID磁盘阵列及CentOS7启动流程

    1. 磁盘阵列 1.1 RAID,磁盘阵列磁盘通过硬件和软件的形式组合成一个容量巨大的磁盘组,提升整个磁盘的系统效能:RAID常见类型: RAID类型 最低磁盘个数 空间利用率 各自的优缺点 级别 说 ...

  5. Linux的启动过程及init进程

    Linux下有三个特殊进程: idle进程(pid=0)idle进程其前身是系统创建的第一个进程,0号进程,也唯一一个没有通过fork()或者kernel_thread产生的进程,由系统自动创建,运行 ...

  6. CentOS6与CentOS7的启动过程

    Linux启动流程CentOS6的启动流程Systemd概述Systemd初始化进程Systemd目标名称systemd服务管理 linux系统的组成:内核+跟文件系统 内核可实现以下功能:进程管理. ...

  7. 走进Linux之systemd启动过程

    Linux系统的启动方式有点复杂,而且总是有需要优化的地方.传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足的问 ...

  8. CentOS7 Tomcat 启动过程很慢,JVM上的随机数与熵池策略

    1. CentOS7 Tomcat 启动过程很慢 在centos启动官方的tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的: <co ...

  9. CentOS7中Tomcat的安装和配置以及启动配置tomcat。启动过程中的易错点

    Tomcat运行需要设置JRE目录,全局变量配置,请参见: Linux下JDK的安装和配置   当然也可以直接修改Tomcat的配置文件,请自行度娘   1.下载并解压 请先去官网找到需要下载的tom ...

随机推荐

  1. [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限

    Visual Studio以管理员的身份运行就可以了.

  2. 一劳永逸的解决AFNetworking3.0网络请求问题(面向对象封装大法,block回调)

    AFNetworking在iOS网络请求第三方库中占据着半壁江山,前段时间将AFNetworking进行了3.0版本的迁移,运用面向对象的设计将代码进行封装整合,这篇文章主要为还在寻找AFNetwor ...

  3. WCF入门, 到创建一个简单的WCF应用程序

    什么是WCF?  WCF, 英文全称(windows Communication Foundation) , 即为windows通讯平台. windows想到这里大家都知道了 , WCF也正是由微软公 ...

  4. Linux centOS的vm虚拟机配置详细 中文版

    这里以安装cenOS6.6 为例 如果想要需要cenos 6.6 ios文件的朋友看我的另一篇关于cenos6.6版本的下载详细 文中内容是摘抄自老男孩老师的<linux 跟老男孩学Linux运 ...

  5. Apache和PHP环境配置

    最近闲来想学习一下PHP. 工欲善其事,必先利其器.我的PHP环境配置了三遍,才安装成功. 下面就分享一下我的安装经验. 1.Apache2.4,PHP5.6,MySql5.6这些都是从官网下载的. ...

  6. drozer使用

    1.启用adb 端口转发 adb forward tcp:314154 tcp:31415 2.启用drozer 3.链接drozer drozer console connect     4:如果没 ...

  7. 解决安卓手机input获取焦点时会将底部固定定位按钮顶起的问题

    一个页面上有个固定在底部的按钮,页面中有个input框,点击input框获取焦点时,在苹果手机上没事,但在安卓手机上弹出的键盘会将按钮顶起来,这就很不好看了,想了个办法解决一下.之前一直觉得用inpu ...

  8. workerman例子无法工作

    现象 workerman已经正常启动,但是按照官网写的例子或者下载的demo无法工作,例如页面打不开,socket连接失败等 解决方法 一般这种workerman启动没报错,但是无法打开页面或者无法连 ...

  9. JAVAEE学习笔记

    以后创建常量有三个名字:Constant   SystemParas   StaticValue 上限或者下限命名      max_    min_ 包含的范围命名     first      l ...

  10. python报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 22-26: ordinal not in range(128)”问题解决

    方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为: # encoding=utf8 import sys reload(sys) sys ...