Linux引导过程与服务控制的总结

一、引导过程总览

Linux引导过程与服务控制的总结

 

二、系统初始化进程

1、init进程

(1)由Linux内核加载运行/sbin/init程序;

(2)init进程是系统中第一个进程;

(3)init进程的PID(进程标记)号永远为1

 

2、Systemd

(1)Systemd是Linux操作系统的一种init软件;

(2)CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit;

(3)CentOS7中运行的第一个init进程是/lib/system/system

 

三、Systemd单元类型

Linux引导过程与服务控制的总结

 

四、运行级别所对应的Systemd目标

 

Linux引导过程与服务控制的总结

五、修复MBR扇区故障

1、故障原因:

(1)病毒、木马等造成的破坏;

(2)不正确的分区操作、磁盘读写等误操作

 

2、故障现象:

(1)找不到引导程序,启动中断;

(2)无法加载操作系统,开机后黑屏

 

3、解决思路:

(1)应提前做好备份文件;

(2)以安装光盘引导进入急救模式;

(3)从备份文件中恢复

 

操作步骤模拟MBR扇区实验

加一块硬盘做实验

进系统查看磁盘

fdisk –l   ##看是否有sdb

mkfs.ext4  /dev/sdb     ##格式化sdb

挂载  mount /dev/sdb /opt

 

1、备份MBR扇区数据

dd  if=/dev/sda  of=/opt/mbr.bak  bs=512  count=1

 

2、模拟MBR扇区故障

dd  if=/dev/zero of=/dev/sda   bs=512  count=1

 

重启看是否有问题

光盘引导,进去急救模式,提示操作

从备份文件中回复MBR扇区

步骤如下:

1、装入光盘,在光盘引导界面选择troubleshooting

2、进入troubleshooting菜单,选择Rescue a centos system

3、进入引导可以按回车,或者等待

   按“1“,再按回车进入sh-4.2#

4、急救模式下sdb的挂载

  mkdir  /sdd

  mount  /dev/sdb  /sdd

  cd  /sdd   ##查询该备份文件是否存在

5、dd  if=/sdd/mbr.bak  of=/dev/sda  count=1  bs=512

6、重启reboot  进入系统测试是否正常

 

 

修复GRUB引导故障

1、故障原因:

(1)MBR中的GRUB引导程序遭到破坏;

(2)grub.conf 文件丢失,引导配置有误

 

2、故障现象:

(1)系统引导停滞,显示“grub>”提示符;

 

3、解决思路:

(1)尝试手动输入引导命令;

(2)进入急救模式,重写或者从备份中恢复grub.conf;

(3)向MBR扇区中重建grub程序

 

 

grub修复:

cd  /boot/grub2      ##进入grub

rm –rf grub.cfg        ##删除grub.cfg,模拟故障

init 6      ##重启

 

出现故障,如下:

“grub>”

 

修复如下:

1、引导急救模式,加载系统镜像

chroot  /mnt/sysimage/

 

2、重新建立加载sda分区

grub2 –install  /dev/sda

 

3、重新构建grub菜单配置文件

grub2 –mkconofig –o /boot/grub2/grub.cfg

 

4、退出bash环境

exit

 

5、重启

reboot

 

 

忘记root密码

sh-4.2# chroot  /mnt/sysimage    ##加载系统镜像

bash-4.2# passwd root

new:

retry:

退出bash环境:exit

重启:reboot

  • 系统服务空制
  1. 系统服务控制

systemctl  控制类型 服务名称

  1. 控制类型
  1. start:启动
  2. stop:停止
  3. restart:重新启动(服务中断)
  4. reload:重新加载(服务不会中断)
  5. status:查看服务状态
  6. enable:开机自启动
  7. disable:开机禁用
  1. Linux系统的运行级别
  1. systemctl get-default     查看默认的运行级别
  2. systemctl isolate multi-user.target(graphical.target)   不重启机器而切换当前的运行级别
  3. runlevel或who -r                查看当前的运行级别(出现两个数字,前一个数字为当前一个运行级别,后一个数字为当前运行级别)
  1. 修改默认的运行级别  target

