Linux系统:引导过程与服务控制

目录

一、linux系统引导过程

1、引导过程介绍

1.1 引导过程总览图

 1.2 引导过程详解

1.3 系统初始化进程

1.4 Ststemd单元类型

1.5 运行级别所对应的Systemd目标

二、排除启动类故障 

1、修复MBR扇区故障

1.1 故障原因

1.2 故障现象

1.3 解决思路

1.4 详细操作步骤

1.4.1 在本机备份mbr文件

1.4.2 远程拷贝mbr文件

2、修复GRUB引导故障

2.1 故障原因

2.2 故障现象

2.3 解决思路

2.4 详细操作步骤

 3、遗忘root用户的密码

3.1 故障原因

3.2 故障现象

3.3 解决思路

3.4 详细操作步骤

3.4.1 有光驱模式重设密码

3.4.2 无光驱模式重设密码

三、服务程序管理

1、管理服务程序的状态

2、chkconfig

3、systemd

3.1 systemd命令

3.2 配置编译安装的程序软件开机自启动的步骤

3.2.1 编写nginx开机自启动的配置文件

3.2.2 重新加载所有配置文件并开启nginx服务

3.2.3 关闭nginx服务


一、linux系统引导过程

1、引导过程介绍

1.1 引导过程总览图

 1.2 引导过程详解

①BIOS加电自检:

  • 服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
  • 总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱

进入BIOS界面的方法 

选择“打开电源时进入固件”后,就能进入BIOS界面

修改BIOS加电自检硬件的优先级 

②MBR引导:

  • 当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR (主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB) 。
  • 总结:运行放在MBR扇区里的启动GRUB引导程序

