Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)

引导过程与服务控制

  • 1.引导过程管理
    • 1.1 引导过程
      • 1.1.1 引导过程总览
      • 1.1.2 init进程
      • 1.1.3 inittab配置文件
    • 1.2 排除启动类故障
      • 1.2.1 MBR扇区故障
      • 1.2.2 修复GRUB引导程序
      • 1.2.3 遗忘root用户的密码
  • 2. 服务管理
    • 2.1 systemd进程
    • 2.2 使用systemd管理系统
      • 2.2.1 systemd单元
      • 2.2.2 systemd服务管理
      • 2.2.3 服务配置文件
      • 2.2.4 Target类型单元
      • 2.2.5 systemd其他命令
  • 2.3 ntsysv工具

1.引导过程管理

系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux的引导过程完成了一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。

1.1 引导过程

1.1.1 引导过程总览

Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化。
(1)开机自检
服务器主机开机以后,将根据主板bios中的设置对cpu、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多数时候会移交给本地硬盘。
(2)MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR的设置,将系统控制权传递给包含操作系统引导文件的分区,或直接根据MBR记录中的引导信息调用启动菜单(如DRUB)。
(3)GRUB菜单
对于Linux系统来说,GRUB算是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单提供给用户选择,并根据所选项加载Linux内核文件,然后将系统控制权转交个欸内核。
(4)加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。在centos6.5系统中,默认的内核文件位于/boot/vmlinuz-2.6.32-431.el6.x86_64。
(5)init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的/sbin/init程序加载到内存中运行,init进程负责完成一系列的系统初始化进程,最后等待用户进行登录。

1.1.2 init进程

Linux系统中的进程使用数字进行标记,每个进程的身份标记号称为PID。在引导Linux系统过程中,/sbin/init是内核第一个加载的程序,因此init进程对应的PID号总是为1。init进程运行后将陆续执行系统中的其他程序,不断生成新进程,这些进程称为init进程的子进程,init进程是这些进程的父进程。init是维持整个Linux系统运行所有进程的始祖,init进程是不允许被轻易终止的。需要切换不同系统运行状态时,可以向init进程发送正确的执行参数,由init自身来完成相关操作。

1.1.3 inittab配置文件

一、inittab文件的结构:id runlevels action process

  1. id 用于在inittab文件中唯一标识一个配置记录
  2. runlevels 用于指定该记录在哪些运行级别中运行
  3. action 用于描述记录将执行哪种类型的动作
  4. process 用于设置启动进程所执行的命令
    二、相关命令
  5. /etc/inittab配置默认运行级别
  6. /etc/sysconfig/init控制tty终端的开启数量、终端颜色方案
  7. /etc/init/rcS.conf加载rc.sysinit脚本,完成系统初始化任务
  8. /etc/init/rc.conf兼容脚本,负责各运行级别的调用处理
    5) /etc/init/rcS-sulogin.conf为单用户模式启动/sbin/sushell环境
  9. /etc/init/control-alt-delete.conf控制终端下的Ctrl+Alt+Del热键操作
  10. /etc/init/start-ttys.conf配置tty终端的开启数量、设备文件
  11. /etc/init/tty.conf控制tty终端的开启
    init程序的配置目录位于/etc/init/,原有的/etc/inittab文件中保留默认运行级别的配置。
    在centos7.6版本中换了,inittab已经不再使用。Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第1张图片
    runlevels-运行级别
    0 关机状态,使用该级别时将会关闭主机
    1 单用户模式,无需密码验证即可登录系统,多用于系统维护
    2 字符界面的多用户模式(不支持访问网络)
    3 字符界面的完整多用户模式,大多数服务器在运行此级别
    4 未分配使用
    5 图形界面的多用户模式,提供了图形桌面操作系统
    6 重新启动,使用该级别时将会重启主机

1.2 排除启动类故障

在Linux系统启动过程中,设计mbr引导记录、grub启动菜单、系统初始化配置文件等方面,其中任何一环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份工作。

1.2.1 MBR扇区故障

MBR引导记录位于物理硬盘的第一个扇区(512B),该扇区由称为主引导扇区(MBR扇区),出来包含引导程序的部分数据外,还包括整个硬盘的分区表记录。主引导扇区发生故障时,将可能无法进入引导菜单,或者因为无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。解决该问题的思路:提前做好备份文件,以安装光盘引导进入急救模式,从备份文件中恢复。
下面通过示例介绍对MBR扇区进行备份、模拟破坏、修复过程。
(1)备份MBR扇区数据
由于MBR扇区中包含整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他存储设备中,否则在恢复时将无法读取到备份文件。执行以下操作将第一块硬盘的MBR扇区备份到第2块硬盘的sdb1分区中(挂载到/backup目录)。
1.加一块硬盘做实验,进系统查看磁盘,fdisk -l ##看是否有sdbLinux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第2张图片Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第3张图片2.mkfs -t ext4 /dev/sdb ###格式化sdb
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第4张图片