systemctl set-default multi-user.target    修改默认运行级别为字符型

systemctl set-default graphical.target     修改默认运行级别为图形化型

等同于

rm /etc/systemd/system/default.target

创建符号链接

In -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target   修改默认运行级别为字符型

In -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target      修改默认运行级别为图形化型

以上两种方式都需要重启后才能生效

init 6或reboot

  1. 查看一个运行级别下面的所有的unit

list-dependenies : 分析指导target ,如果不指明target,则表示默认的target

说明:各个service前的红色圆点,如果是绿色,表示正在运行active,如果红色表示未运行inactive

例:systemctl list-dependencies multi-user.target  查看字符型运行级别下的unit

systemctl list-dependencies graphical.target   查看图形化运行级别下的unit

  1. 查看哪些target引用了当前运行级别的target

--reverse

例:systemctl list-dependencies multi-user.target --reverse

  1. systemctl与关机/重启相关的命令
  1. 关闭CPU,当未关闭电源:systemctl halt
  2. 关闭电源(关机):systemctl poweroff
  3. 重启机器:systemctl reboot
  1. 列出系统中包含的所有target

systemctl list-unit-files --type=target

  1. 查看系统服务的启动状态

systemctl is-enabled 服务名称

  1. 设置系统服务的启动状态

systemctl enable(启动)/disable(关闭) 服务名称

  1. 列出所有ative的unit  注意列出的unit显示是否active

systemctl list-units (已**)

  1. 列出所有unit,包括inactive状态的

systemctl list-units --all

  1. 列出所有未运行的unit,即状态是inactive的

systemctl list-units --all --state=inactive(未**)

  1. 查看某个服务是否启动

systemctl status 服务名称

  1. 列出当前活动状态(active)的所有服务单元

systemctl list-units --type=service

  1. 列出所有状态(包括active和inactive)的所有服务unit

systemctl list-units --type=service --all

可以用 | grep 来检索

  1. 列出所有的unit文件,注意:这里显示是否enabled

systemctl list-unit-files

针对四种state的说明:

  1. enabled:已建立自启动链接
  2. disabled:没有建立自启动链接
  3. Static:该配置文件没有【Install】部分(无法执行),只能作为其他配置文件的依赖
  4. masked:该配置文件被禁止建立启动链接
  1. 列出一个服务的依赖单元

list-dependencies 列出一个unit的所有依赖

systemctl list-dependencies firewalld.service(防火墙)

  1. 查看unit文件

cat:用来指定要查看的unit文件

例:systemctl cat 服务名

  1. 重新加载所有修改过的unit文件

daemon-reload   当我们收到修改/添加unit文件后,需要执行daemon-reload

例:systemctl daemon-reload

  1. 显示指定unit的所有底层参数

systemctl show 服务名

也可以看其中一项

systemctl show -p PIDFile 服务名

注:

daemon:系统为了具备某些功能需要开启相应的服务,服务就是我们说的service,但是service的提供者是一些程序,所有为了完成这个service的程序,我们称呼它为daemon。即为完成某个服务需要一个daemon在后台中运行,没有这个daemon就不会有service,基本上每个服务都能找到一个他的daemon,所以systemctl daemon-reload非常好用

getty:这个服务是为了实现多终端功能,什么是多终端呢?

就是类telent的多线程,为了允许多用户同时登录时系统的这个功能而实现的

  • ntsysv系统工具服务管理工具

(1)ntsysv

按照默认设置,只有当前运行级别会被配置

  1. ntsysv --level 级别列表

要配置不同的运行级别,使用“--level”选项来指定一个或多个运行级别

例:ntsysv --level 345   配置运行级别3、 4、 5

注:

ntsysv工具:

  1. 提供一个交互式、可视化窗口;
  2. 可以在字符终端运行

 (3)便于集中管理多个服务。

systemctl工具:

(1)不提供交互式、可视化窗口;

2管理单个服务效率更高。