引导过程与服务控制06

引导过程与服务控制

一、引导过程

引导过程:当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些的开机过程。

在这里插入图片描述

1、开机自检(BIOS)

服务器开机之后,根据主板的bios设置,对cup 内存,显卡 键盘等等设备进行初步检测。检测成功后根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么就是手工设置的U盘启动)系统的控制权转到了硬盘(大多数的时候转移给本机的硬盘)。

总结:初步检测硬件工作是否正常,检测成功后把系统的引导控制器交个硬盘或者光驱,或者u盘。

2、MBR引导

MBR是硬盘的分区记录表,在这个表里面记录硬盘的分区,以及系统的启动位置在哪。

系统的控制权到了硬盘,根据mbr记录表来找,系统的启动盘,找到后将系统的控制权传递给包含操作系统引导文件的分区以及MBR记录中系统的启动菜单(grub)。

3、GRUB菜单

硬盘启动之后,找到系统分区,也找到了操作系统所在的位置,grub就会显示启动菜单,包含所有当前可选的操作系统。

选择其中一个操作系统之后,系统转移控制器,转移到操作系统的内核文件。

注意:centos7之后开开始使用的都是grub2启动引导器。

4、加载内核文件

操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码)介于硬件资源和系统程序之间。负责分配资源,调度资源。只是分配和调度并没有真正的运行。预加载到内存当中,系统程序等待启动。

5、init/systemd启动方式

/sbin/init进程是系统当中的第一个进程,是所有其他进程的父进程,init进程在系统中的进程号永远是1。

/lib是串行 一个一个启动,速度慢。

lib/systemd/system系统的第一个进程,他的进程号也是1。

systemd是并行,加载在内存当中的程序一起启动,速度快

6、systemd单元类型:

systemd是centos7之后用来管理系统服务进程的一个管理器。使用单元模式(unit)来描述和控制系统服务和资源。

在这里插入图片描述

特点:

1、支持并行服务,提高系统的启动速度。

2、支持自动重启。

3、可以在进程运行期间动态的控制他的资源和相关的服务参数。

4、可以自动解决服务启动过程中的依赖关系。

5、支持多种管理方式(命令行 图形化工具)主要使用命令行操作。

具体类型

单元类型拓展名描述
service.service描述一个系统进程
target.target描述一组systemd的单元。进程在不同运行级别下的状态
socket.socket进程启动时根据其配置,分配系统端口,监听端口状态。如果有请求,可以维护端口通信(提供网络服务)
device.device管理硬件设备,驱动程序,设备文件,设备属性
mount.mount管理文件系统的挂载,以及挂载的选项,以及挂载之后的数据管理
Automount.automount根据配置,自动的实现设备或者文件系统的挂载

nginx.service编译文件解析

[Unit] ##服务的说明
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/   ##Description描述信息
After=network-online.target remote-fs.target nss-lookup.target
#表示支持dns解析以及该软件依赖于网络。
##After依赖 启动的这个进程systemd会根据after的条件把相关的进程一并启动
Wants=network-online.target
#先启动网络服务,才能启动nginx
##Wants也是一个依赖,systemd也会把这个网络功能一并启动
[Service] ##服务运行的参数设置
Type=forking ##后台运行
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  
## 服务启动时具体运行的命令
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID ##重启的命令
ExecStop=/bin/kill -s TERM $MAINPID ##停止进程的命令
[Install] ##服务安装的相关设置,以及运行的模式
WantedBy=multi-user.target
#支持多用户模

7、系统的运行级别:

运行级别systemd对应target说明
0target关机
1rescue.target单用户模式,系统维护时使用
2multi-user.target字符模式和3一样
3multi-user.target字符模式完整的字符模式 ,可以支持多用户,在工作中我们遇到的linux系统均为3
4multi-user.target字符模式和3一样
5graphical.target图形化用户面模式(工作中没有)
6reboot.target重启

查看系统的运行级别: runlevel。

切换系统的运行级别:init +数字。

二、服务控制

如何对服务进程进行控制:重点!!!

格式:systemctl 控制类型 服务名称(进程)。

1、控制类型:

  1. start 启动
  2. stop 停止
  3. restart 重启(先关闭在开启)先stop 在start(修改服务的配置文件,必须要重启服务才能生效)
  4. reload 重新加载单元配置
  5. status 查看服务的状态

