• 仔细解读Linux中的“引导过程与服务内容”


    内容预知

     1.引导过程的学习

    1.1 开机自检 

    1.2 MBR引导

    1.3 GRUB菜单

    1.4 加载Linux内核 

    1.5 init 进程初始化

     2.systemd服务

    2.1 Linux中新Systemd与init的概述 ,比较

     2.1.1  init进程

    2.1.2  Systemd进程

     2.1.3Systemd的新特性

    2.3 Systemd 单元类型 

     2.4 运行级别所对应的systemd目标

    2.5 Linux中的运行级别 

     2.5.1 查看运行级别

    2.5.2 systemctl工具(能查看默认的运行级别)

     2.5.3 临时切换运行级别

     2.6 设置永久运行级别

     3.系统服务控制

     4. 优化启动的补充

    总结 


     1.引导过程的学习

     Linux的引导过程(简单分为五个阶段):

    1.1 开机自检 

     服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内 存、显卡、键盘等设备进行初步检测,检测成功后根据 预设的启动顺序移 交系统控制权,大多时候会移交给本 机硬盘。 网络启动 加载 网络批量pxe

    1.2 MBR引导

    当从本机硬盘中启动系统时,首先根据硬盘第一个扇区 中 MBR(Master Boot Record, 主引导记录)的设 置,将系统控制权传递给包含操作系统引导文件的分 区;或者直接根据 MBR 记录中的引导信息调用启动菜单 (如 GRUB)。

    总结:运行放在MBR扇区里的启动 GRUB引导程序

    1.3 GRUB菜单

    对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系 统引导器程序。系统控制权传递给 GRUB 以后,将会显 示启动菜单给 用户选择,并根据所选项(或采用默认 值)准备加载 Linux 内核文件,然后将系统控制权转交 给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启 动引导器。

    总结:GRUB引导程序通过读取GRUB配置文 件/boot/grub2/grub.cfg,来获取内核和镜像文件系统 的设置和路径位置

    1.4 加载Linux内核 

     Linux 内核是一个预先编译好的特殊二进制文件,介于 各种硬件资源与系统程序之间, 负责资源分配与调度。 内核接过系统控制权以后,将完全掌控整个 Linux 操作 系统的运行过 程。在 CentOS 系统中,默认的内核文件 位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

    总结:把内核和镜像文件系统加载到内存中 可以使用

    1.5 init 进程初始化

     为了完成进一步的系统引导过程,Linux内核首先将系统 中的“/sbin/init”程序加载到内 存中运行(运行中的程序 称为进程),init 进程负责完成一系列的系统初始化过 程,最后等待用户进行登录

     总结:加载硬件驱动程序,内核把init进程加载到内存中 运行

     2.systemd服务

    2.1 Linux中新Systemd与init的概述 ,比较

    传统init依赖于串行执行Shell 脚本启动服务,导致效率 低下,系统启动速度较慢 排队 systemd能够将更多的服务进程并行启动,并且具有提 供按需启动服务的能力,使得启动更少进程,从而提高 系统启动速度 

    在centos7中 淘汰了init(原因就是init通过脚本启动,逐个程序启动,效率慢)

    采用了新的Systemd (并行启动程序,大大增加了启动效率)

     2.1.1  init进程

    • 由Linux内核加载运行/sbin/init 程序;
    • init进程是系统中第一个进程;
    • init进程的PID(进程标记)号永远为1。

    2.1.2  Systemd进程

    • Systemd是Linux操作系统中的一种init软件;
    • CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit;
    • CentOS7中运行的第一个init进程是/lib/systemd/systemd
    pstree   查看系统中的所有进程

     

     2.1.3Systemd的新特性

    •  系统引导时实现服务并行启动
    • 按需启动守护进程
    • 自动化的服务依赖关系管理
    • 同时采用socket式与D-Bus总线式激活服务
    • socket与服务程序分离
    • 向后兼容sysv init脚本
    • 使用systemctl 命令管理,systemctl命令固定不变, 不可扩展,非由systemd启动的服务, systemctl无法与之通信和控制
    • 系统状态快照

    2.3 Systemd 单元类型 

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

    单元类型扩展名说明
    service.service描述一个系统服务
    socket.socket一个进程间的套接字
    device.device内核识别的设备文件
    mount.mount文件系统的挂载点
    automount.automount文件系统的解挂载点
    swap.swap内存交换设备或交换文件
    path.path文件中的目录
    timer.timer定时器
    snapshot.snapshotSystemd 运行状态
    scope.scope描述一些系统服务的分组信息
    slice.slice在Cgroup的一组通过层次组织的管理系统过程
    target.target描述一组systemd的单元

     2.4 运行级别所对应的systemd目标

    运行级别systemd的target解释
    0target关机状态,使用此级别会关机
    1rescue.target单用户模式
    2,4multi-user.target用户自定义运行级别,通常识别为级别3。
    3multi-user.target字符界面的完整多用户的模式,大多数服务器主机运行在这个级别
    5graphical.target多用户,图形界面。继承级别3的服务,并启动图形界面服务。
    6reboot.target重启
    emergencyemergency.target急救模式(Emergency shell)

    2.5 Linux中的运行级别 

     2.5.1 查看运行级别

    1. [root@localhost ~]# runlevel //查看切换运行级别与当前运行级别
    2. N 5
    3. #N:表示前一次没有切换过运行级别
    4. #5:当前运行级别5,处于图像界面的多用户模式

     

    2.5.2 systemctl工具(能查看默认的运行级别)

    1. [root@localhost ~]# systemctl get-default //查看默认的运行级别
    2. graphical.target //默认运行级别为图形界面

     2.5.3 临时切换运行级别

    init(切换临时运行级别的首选方式,方便容易记):

    1. init 0 //关机
    2. init 1 //切换到单用户模式(single,维护模式)
    3. init 3 //切换到字符界面的多用户模式
    4. init 5 //切换到图形界面的多用户模式
    5. init 6 //重启

     systemctl的命令格式

    1. command参数:
    2. get-default:取得当前的target
    3. set-default:设置指定的target为默认的运行级别
    4. isolate:切换到指定的运行级别

     2.6 设置永久运行级别

     systemctl set-default :

    1. [root@localhost ~]# systemctl get-default //查看当前默认运行级别,为图形界面
    2.  graphical.target
    3.  [root@localhost ~]# systemctl set-default multi-user.target //将默认运行级别修改为字符界面
    4.  Removed symlink /etc/systemd/system/default.target.
    5.  Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
    6.  [root@localhost ~]# systemctl get-default //查看修改后的默认运行级别,为字符界面
    7.  multi-user.target

     3.系统服务控制

     命令格式:

     控制类型:

    • status:查看服务状态
    • start:启动
    • stop:停止
    • restart:重新启动
    • reload:重新加载
    • daemon-reload:加载新服务,让系统识别
    • enable:开机启动
    • enable --now:将服务设置为开机启动,并立即启动
    • disable:开机不启动
    • disable --now:将服务设置为开机不启动,并立即关闭该服务

     eg:

    status 查看防火墙firewalld的状态。

    [root@localhost ~]# systemctl status firewalld     //查看firewalld服务的状态

    disable 关闭防火墙的开机自启动,改成开机不启动(但并不改变当前状态)。

    [root@localhost ~]# systemctl disable firewalld    //关闭防火墙的开机自启动,但不改变当前状态

    stop 立即关闭防火墙。

    [root@localhost ~]# systemctl stop firewalld    //立即关闭防火墙
    

    enable --now,将防火墙设置为开机自启动,并立即启动。

    [root@localhost ~]# systemctl enable --now  firewalld   //设置防火墙开机启动,并且现在就启动

     

     4. 优化启动的补充

    ntsysv工具

    • 提供一个交互式、可视化窗口
    • 可以在字符终端运行
    • 便于集中管理多个服务

    systemctl工具

    • 不提供交互式、可视化窗口
    • 管理单个服务效率更高

    总结 

    1.熟悉清除Linux的五个引导阶段,知道Systemd服务的特性。

    2.掌握系统服务控制的操作,能够针对服务名称,做到查看状态,关闭,启动

  • 相关阅读:
    DM内存管理
    K-verse 小型活动来袭!
    MYSQL函数,一篇文章看完!
    [附源码]Python计算机毕业设计Django高校车辆管理系统
    ABB眼中AI推动机器人创新的三大方向
    数组对象根据id去重(javascript方法)
    funcation_calling
    【基础算法】几种特殊数(素数、公约数、完全数、亲密数) & C++实现
    【Node.js】深度解析node的包和强大的包管理工具
    el table 修改鼠标在行上改变背景颜色
  • 原文地址:https://blog.csdn.net/qq_62462797/article/details/126176976