3.挂载mount /dev/sdb /opt
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第5张图片
4.备份MBR扇区数据dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1
在这里插入图片描述
(2)模拟MBR扇区故障,使用dd命令,人为的将MBR扇区记录覆盖,模拟扇区被破坏的故障情况。
5.模拟MBR扇区故障dd if=/dev/zero of=/dev/sda bs=512 count=1
,Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第6张图片
6.重启后观察系统是否有问题,无法进入引导菜单,出现 operating system not found,上述就是有故障了MBR挂了

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第7张图片
7.装入光盘
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第8张图片
8在光盘引导界面选择troubleshooting:
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第9张图片
9.进入troubleshooting菜单 选择Rescue a centos systemLinux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第10张图片
10.进入引导可以按回车,或者等待
按1 在按会车进入sh-4.2#Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第11张图片Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第12张图片
11.mount /dev/sdb /mnt ## 将备份sdb备份的文件挂到mnt下 , 然后进去看下是否有mbr.bak
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第13张图片
12.恢复备份数据 dd if=/mnt/mbr.bak of=/dev/sda count=1 bs=512在这里插入图片描述
13.重启,出现MBR引导,成功恢复Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第14张图片

1.2.2 修复GRUB引导程序

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第15张图片
模拟centos 7.6 grub修复
1.cd /boot/grub2 进入grub2 ,mv grub.cfg grub.cfg.bak给grub配置文件改名Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第16张图片
2.重启init 6,出错
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第17张图片
3.重新启动,按F2进入BIOS界面,在boot里面将CD-ROM drive置顶,F10保存退出Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第18张图片
4.进入troubleshooting菜单Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第19张图片
5.选择Rescue a centos system
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第20张图片
6.进入引导可以按回车,或者等待
按1 在按回车进入sh-4.2#!
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第21张图片
7.进入救援模式后更改 root 目录
在这里插入图片描述
8.查看未修复账户
在这里插入图片描述
9.使用 grub2-install 命令安装修复grub
在这里插入图片描述
10.查看是否修复
在这里插入图片描述
11.修复grub.cfg配置文件
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第22张图片
12.查看是否修复
在这里插入图片描述
13.退出,重启
在这里插入图片描述在这里插入图片描述
14.启动按F2进入BIOS,改成硬盘启动,F10保存
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第23张图片
15.启动,进入引导,完成
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第24张图片

1.2.3 遗忘root用户的密码

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第25张图片
1.重新启动,按F2进入BIOS界面,在boot里面将CD-ROM drive置顶,F10保存退出

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第26张图片

2装入光盘,在光盘引导界面选择troubleshooting:Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第27张图片
3进入troubleshooting菜单 选择Rescue a centos systemLinux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第28张图片
4进入引导可以按回车,或者等待
按1 在按会车进入sh-4.2#Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第29张图片

5进入救援模式后切根chroot /mnt/sysimage/
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第30张图片
6 修改密码
passwd root
输入密码:Abc123 ###第一次
输入密码:Abc123 ###第二次

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第31张图片
7.重启改硬盘启动Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第32张图片
8重启密码登录
Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第33张图片

2. 服务管理

2.1 systemd进程

从centos7版本的系统开始systemd成为PID恒为1的初始化进程,是内核加载的第一个程序。systwmd诞生的主要目的是为了将更多服务并发启动,从而提高系统启动高速度。其最大的优点在于具有提供按需启动服务的能力,只有在某个服务真正被请求时才进行启动,当该服务结束时,systemd就将其恢复,等待下次需要时启动。

2.2 使用systemd管理系统

systemd不是一个单独的命令,而是一个集合体。systemctl 是管理系统的主要命令。hostnamectl 是用于查看与修改当前主机信息的命令。

2.2.1 systemd单元