status 查看服务的状态有以下几种情况:

  1. running 正常运行
  2. dead 服务停止
  3. fail 启动失败,查找启动失败的原因exit-code 真正的启动失败
  4. Result:singnal 表明有人强制终止了改进程,不一定是报错

三、场景实验

场景一:mbr引导

mbr分区表被删了,如何恢复

1、备份mbr分区表

第一步点击虚拟机右击进入设置,按以下操作将本地光盘挂上具体操作看上一章博客

在这里插入图片描述

添加一个硬盘点击添加,点击硬盘,点击下一步,其他操作默认,完成

在这里插入图片描述

重置虚拟机,并连接xshell
在这里插入图片描述

输入lsblk查看硬盘是否添加成功

在这里插入图片描述

输入

[root@localhost ~]# fdisk /dev/sdb

操作如下图所示对sdb进行分区

在这里插入图片描述

输入lsblk查看硬盘,分区成功
在这里插入图片描述

创建文件系统

[root@localhost ~]# mkfs.xfs /dev/sdb1

在根目录下创建一个目录,并挂载

[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/sdb1 /backup/
[root@localhost ~]# cd /backup/
[root@localhost backup]#dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1 #mbr分区表在第一块硬盘当中的第一个分区,大小512字节,把这个分区表从第一个硬盘当中提前出来,保存在sdb的硬盘中。实际上把mbr分区表做一个备份

2、模拟将mbr分区表删除,重启

[root@localhost backup]# dd if=/dev/zero of=/dev/sda bs=512 count=1

3、进行恢复mbr分区表

重启虚拟化在虚拟机初始化时鼠标点进虚拟机界面并按esc进入Boot Menu界面,选择3回车。

在这里插入图片描述

选择Troubleshooting 回车

在这里插入图片描述

选择第二个Rescue a Cetntos system 回车

进入急救模式
在这里插入图片描述

输入1 回车
在这里插入图片描述

继续回车
在这里插入图片描述

在根目录下创建一个目录

mkdir /backupdir

将备份的文件进行挂载

mount /dev/sdb1 /backupdir/

还原mbr分区表

cd /backupdir
ls 查询 目录下有mbr.bak文件
还原mbr分区表
dd if=/backupdir/mbr.bak of=/dev/sda

exit退出,重启,成功恢复

在这里插入图片描述

场景二:grub引导菜单故障

接着场景一的环境继续做场景二

1、grub菜单被删掉

centos7之后开开始使用的都是grub2启动引导器

grub2root@localhost opt]# cd /boot/grub2 #进入grub2目录
[root@localhost grub2]# rm -rf grub.cfg #删除grub.cfg模拟grub菜单被删掉
[root@localhost grub2]# init 6
重启

以上操作模拟grub菜单被删除

2、开始恢复

重启虚拟化在虚拟机初始化时鼠标点进虚拟机界面并按esc进入Boot Menu界面,选择3回车。
在这里插入图片描述

选择Troubleshooting 回车
在这里插入图片描述

选择第二个Rescue a Cetntos system 回车

进入急救模式
在这里插入图片描述

输入1 回车

在这里插入图片描述

继续回车

在这里插入图片描述

输入

chroot/mnt/sysimage/ #进入系统的根环境

回车

grub2-insll /dev/sda #将grub2下载到第一块硬盘

回车

grub2-mkconfig -o /boot/grub2/grub.cfg #将最开始删除的文件进行恢复

回车,退出,重启。

具体命令如下:
在这里插入图片描述

3、重启后进入虚拟机,成功恢复
在这里插入图片描述

场景三、模拟root密码忘记,恢复密码

1、关闭安全机制

进入root关闭selinux机制

[root@localhost ~]# setenforce 0 #关闭安全机制

2、开始恢复密码

重启虚拟化在虚拟机初始化时鼠标点进虚拟机界面并按esc进入Boot Menu界面,选择3回车。

在这里插入图片描述

选择Troubleshooting 回车

在这里插入图片描述

选择第二个Rescue a Cetntos system 回车

进入急救模式

在这里插入图片描述

输入1 回车

在这里插入图片描述

继续回车
在这里插入图片描述

输入

chroot/mnt/sysimage/ #进入系统的根环境

输入

passwd root

回车输入新密码,重启

具体详情如下
在这里插入图片描述

密码重置成功,输入新密码
在这里插入图片描述

  • 30
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值