③GRUB菜单

  • 对于Linux操作系统来说,GRUB (统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。CentOS 7采用的是GRUB2启动引导器。
  • 总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

④加载Linux内核

  • Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。CentOS 7系统中,默认的内核文件位于"/boot/vmlinuz-3.10.0-514.e17.x86_64"
  • 总结:把内核和镜像文件系统加载到内存中

⑤init进程初始化

  • 为了完成进一步的系统引导过程,Linux内核首先将系统中的"/sbin/init"程序加载到内存中运行(运行中的程序称为进程),init进程负责完成整个系统的初始化,最后等待用户进行登录。
  • 总结:加载硬件驱动程序,内核把init进程加载到内存中运行

 总过程详述:

加电后bios程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mbr 的指引找到完整的 grub 程序,再根据rub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。

1.3 系统初始化进程

①init进程

  • init是系统的初始化进程,负责启动和管理系统中的所有其他进程
  • 由Linux内核加载运行/sbin/init程序
  • init是Linux系统中的第一个用户空间进程,其进程ID(PID)始终为1
  • init通常通过/etc/inittab文件进行配置,并且它按照运行级别(runlevel)来启动系统服务和进程

②Systemd

  • Systemd是Linux操作系统的一种init软件
  • CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
  • CentOS7中运行的第一个init进程是/lib/systemd/systemd
Init与Systemd对比
Initsystemd
启动区别串行启动后续程序,按顺序一个个启动并行启动后续程序,全部一起启动
功能和特性init相对较为简单systemd提供了更多的功能和特性,是系统的级的程序,代为管理系统中的服务程序
配置方式init使用/etc/inittab文件进行配置systemd使用单元文件(unit files)进行配置
统一接口init需要依赖于多个独立的脚本文件systemd提供了统一的接口和工具来管理系统服务和资源

1.4 Ststemd单元类型

单元类型 扩展名说明
Service .service描述一个系统服务
Socket     .socket 描述一个进程间通信的套接字
Device        .device描述一个内核识别的设备文件
Mount     .mount 描述一个文件系统的挂载点
Automount      .automount 描述一个文件系统的自动挂载点
Swap      .swap描述一个内存交换设备或文件
Path       .path描述一个文件系统中文件或目录
Timer       .timer 描述一个定时器
Target     .target 描述一组systemd的单元

1.5 运行级别所对应的Systemd目标

运行级别      Systemd的target说明
0target    关机状态,使用该级别时将会关闭主机
1rescue.target    单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target 用户定义/域特定运行级别,默认等同于3,但是不能连网
3multi-user.target 字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机
命令说明
init 0关机
init 1单用户模式相当于windows安全模式
init 2用户,没网
init 3多用户模式 字符界面没装图形化界面,默认为init3
init 4保留
init 5图形化界面,多用户化模式
init 6  或  reboot重新启动
runlevel          //查看系统当前运行级别

systemctl get-default               //查看默认的运行级别
systemctl set-default               //设置默认的运行级别

二、排除启动类故障 

1、修复MBR扇区故障

1.1 故障原因
  • 病毒、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作
1.2 故障现象
  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏
1.3 解决思路
  • 应提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复
1.4 详细操作步骤

要求:模拟破坏mbr及其分区表,然后对其进行修复

 1.4.1 在本机备份mbr文件

步骤一:新添加一块硬盘,并将mbr备份文件拷贝到新硬盘

①新添加一块硬盘

磁盘建立完成后,使用以下三条命令刷新新建的磁盘设备,不需要重启

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

②创建新硬盘的主分区

 如果分区不能识别时,使用以下命令后,可查看新添加的磁盘主分区

partprobe /dev/sdb

 ③对主分区进行格式化

mkfs.xfs  /etc/sdb1         //格式化

 ④挂载

mount /dev/sdb1 /mnt       //挂载

⑤ 将mbr备份文件拷贝到新硬盘

dd if=/dev/sda of=/mnt/mbr count=1 bs=512           //将mbr备份文件拷贝到新硬盘

步骤二:模拟破坏mbr及其分区表

dd if=/dev/zero of=/dev/sda count=1 bs=512     //向/dev/sda的前512字节写0覆盖原来内容
hexdump -C -n 512 /dev/sda                  //查看前512字节

 步骤三:进入急救模式恢复mbr

①reboot重启后,选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Continue”后,进入急救模式

②将备份文件拷贝到/dev/sda

mkdir bak         //新建文件夹
mount /dev/sdb1 bak     //将存有备份文件的硬盘挂载到新建文件夹下
dd if=bak/mbr of=/dev/sda          //将备份文件添加到原本的目录下
hexdump -C -n 512 /dev/sda       //查看到/dev/sda前512字节已恢复

重启即可正常使用系统

1.4.2 远程拷贝mbr文件

 步骤一:临时设置远程IP地址和子网掩码

ifconfig ens33 172.16.12.12/24        //临时设置远程IP地址和子网掩码

步骤二:scp远程复制文件

dd if=/dev/sda of=/mnt/mbr count=1 bs=512    //拷贝/dev/sda到/mnt/mbr
scp /mnt/mbr 172.16.12.12:/opt         //scp远程复制文件

 步骤三:模拟破坏mbr及其分区表

dd if=/dev/zero of=/dev/sda count=1 bs=512     //向/dev/sda的前512字节写0覆盖原来内容
hexdump -C -n 512 /dev/sda                  //查看前512字节

步骤四: 进入急救模式恢复mbr

①reboot重启后,选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Skip to shell”后,进入急救模式

②拷贝远端设备的备份文件mbr到主机当前目录下,并将其添加到原本的目录下

ifconfig ens33 172.16.12.10/24       //设置主机临时ip地址
scp 172.16.12.12:/opt/mbr .          //拷贝远端设备的备份文件mbr到主机当前目录下
dd if=mbr of=/dev/sda             //将备份文件添加到原本的目录下
hexdump -C -n 512 /dev/sda       //查看到/dev/sda前512字节已恢复

2、修复GRUB引导故障

2.1 故障原因
  • MBR中的GRUB引导程序遭到破坏
  • grub.conf文件丢失、引导配置有误
2.2 故障现象
  • 系统引导停滞,显示‘grub>’提示符
2.3 解决思路
  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序
2.4 详细操作步骤

要求:模拟破坏grub文件及程序,然后对其进行修复

步骤一:模拟破坏grub.cfg配置文件

mv /boot/grub2/grub.cfg /opt     //将在规定目录下的grub.cfg配置文件移动到/opt

步骤二:重启进入急救模式

①reboot重启后,在starting读档的2s间快速按一次“ESC”键,出现“Boot Menu”界面,选择“CD-ROM Drive”,再选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Continue”后,进入急救模式

②切换根后,重新安装grub2程序

chroot /mnt/sysimage     //从光盘的根切换到主机系统的根
grub2-install /dev/sda   //重新在sda磁盘中安装grub2程序
grub2-mkconfig -o /boot/grub2/grub.cfg   //重新生产配置文件
exit     //退出
reboot   //重启

 3、遗忘root用户的密码

3.1 故障原因
  • 忘记root用户的密码
3.2 故障现象
  • 无法进行需要root权限的管理操作
  • 若没有其他可以账号,将无法登陆系统
3.3 解决思路
  • 进入急救模式,重设密码
3.4 详细操作步骤
3.4.1 有光驱模式重设密码
chroot /mnt/sysimage     //从光盘的根切换到主机系统的根
passwd 用户名            //修改密码
exit     //退出
reboot   //重启

3.4.2 无光驱模式重设密码

①进入系统时选择内核界面,选中第一个选项并按“e”键

②将光标移动到Linux开头行的最后,添加rd.break,然后“ctrl+x”运行,进入单用户模式

③进入单用户模式后,重新挂载并添加读写权限,然后切换到系统的根修改密码

mount -o remount,rw /sysroot    //重新挂载并添加读写权限
chroot /mnt/sysimage     //从光盘的根切换到主机系统的根
passwd 用户名            //修改密码
touch /.autorlabel       //如果开启selinux需重新打上标记
exit     //退出
reboot   //重启

三、服务程序管理

1、管理服务程序的状态

开机、关机、重启、重新加载配置文件、查看状态、开机自启、开机不自启

2、chkconfig

chkconfig是Linux系统中早期的服务管理工具,应用于CentOS 6

chkconfig系统服务控制命令
命令说明
service  服务程序  start开启服务程序
service  服务程序  stop关闭服务程序
service  服务程序  restart重新启动服务程序
service  服务程序  reload重新加载服务程序
service  服务程序  status查看服务程序的当前状态
chkconfig  --level  35  服务程序  on开机自启动服务程序的字符界面和图形界面
chkconfig  --level  35  服务程序  off关闭开机自启动服务程序的字符界面和图形界面
chkconfig  --add  服务程序添加自启动的服务程序

3、systemd

3.1 systemd命令

systemd是一个相对较新的系统管理器和初始化系统,应用于CentOS 7

systemd系统服务控制命令
命令说明
systemctl  start  服务程序1  服务程序2……开启服务程序
systemctl  stop  服务程序1  服务程序2……关闭服务程序
systemctl  status  服务程序1  服务程序2……查看服务程序的当前状态
systemctl  reload  服务程序1  服务程序2……重新加载服务程序
systemctl  restart  服务程序1  服务程序2……重新启动服务程序
systemctl  enable  服务程序名开机自启服务程序
systemctl  disable  服务程序名开机不自启服务程序
systemctl  enable  --now  服务程序名开机自启,并立即启动
systemctl  disable  --now  服务程序名开机不自启,并立即关闭
3.2 配置编译安装的程序软件开机自启动的步骤

前提:以编译安装完的nginx服务软件为例

3.2.1 编写nginx开机自启动的配置文件
vim /usr/lib/systemd/system/nginx.service         //编写nginx开机自启动的配置文件

[Unit]
Description=The nginx HTTP and reverse proxy server     //描述软件的功能

[Service]
Type=forking
PIDFile=/dh17/nginx/logs/nginx.pid                      //指定nginx进程的pid号
ExecStart=/dh17/nginx/sbin/nginx                        //使用绝对路径启动nginx可执行文件
ExecStop=/usr/bin/kill -s TERM $MAINPID                 //杀死nginx的主进程pid号
ExecReload=/dh17/nginx/sbin/nginx -s reload             //nginx命令发送重新加载的信号

[Install]
WantedBy=multi-user.target                              //安装字符界面

 3.2.2 重新加载所有配置文件并开启nginx服务
systemctl daemon-reload      //通知systemd重新加载所有的配置文件
systemctl start nginx        //开启nginx服务
systemctl status nginx       //查看nginx当前状态

pstree -p | grep nginx       //查看当前nginx进程的pid号

ss -natp | grep 80       //查看80端口的进程信息

 3.2.3 关闭nginx服务
systemctl stop nginx        //关闭nginx服务
systemctl status nginx       //查看nginx当前状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/287153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

密码学:带密钥的消息摘要算法一数字签名算法

文章目录 前言手写签名和数字签名前置知识点:消息摘要算法数字签名算法数字签名算法的由来数字签名算法在实际运用的过程附加:签名和摘要值的解释 数字签名算法的家谱数字签名算法的消息传递模型经典数字签名算法-RSA实现 数字签名标准算法-DSA实现 圆曲…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

【VTK-Rendering::Core】第二期 vtkTextActor

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文以vtkTextActor为起点,分享VTK中Text相关的内容,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步&a…

提升三维模型数据的几何坐标纠正速度效率具体技术方法

提升三维模型数据的几何坐标纠正速度效率具体技术方法 根据搜索结果,以下是提升倾斜摄影三维模型数据的几何坐标纠正和三维重建速度的具体技术方法: 1、增加控制点:通过增加控制点数量可以提高几何坐标精度。控制点是已知地面坐标的点&#…

儿童可以戴骨传导耳机吗?骨传导耳机对儿童有危害吗?

儿童是可以佩戴骨传导耳机的,相比于传统的入耳式蓝牙耳机,佩戴骨传导耳机要更健康一些。 首先骨传导耳机通过人体骨骼来传递声音,不经过耳道和耳膜,所以对听力的损伤较小,而且由于儿童还处于发育期,耳道和耳…

【并发设计模式】聊聊等待唤醒机制的规范实现

在多线程编程中,其实就是分工、协作、互斥。在很多场景中,比如A执行的过程中需要同步等待另外一个线程处理的结果,这种方式下,就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现,以及对应的应用场景。 G…

{“sn“:““,“error“:3,“desc“:“VAD is not available“,“sub_error“:3100}解决办法

目录 问题描述: 解决顺序: 问题描述: 这个问题是在使用百度语音识别时出现的问题,当一切都配置好之后,启动程序,点击录音,发现程序并没有执行onEvent方法,直接闪退了,当断点调试时发现程序并没有进入onEvent方法,抛出异常{"sn":"","erro…

从0搭建github.io网页

点击跳转到🔗我的博客文章目录 从0搭建github.io网页 文章目录 从0搭建github.io网页1.成果展示1.1 网址和源码1.2 页面展示 2.new对象2.1 创建仓库 3.github.io仓库的初始化3.1 千里之行,始于足下3.2 _config.yml3.3 一点杂活 4.PerCheung.github.io.p…

2024/1/2 C++ work

全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类,私有属性 …

k8s中实现pod自动扩缩容

一、k8s应用自动扩缩容概述 1)背景: 在实际的业务场景中,我们经常会遇到某个服务需要扩容的场景(例如:测试对服务压测、电商平台秒杀、大促活动、或由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作&…

gzip的了解

基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发扮了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 vue Vue CLI修改vue.config.js&a…

MySQL 临时表

MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。 临时表只在当前连接可见,当关闭连接时,MySQL 会自动删除表并释放所有空间。 在 MySQL 中,临时表是一种在当前会话中存在的表,它在会话结束时会自动被销毁…

vue3按钮点击频率控制

现有一个按钮&#xff0c;如下图 点击时 再次点击 刷新窗口再次点击 刷新窗口依然可以实现点击频率控制。 代码实现&#xff1a; <template><!--<el-config-provider :locale"locale"><router-view/></el-config-provider>--><el…

Java学习苦旅(十六)——List

本篇博客将详细讲解Java中的List。 文章目录 预备知识——初识泛型泛型的引入泛型小结 预备知识——包装类基本数据类型和包装类直接对应关系装包与拆包 ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList遍历 结尾 预备知识——初识泛型 泛型的引入 我…

机器人制作开源方案 | 多地形适应野外探索智能车

1. 作品基本介绍 如今&#xff0c;智能机器人在军事、制造业、交通运输、航天航空、医疗、服务等领域已有广泛的应用&#xff0c;智能车是机器人研究领域的一项重要基础内容&#xff0c;在各种移动机构中&#xff0c;最为常见的是轮式移动方式&#xff0c;当今社会正处于科技高…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器&#xff09; P —— Proportional I —— Integral D —— Derivative 当前误差/过去误差/误差的变化趋势 K p ⋅ e K_{\mathrm{p}}\cdot e Kp​⋅e&#xff1a;比…

C++基本语言:1.5结构、pbulic、private权限修饰符、类简介

C基本语言包含10章节内容&#xff0c;存于C从入门到精通专栏 目录 一、结构回顾 ①结构变量作为参数 ②采用引用 ③用指向结构体的指针做函数参数 问&#xff1a;C/C的结构有何区别&#xff1f; 二、public和private权限修饰符 三、类简介&#xff1a;类也是一种用户自…

EBU7140 Security and Authentication(三)密钥管理;IP 层安全

B3 密钥管理 密钥分类&#xff1a; 按时长&#xff1a; short term&#xff1a;短期密钥&#xff0c;用于一次加密。long term&#xff1a;长期密钥&#xff0c;用于加密或者授权。 按服务类型&#xff1a; Authentication keys&#xff1a;公钥长期&#xff0c;私钥短期…

【InnoDB数据存储结构】第1章节:数据页存储结构

目录结构 之前整篇文章太长&#xff0c;阅读体验不好&#xff0c;将其拆分为几个子篇章。 本篇章讲解 InnoDB 数据页的存储结构。 数据的存储结构 索引是在存储引擎中实现的&#xff0c;MySQL 服务器上的 存储引擎负责对表数据的读取和写入。 但是不同存储引擎对 数据存放格…

Open3D 最小二乘拟合平面——拉格朗日乘子法

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +