目录
一 操作系统引导过程
1.1 引导过程总览
-
开机自检(BIOS)
自检基本的硬盘,找到第一块能够引引导的设备 -
MBR引导
找到硬盘MBR引导分区,读取GRUB信息(grub.conf在哪里?) -
GRUB菜单
读取grub.conf信息,里面包含内核信息 ( 在/boot里)、等待时间等 -
加载内核(kernel)
加载内核和镜像文件 -
init进程初始化
加载初始化进程1 PID1
init 0 关机
init 6 重启
1.2 系统初始化进程
-
init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1 -
init进程
Systemd是Linux操作系统的一种init软件
CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/lib/systemd/systemd
1.3 Systemd单元类型
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
1.4 systemd服务管理
systemctl命令可以控制系统服务,次命令涵盖了之前版本操作系统中的service命令和chkconfig命令两者的功能,在使用systemctl命令时,可以省略服务单元名称的标识.service。也就是如果输入资源无后缀标识,systemctl会默认把后缀标识当做.service来处理
(1)查看服务启动状态
语法:systemctl status name.service
1)查看某个服务是否在启动成功状态
systemctl is-active named.service
2)查看某个服务是否在启动失败状态
systemctl is-faild named.service
(2)启动与停止服务
语法:systemctl start name.service
systemctl stop name.service
systemctl restart name.service
systemctl reload name.service
(3)设置开机启动
1)将服务设置为开机自动启动
systemctl enable name.service
2)将服务设置为开机不启动,即禁用服务
systemctl disable name.service
(4)查看依赖关系
systemctl list-dependencies
(5)屏蔽服务
1)屏蔽服务命令
systemctl mask name.service
2)取消屏蔽使用命令
systemctl umask name.service
1.5 服务配置文件
systemd在开机时会默认从/etc/systemd/system/目录中读取服务的配置文件用于启动该服务,实际上/etc/systemd/system/目录中存放着的都是软连接文件,指向/usr/lib/systemd/system/目录中真正的配置文件。这里的配置文件有着相似的格式
1.6运行级别所对应的Systemd 目标
运行级别 | Systemd的target | 说明 |
---|---|---|
0 | target | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
二 修复MBR扇区故障
-
故障原因
病毒、木马等造成的破坏
不正确的区分操作、磁盘读写误操作 -
故障现象
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏 -
解决思路
应提前作好备份文件
以安装光盘引导进入急救模式
从备份文件中恢复
三 修复GRUB引导故障
-
故障原因
MBR中的GRUB引导程序遭到破坏
grub.conf文件丢失、引导配置有误 -
故障现象
系统引导停滞,显示grub“提示符” -
解决思路
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复grub.conf
向MBR扇区中重建grub程序
四 遗忘root用户密码
-
故障原因
遗忘root用户密码 -
故障现象
无法进行需要root权限的管理操作
若没有其他可用账户,将无法登陆系统 -
解决思路
进入急救模式,重设密码
五 系统服务控制
- 系统服务控制
systemctl 控制类型 服务名称
- 控制类型
start:启动
stop:停止
restart:重新启动
reload:重新加载
status:查看服务状态
disable:开机关闭
enable:开机自启
六 Linux系统的运行级别
- 查看运行级别
runlevel 命令
systemctl 工具
七 优化启动过程
-
ntsysv 工具
提供一个交互式、可视化窗口
可以在字符终端运行
便于集中管理多个服务 -
systemctl 工具
不提供交互式、可视化窗口
管理单个服务效率更高
八 系统服务的启动和控制
- ntsysv系统服务管理工具
ntsysv
ntsysv --level 级别列表
- 查看系统服务的启动状态
systemctl is-enabled 服务名称
- 设置系统服务的启动状态
systemctl enabled/disable 服务名称
九 备份MBR扇区数据、模拟故障、恢复数据实验
1、给虚拟机添加一个20G的硬盘
2、用df - Th查看一下刚刚添加的进去的磁盘情况
3、格式化sdb,并把类型改成xfs
mkfs -t xfs /dev/sdb
4、备份MBR扇区数据
dd if=/dev/sda of/opt/mbr/bak bs=512 count=1
5、模拟MBR扇区故障并重启
6、挂掉了
7、把虚拟机镜像和连接勾选上
8、重启后快速按F2进入BIOS,选择Boot ,把CD-ROM调到第一个,然后F10保存重启
9、在光盘引导界面选择troubleshooting
10、进入troubleshooting菜单 选择Rescue a centos system
11、进入引导可以按回车,或者等待按1 在按会车进入sh-4.2#
12、将备份sdb备份的文件挂到mnt下,在把数据恢复到sda里
13、再输入reboot重启,启动后就恢复正常了
十 修复GRUB引导故障实验
1、进入grub2目录
2、把grub.cg改成grub.cfgbak格式,模拟出错
3、ll 查看一下是否更改成功了
4、虚拟机cd连接一下,镜像系统也挂载一下
5、reboot重启一下
[root@node1 grub2]# reboot
6、开机按f2进入bios
7、用左右键选择Boot,把cd用+符号调到第一个,然后f10保存并重启
8、选择第三个回车
10、选择第二个回车
11、先输入1回车在回车
12、切根环境
13、修复grub.cfg配置文件
14、exit退出目录
15、reboot 重启一下
16、和第四步骤一样,但是是把连接去掉,在和六、七步骤一样把硬盘选择到到一个f10保存退出(硬盘是Hard那个)
17、等待一会就启动好了(耐心等待!!!)。 完成
十一 忘记root密码-CentOs7.6系统版本
1、虚拟机cd连接一下,镜像系统也挂载一下
2、开机按f2进入bios
3、用左右键选择Boot,把cd用+符号调到第一个,然后f10保存并重启
4、选择第三个回车
5、选择第二个回车
6、选择1
7、切根环境
8、passwd root更改密码,然后输入新密码,再次输入密码
9、exit退出目录
10、重启
11、重启后f2和上面前几步一样,把boot里面硬盘换回到第一位,然后f10保存退出,第一步的连接也关掉
12、查看一下root是不是设置的新密码
su - root
密码:
上一次登录:五 10月 30 12:21:23 CST 2020从 20.0.0.1pts/2 上