引导过程与故障修复

一、Linux操作系统引导过程

1、引导过程总览

开机自检

检查硬件设备,检测出第一个能够引导系统的设备,比如硬盘或者光驱 

 MBR 引导

运行MBR扇区里的主引导程序GRUB

启动GRUB菜单

统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面 。

加载Linux内核

把内核加载到内存,将系统控制权交接给内核

 init进程初始化

 内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程

系统初始化      

启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等 

 2、系统初始化进程

init进程

  • init进程文件位于 /sbin/init -> /lib/systemd/systemd 
  • init进程PID号固定为 1 ,是系统中其它所有进程的父进程
  • init 进程负责完成整个系统的初始化,最后等待用户进行登录

Systemd

  •  Systemd是Linux操作系统的一种init软件
  •  CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
  • CentOS7中运行的第一个init进程是/lib/systemd/systemd

进程启动方式 

  • centos7开始的版本默认的启动方式是 systemd,开机服务程序为并行启动,启动效率较快
  • centos6及以前版本的启动方式是 sysVinit,开机服务程序是通过串行执行/etc/init.d/目录下的shell脚本启动的,容易阻塞,启动效率较慢

System单元类型

Linux的运行级别

运行级别说明对应的Systemd的target
0关机poweroff.target
1单用户模式rescue.target
2字符界面的多用户模式(无网络)multi-user.target
3字符界面的多用户模式(有网络)multi-user.target
4字符界面的多用户模式(保留)multi-user.target
5图形界面的多用户模式graphical.target
6重启reboot.target

二、系统故障修复

1、修复MBR扇区故障

MBR   主引导程序 1~446字节   硬盘分区表 447~510字节

如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原

备份命令:dd if=/dev/sda  of=备份文件  bs=512  count=1
还原命令:dd if=备份文件  of=/dev/sda

解决思路:

  1. 应提前作好备份文件
  2. 以安装光盘引导进入急救模式
  3. 从备份文件中恢复

 实例:修复MBR扇区故障

步骤一:增加一块硬盘,用于存放数据

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x2d7e90b8 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):w^H
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131072 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir mbr-bak
[root@localhost opt]# mount /dev/sdb1 /opt/mbr-bak/
[root@localhost opt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        26G  4.4G   22G   17% /
/dev/sda1               xfs      1014M  187M  828M   19% /boot
tmpfs                   tmpfs     378M  8.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/1000
/dev/sdb1               xfs       2.0G   33M  2.0G    2% /opt/mbr-bak
[root@localhost opt]# dd if=/dev/sda of=/opt/mbr-bak/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00112141 秒,457 kB/秒
[root@localhost opt]# ll -h
总用量 0
drwxr-xr-x. 2 root root 21 4月  18 03:12 mbr-bak
drwxr-xr-x. 2 root root  6 10月 31 2018 rh

步骤二:备份MBR扇区数据到其他磁盘(/dev/sdb1)

if指定从何处提取数据,of表示备份到何处,bs指定提取的大小,count指定次数

步骤三:模拟破坏MBR引导扇区 

步骤四:进行恢复操作

 

实例:修复GRUB引导故障 

方法:

  1.  尝试手动输入引导命令
  2.  进入急救模式,重写或者从备份中恢复grub.conf
  3. 向MBR扇区中重建grub程序

实例:

步骤一:删除grub.cfg文件并重启

方法一:手动输入引导命令(笨拙繁琐,不建议使用)


grub> insmod xfs                                                                 #加载指定的模块到内核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8               #内核的名字及位置等信息
grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img            #镜像系统文件
grub> boot                                                                            #引导boot

方法二:

 

重启后,文件已恢复,如图: 

实例:MBR 的GRUB主引导程序被破坏

 

进入急救页面。重建MBR数据

总结:

启动类故障恢复
MBR   主引导程序 1~446字节   硬盘分区表 447~510字节
如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原

备份命令:dd if=/dev/sda  of=备份文件  bs=512  count=1
还原命令:dd if=备份文件  of=/dev/sda
  

如果是 MBR 的GRUB主引导程序被破坏了

(1)在急救模式下使用备份文件恢复          dd if=备份文件  of=/dev/sda  bs=446  count=1
(2)在急救模式下重建MBR的GRUB主引导程序   chroot /mnt/sysimage   ->   grub2-install /dev/sda
      

如果是GRUB配置文件被删了

在急救模式下重建GRUB配置文件  chroot /mnt/sysimage   ->   grub2-mkconfig -o /boot/grub2/grub.cfg

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何进行数据库的迁移与同步——【DBA 从入门到实践】第四期

在日常的数据库运维工作中,我们时常会面临数据库替换、机房搬迁、业务测试以及数据库升级等任务,这些任务都需要对数据进行迁移和同步操作。【DBA 从入门到实践】第4期,将引导大家深入了解数据库迁移的流程,并探讨在迁移过程中可用…

CTFHUB RCE作业

题目地址:CTFHub 完成情况如图: 知识点: preg_match_all 函数 正则匹配函数 int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags PREG_PATTERN_ORDER [, int $offset 0 ]]] )搜索 subject 中…

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

