CentOS7的启动及Systemd的管理✧

CentOS7的启动流程

    POST–>Boot Sequence–>Bootloader–>kernel+initramfs(initrd)–>rootfs–>/sbin/init

    init:

        CentOS5:SysV init

        CentOS6:Upstart

        CentOS7:Systemd

    blob.png

    Systemd:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程

    blob.png

    Systemd新特性:

        系统引导是实现服务并行启动

        按需启动守护进程

        系统状态快照

        自动化的服务依赖关系

    

    核心概念:unit

        unit表示不同类型的systemd对象,通过配置文件进行标识和配置,文件中主要包含了系统服务,监听socket,保存的系统快照以及其他与init相关的信息

    配置文件:

        /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

        /run/systemd/system:系统执行过程中产生的服务脚本,比上面目录优先运行

        /etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面的优先级高


    UNIT类型:

        Systemctl -t help 查看unit类型

    blob.png

        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 用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如spool目录

        blob.png


    特性:

    关键特性:

        基于socket的激活机制:socket与服务程序分离

        基于d-bus的激活机制:系统进程间通信的一种机制 desktop-bus

        基于device的激活机制

        基于path的激活机制

        系统快照:保存个unit的当前状态信息于持久存储设备中向后兼容sysv init脚本

    不兼容:

        systemctl命令固定不变,不可扩展

        非有systemd启动的服务,systemctl无法与之通信和控制


    系统服务管理:

        CentOS7:service unit    注意:能兼容早期的服务脚本

        命令:systemctk Command name.service

        启动:systemctl name start –> systemctl start name.service

        停止:systemctl name stop –> systemctl stop name.service

        重启:systemctl name restart –> systemctl restart name.service

        状态:systemctl name status –> systemctl status name.service 

blob.png

        条件式重启:以启动才重启,否则不做任何操作

        service name condrestart –> systemctl try-restart name.service

        重载或重启服务:先加载,再启动

        systemctl reload-or-restart name.service

        重载或条件式重启服务:

        systemctl reload-or-try-restart name.service

        禁止自动和手动启动:

        systemctl mask name.service

        取消禁止:

        systemctl unmask name.service  

blob.png   

