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单元类型
四、运行级别所对应的Systemd目标
五、修复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
- 系统服务空制
- 系统服务控制
systemctl 控制类型 服务名称
- 控制类型
- start:启动
- stop:停止
- restart:重新启动(服务中断)
- reload:重新加载(服务不会中断)
- status:查看服务状态
- enable:开机自启动
- disable:开机禁用
- Linux系统的运行级别
- systemctl get-default 查看默认的运行级别
- systemctl isolate multi-user.target(graphical.target) 不重启机器而切换当前的运行级别
- runlevel或who -r 查看当前的运行级别(出现两个数字,前一个数字为当前一个运行级别,后一个数字为当前运行级别)
- 修改默认的运行级别 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
- 查看一个运行级别下面的所有的unit
list-dependenies : 分析指导target ,如果不指明target,则表示默认的target
说明:各个service前的红色圆点,如果是绿色,表示正在运行active,如果红色表示未运行inactive
例:systemctl list-dependencies multi-user.target 查看字符型运行级别下的unit
systemctl list-dependencies graphical.target 查看图形化运行级别下的unit
- 查看哪些target引用了当前运行级别的target
--reverse
例:systemctl list-dependencies multi-user.target --reverse
- systemctl与关机/重启相关的命令
- 关闭CPU,当未关闭电源:systemctl halt
- 关闭电源(关机):systemctl poweroff
- 重启机器:systemctl reboot
- 列出系统中包含的所有target
systemctl list-unit-files --type=target
- 查看系统服务的启动状态
systemctl is-enabled 服务名称
- 设置系统服务的启动状态
systemctl enable(启动)/disable(关闭) 服务名称
- 列出所有ative的unit 注意列出的unit显示是否active
systemctl list-units (已**)
- 列出所有unit,包括inactive状态的
systemctl list-units --all
- 列出所有未运行的unit,即状态是inactive的
systemctl list-units --all --state=inactive(未**)
- 查看某个服务是否启动
systemctl status 服务名称
- 列出当前活动状态(active)的所有服务单元
systemctl list-units --type=service
- 列出所有状态(包括active和inactive)的所有服务unit
systemctl list-units --type=service --all
可以用 | grep 来检索
- 列出所有的unit文件,注意:这里显示是否enabled
systemctl list-unit-files
针对四种state的说明:
- enabled:已建立自启动链接
- disabled:没有建立自启动链接
- Static:该配置文件没有【Install】部分(无法执行),只能作为其他配置文件的依赖
- masked:该配置文件被禁止建立启动链接
- 列出一个服务的依赖单元
list-dependencies 列出一个unit的所有依赖
systemctl list-dependencies firewalld.service(防火墙)
- 查看unit文件
cat:用来指定要查看的unit文件
例:systemctl cat 服务名
- 重新加载所有修改过的unit文件
daemon-reload 当我们收到修改/添加unit文件后,需要执行daemon-reload
例:systemctl daemon-reload
- 显示指定unit的所有底层参数
systemctl show 服务名
也可以看其中一项
systemctl show -p PIDFile 服务名
注:
daemon:系统为了具备某些功能需要开启相应的服务,服务就是我们说的service,但是service的提供者是一些程序,所有为了完成这个service的程序,我们称呼它为daemon。即为完成某个服务需要一个daemon在后台中运行,没有这个daemon就不会有service,基本上每个服务都能找到一个他的daemon,所以systemctl daemon-reload非常好用
getty:这个服务是为了实现多终端功能,什么是多终端呢?
就是类telent的多线程,为了允许多用户同时登录时系统的这个功能而实现的
- ntsysv系统工具服务管理工具
(1)ntsysv
按照默认设置,只有当前运行级别会被配置
- ntsysv --level 级别列表
要配置不同的运行级别,使用“--level”选项来指定一个或多个运行级别
例:ntsysv --level 345 配置运行级别3、 4、 5
注:
ntsysv工具:
- 提供一个交互式、可视化窗口;
- 可以在字符终端运行
(3)便于集中管理多个服务。
systemctl工具:
(1)不提供交互式、可视化窗口;
(2)管理单个服务效率更高。