linux 安装openjdk-1.8

安装命令 yum install java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64查看安装路径 find / -name java 默认的安装路径 /usr/lib/jvm 查看到jre 以及java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 配置环境变量 vim /etc/profile 添加的内容 export JAVA_HOME/usr/li…

【面试经典 150 | 二分查找】寻找两个正序数组的中位数

文章目录 写在前面Tag题目来源题目解读方法一:朴素方法二:二分查找【寻找第k小元素】 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab,并且打开其中的终端开始环境配置、模型下…

华为机考入门python3--(15)牛客15-求int型正整数在内存中存储时1的个数

分类:二进制 知识点: int转二进制 binary bin(n)[2:] 题目来自【牛客】 def count_ones_in_binary(n): # 将输入的整数转换为二进制字符串 # bin(n)为0b11011binary bin(n)[2:]# 初始化计数器为0 count 0 # 遍历二进制字符串的每一位 fo…

LoRA模型是什么?

AI Agent能力评测工具AgentBench评测结果 LoRA模型是什么? LoRA模型(Low-Rank Adaptation of Large Language Models)是一种针对大型语言模型(LLMs)的微调技术,其目的是在保持模型原有性能的基础上&#x…

YOLTV8 — 大尺度图像目标检测框架(欢迎star)

YOLTV8 — 大尺度图像目标检测框架【ABCnutter/YOLTV8: 🚀】 针对大尺度图像(如遥感影像、大尺度工业检测图像等),由于设备的限制,无法利用图像直接进行模型训练。将图像裁剪至小尺度进行训练,再将训练结果…

未来课堂革命:OpenAI 发布 ChatGPT 使用指南,探索生成式 AI 如何重塑教育景观

随着新学期的来临,众多初登教师舞台的 00 后们,也完成了他们的第一个教师身份下的暑期生活。 对于开学的抵触情绪,不仅学生们普遍存在,许多 00 后的新晋教师们也同样感同身受。某种程度上,这些抗拒上班的年轻教师群体…

Springboot+Vue项目-基于Java+MySQL的高校心理教育辅导系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

【面试题】MySQL 事务的四大特性说一下?

事务是一个或多个 SQL 语句组成的一个执行单元,这些 SQL 语句要么全部执行成功,要么全部不执行,不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务的主要作用是保证数…

金蝶云星空与金蝶云星空对接集成委外超耗查询连通生产订单变更(发顺丰)

金蝶云星空与金蝶云星空对接集成委外超耗查询连通生产订单变更(发顺丰) 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框…

FPGA - ZYNQ 基于EMIO的PS和PL交互

前言: Xilinx ZYNQ系列的芯片,GPIO分为 MIO 、EMIO、AXI_GPIO三种方式。 MIO :固定管脚,属于PS端,也就是ARM端。 EMIO :通过PL扩展,使用时需要分配PL(FPGA)管脚,消耗PL端资源。…

【GPT-4最新研究】GPT-4与科学探索:揭秘语言模型在科学领域的无限可能

各位朋友们,你们知道吗?自然语言处理领域最近取得了巨大的突破!大型语言模型(LLM)的出现,简直就像打开了新世界的大门。它们不仅在语言理解、生成和翻译方面表现出色,还能涉足许多其他领域&…

二叉树的中序遍历 - LeetCode 热题 36

大家好!我是曾续缘😃 今天是《LeetCode 热题 100》系列 发车第 36 天 二叉树第 1 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输…

React-路由(一)

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-路由(一) 目录 1、介绍 2、路由的使用 2.1、相关组件 2.2、声…

白话微机:10.民风淳朴的MCS-51小镇(小镇方言:汇编)

1. 基本结构与周期 MCS-51系列单片机属于8位单片机用 8051单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可MCS-51单片机由CPU、存储器和I/O三部分组成CPU是指:运算器和控制器 “PC CPU 3BUS RAM I/O” 在执行指令过程中&#xff…

财富池指标公式--通达信免费指标公式源码合集--第四期

久等了,今天这期通达信免费指标公式合集如约而至,依旧是三个不同功能的技术指标,看看有没有你正在找的吧! 一、通达信背离出黑马指标,背离趋势分析指标源码 ​ ​具体信号说明: 1、出现底背离为买入信号…

计算机视觉——基本矩阵的计算

最近在上研究生的课程《计算机视觉》,完成了老师布置的大作业,结合我看《计算机视觉中的多视图几何》的一些感悟和收获完成此篇博客。在学习的过程中我发现很多算法并没有开源,或者版本太落后难以执行,因此想通过这篇博客将一些算…