blob.png   

    服务查看

        查看某服务当前激活与否的状态:

        systemctl is-active name.service

        查看所有已经激活的服务

        systemctl list-units –type service

        查看所有服务

        systemctl list-units –type service -all

        blob.png

        chkconfig命令的对应关系:

        设定某服务开机自启:

        chkconfig name on –> systemctl enable name.service

        设定某服务开机禁止启动:

        chkconfig name off –> systemctl disable name.service

        查看所有服务开机的自启状态:

        chkconfig –list –> systemctl list-unit-files –type service        

        查看服务是否开机自启:

        systemctl is-enable name.service

        blob.png

    其他命令:

            查看服务的依赖关系:

        systemctl list-dependencies name.service

        blob.png

        杀掉进程:

        systemctl kill 进程名

    

    服务状态:

        systemctl list-units –type service –all显示状态

        loaded:Unit配置文件已处理

        active(runinng):一次或多次持续处理的运行

        active(exited):成功完成一次性的配置

        active(waiting):运行中,等待一个事件

        inactive:不运行

        enabled:开机启动

        disabled:开机不启动

        static:开机不启动,但可被另一个启用的服务激活

        blob.png

    运行级别:

        unit配置文件: .target

     级别:

        0 –> runlevel0.target,poweroff.target

        1 –> runlevel1.target,rescue.target

        2 –> runlevel2.target,multi-user.target

        3 –> runlevel3.target,multi-user.target

        4 –> runlevel4.target,multi-user.target

        5 –> runlevel5.target,graphical.target

        6 –> runlevel6.target,reboot.target

    级别切换;

        init N –> systemctl isolate name.target

        只有/lib/systemd/system/*.target文件中AllowIsolate=yes才能切换(修改文件需执行systemctl daemon-reload才能生效

blob.png

    查看target:

        runlevel    

        systemctl list-units –type target

        systemctl list-units –type target –all

    获取默认运行级别:

        /etc/inittab–> systemctl get-default

    修改默认级别:

        /etc/inittab –> systemctl set-default name.target   

 blob.png

    其他命令:

        切换至紧急救援模式:

            systemctl rescue

        切换至emergency模式:

            systemctl emergency

        关机:

            systemctl halt/poweroff

        重启:

            systemctl reboot

        挂起:

            systemctl suspend 数据还保存在内存中

        休眠:

            systemctl hibernate 数据写入磁盘

        休眠并挂起

            systemctl hybri-sleep


CentOS7引导顺序

    UEFI或BIOS初始化,运行POST开机自检

    选择启动设备

    引导装载程序,CentOS7是grub2

    加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg

    加载initramfs驱动模块

    加载内核选项

    内核初始化,CentOS7使用systemd代替init

    执行initrd.target所有单元,包括挂载/etc/fstab

    从initramfs根文件系统切换到磁盘根目录

    systemd执行默认target配置

        其配置文件:/etc/systemd/system/default.target /etc/systemd/system/

    blob.png


   内核参数设置:

    设置内核参数,只影响当次启动

    启动时,在linux16行后添加systemd.unit=desired.target

    system.unit=emergency.target

    system.unit=recure.target

    recure.target比emergency支持更多的功能,日志等


   启动排错:

    文件系统损坏:

    先尝试自动修复,失败则进入emergency shell,提示用户修复

    在/etc/fstab不存在对应设备的UUID等一段时间,如不可用,进入emergency shell

    在/etc/fstab不存在对应的挂载点,systemd尝试创建挂载点,否则提示进入emergency shell

    在/etc/fstab不正确的挂载选项,提示进入emergency shell


    破解root口令:

    按e进入编辑模式

    将光标移至linux16行尾,添加内核参数rd.break

    按ctrl+x启动

    重新挂载根文件系统mount -o remount,rw /sysroot

    切换当前的工作环境至/sysroot:chroot /sysroot

    passwd root

    touch /.autorelabel重新打标签

    blob.png

    blob.png

    blob.png

    blob.png

    修复Grub2

    引导时进入可以使用命令行的界面

    可从文件系统引导

    只要配置文件/boot/grub2/grub.cfg

    修复配置文件

    grub-mkconfig> /boot/grub2/grub.cfg

    修复grub

    grub2-install /dev/sda BIOS环境

    grub2-install UEFI环境 

    


原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/48130

(1)
Stupid_LStupid_L
上一篇 2016-09-21 08:12
下一篇 2016-09-21 09:43

相关推荐

  • root用户密码破解

    方法一:进入单用户模式破解root密码 (1)编辑grub菜单(选定要编辑的title,而后使用e命令) (2)在选定的kernel后附加 1,s,S或single都可以 (3)在kernel所在行键入"b"命令即可进入单用户模式 (4)运行passwd命令修改root用户密码 并重启 (5)输入密码即可登录 方法二:进入救援模…

    Linux干货 2016-09-15
  • Linux磁盘管理

    面对一块硬盘,我们该如何使用它呢?本文从机械硬盘结构,分区,格式化,和挂载四个层次进行介绍。 一、机械硬盘结构 现在服务器使用机械式硬盘是主流,因为其造价低,容量大,和固态硬盘相比读写性能要差很多。机械硬盘主要由以下几个部件构成:转轴Spindle,盘片Platter,机械臂Boom,磁头Head。工作机制是马达带动盘片高速旋转,磁头对盘片进行擦写数据或读取…

    Linux干货 2016-09-01
  • GRUB管理

    对于运维人员来说,想要熟练掌握linux,那么久要对linux的启动流程有一个详细的了解,而今天我们就一起来学习一下linux启动中最重要的一个阶段——GRUB引导阶段。 Linux启动流程 grup: GRand Unified Bootloader  由上图可知,grub属于系统启动过程中一个必须的阶段。而这个阶段又分为了三个小的阶段,分别是s…

    2017-09-02
  • 马哥教育21期网络班—第15周课程+练习—-sed 总结

    sed:编辑器 流编辑器,文本流编辑 ed: Stream EDitor, 行编辑器; 介绍:sed是 一个非交换性文本流编辑器,它编辑文件或标准输入导出的文本拷贝。标准输入可能来自键盘、文件重定向、字符串或变量,或者管道的文本。 sed可以干什么? 别忘了vi也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多…

    Linux干货 2016-11-14
  • 利用heartbeat v2版搭建高可用mysql

    一、实验环境  1)实验图        2)同步时间;确保可以使用主机名通信;确保可以使用ssh秘钥方式进行彼此登录;由于是两台设备,需要仲裁;  确保可以使用主机名通信 web1修改hosts文件如下: 172.16.2.12 SQL1.linux.com SQL1 172.…

    Linux干货 2015-07-08
  • ☞Linux进程管理与性能分析

    Linux进程管理与性能分析 概述 系统维护的一个重要工作就是监控Linux系统的运行状态是否正常,分析系统资源的使用情况,进而对系统进行优化,提高其性能。在实际环境中,系统稳定性尤为重要,可以说系统的稳定性关系到企业的存亡。因此,第一时间掌握CPU、Memory、IO、Network的等系统资源的状态则可以在系统出现问题时及时解决,把损失降到最低。&nbs…

    Linux干货 2016-09-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 11:28

    文章对systemd的相关知识总结的很详细,截图说明也很直观。