在systemd中不同类型的systemd对象被统一称为单元,是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。
systemctl命令用于管理各种类型的systemd单元,可以使用systemctl -t help 命令来查询systemd支持的单元类型。
下面的列表介绍了systemd可用的单元类型:
services:一个服务单元描述如何在服务器上管理一个服务或者应用。这将会包括如何开始或者停止服务、在哪些情况下应自动启动以及相关的软件依赖和排序信息。
socket:一个套接字单元文件描述了systemd使用于基本套接字激活的一个网络或者IPC套接字,或者一个FIFO缓冲。.services文件将会在定义在这个单元里的套接字是活动时开始。
devic:描述了一个设备被udev或者sysfs指定作为systemd管理器的单元。不是所有设置都有.device文件。一些情况下.device单元可能是命令、挂载及访问设备所必需的。
mount:这个单元定义了一个在系统上systemd管理的挂载点。这个些文件以挂载路径来命名,并且把斜杠改成短划线。在/etc/fstab里的条目会有自动创建的单元。
automount:一个.automount单元配置了一个将会自动挂载的挂载点。这些必须根据涉及的挂载点来命令并且必须有匹配的.mount单元来定义挂载的细节。
swap:这个单元描述了系统里的交换空间。这些文件的名字必须体现设备或者空间文件。
target:一个目标单元是在启动或者改变状态时为其他单元提供同步点的。他们也可以用于把系统带进一个新的状态。其他单元指定他们的相当目标来绑定目标的操作。
path:这个单元定义了一个可用于基于路径激活的路径。默认情况下,当路径达到指定状态时一个相同基础名字的.service单元就会开始。这使用inotify来监控路径的变化。
timer:一个.timer单元定义了一个被systemd管理的定时器,类似于一个cron工作来延时或者计划激活。一个匹配的单元将会在计时器到达时开始。
.snapshot:一个.snapshot单元是被systemctl snapshot命令自动创建的。它可以让你在进行更改后重建系统的当前状态。快照不会跨会话生存,快照是用于回滚临时状态的。
slice:一个.slice单元是和Linux Control Group节点关联的,允许资源受到限制或者给关联的进程分匹配时间片。名字反映了它在cgroup树里的分层位置。单元默认根据他们的类型放在一定的位置。
scope:作用域单元是systemd根据从它的总线接口接收到的信息自动创建的。这些被用于外部创建的系统进程的管理集。
就像你看到的,有许多systemd知道如何去管理的不同单元。很多单元类型一起工作来增加功能。例如,一些单元用于触发其他单元和提供激活功能。
我们将会主要集中在.servic单元,因为他们的实用性和管理员需要管理这些单元的一致性。

2.2.2 systemd服务管理

systemctl命令可以控制系统服务,此命令涵盖了之前版本操作系统中的service命令和chkconfig命令两者的功能,在使用systemctl命令时,可以省略服务单元名称的表示.service。也就是如果输入资源无后缀表示,systemctl会默认把后缀标识当做.service来处理。
语法:systemctl 【OPTIONS…】{ COMMAND } …
1.查看服务启动状态
systemctl status name.service
查看服务状态处理status选项,systemctl还提供了另外两种查询服务状态方法
1)查看某个服务是否在启动成功状态
systemctl is-active named.service
2)查看某个服务是否在启动失败状态
systemctl is-failed named.service
2.启动与停止服务
systemctl {start|stop|restart|reload} name.service
注意:restart命令相当于先stop然后再start,此时服务的PID值会改变,而reload命令则是使服务读取和重新加载次服务的配置文件,不会完全停止和启动服务,PID不变。可以使用status命令验证。生产环境中建议reload命令。
3.设置开机启动
systemctl {enable|disable} name.service
4.查看依赖关系
systemctl list-dependencies
5.屏蔽服务
屏蔽服务命令 systemctl mask name.service
取消屏蔽使用命令 systemctl unmask name.serviceLinux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第34张图片

2.2.3 服务配置文件

使用systemctl list-nuit-files --type unit-tpe 命令可以列出指定systemd单元类型的所有配置文件及其状态。
单元配置文件状态一共有四种 enable/disable/static/masked

2.2.4 Target类型单元

此类配置单元为其他配置单元进行逻辑分组。它们本身实际上并不做什么,只是引用其他配置单元而已,这样便可以对配置单元做一个统一的控制,就可以实现大家都非常熟悉的运行级别的概念。比如,想让系统进入图形化模式,需要运行许多服务和配置命令,这些操作都由一个个的配置单元表示,将所有的这些配置单元组合为一个目标(target),就表示需要将这些配置单元全部执行一遍,以便进入目标所代表的系统运行状态(例如:multi-user.target相当于在传统使用sysv的系统中运行级别5)。
使用命令systemctl list-unit-files --type target 命令可以查看当前系统上的所有target

2.2.5 systemd其他命令

1.更改系统主机名
hostnamectl set-hostname www.example.com
2.查看主机名状态
hostnamectl status
3.日志系统
1)输出本次启动后的所有日志信息 journalctl -b
2)显示固定时间段日志 journalctl --since=“2020-12-8 18:00:00”
4.语言设置
localectl list-locales列出当前系统支持所有语言
5.登录系统用户信息
loginctl list-sessions
6.启动耗时
systemd-analyze blame查看每个服务的启动耗时

2.3 ntsysv工具

Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第35张图片Linux基础——引导过程与服务控制(MBR扇区修复,GRUB引导故障修复,遗忘root密码找回)(八)_第36张图片

你可能感兴趣的:(Linux基础)