当前位置: 首页 > news >正文

CentOS7系统MBR、GRUB2、内核启动流程报错问题

目录

🥩Linux启动流程

🥩MBR修复

🍭1、模拟损坏

🍭2、重启测试

🍭3、修复MBR

🍭4、测试系统

🥩GRUB2修复

🍭1、模拟损坏

🍭2、修复GRUB2

🍭3、测试系统

🥩内核修复

🍭1、模拟损坏

🍭2、修复内核

🍭3、测试系统


     🦐博客主页:大虾好吃吗的博客

     🦐专栏地址:服务器管理

Linux启动流程

        在生产环境中系统出现bug,作为一个运维需要知道问题出在哪,查看系统日志/使用测试工具/使用top等系统资源命令查看。另一种情况系统直接崩了,开机无法打开。那我们就需要看下面Linux(CentOS7)启动系统的顺序。根据系统给出的提示修复系统。

来自GPT给出的Linux启动流程可以大致分为以下几个阶段:

  1. BIOS/UEFI阶段:计算机通电后,会首先执行计算机的基本输入输出系统(BIOS)或统一固件接口(UEFI)。在这个阶段,固件会进行硬件自检和初始化工作,并加载引导设备的Master Boot Record(MBR)或EFI系统分区的启动程序。

  2. Bootloader阶段:引导设备的MBR或EFI系统分区的启动程序会加载操作系统的引导加载器,例如Grub或Syslinux。引导加载器会提供一个菜单,让用户选择加载哪个操作系统或启动选项。

  3. 内核加载阶段:一旦用户选择了启动选项,引导加载器会加载Linux内核(通常是一个压缩的镜像文件,如vmlinuz)。加载内核时,引导加载器还会传递一些附加的启动参数,用于配置内核的行为。

  4. 内核初始化阶段:内核被加载后,它会进行一系列的初始化操作,包括检测和配置硬件设备、初始化内存管理、挂载文件系统等。内核还会启动第一个用户空间进程(init进程),该进程负责系统的进一步初始化和启动其它进程。

  5. 用户空间初始化阶段:在内核初始化完毕后,init进程会按照配置文件(通常是/etc/inittab)中的指示,启动一系列的用户空间服务和进程。这些进程包括系统服务(如网络服务、时间服务等)和用户登录界面(如图形界面或命令行界面)等。

  6. 用户登录阶段:一旦用户空间初始化完成,系统会提供一个用户登录界面,用户可以输入用户名和密码来登录系统。一旦登录成功,用户就可以开始使用操作系统提供的各种功能和进行各种操作。

        总结:开机BIOS自动检测系统,通过MBR引导通过BRU2菜单选择哪个系统(如双系统),选择启动选项后加载内核文件,systemd初始化。

        通过上面我们简单了解了下Linux的启动进程,我们下面模拟损坏并修复。

MBR修复

        Linux MBR(Master Boot Record)是系统引导时非常重要的一个数据块,引导环境通常安装在磁盘的第一个扇区。

1、模拟损坏

        我们这里使用虚拟环境模拟MBR损坏,MBR损坏通常有两种情况,MBR文件损坏或grub目录被误删。我们现在模拟损坏只需要把磁盘的第一个扇区前446个字节破坏掉,就可以起到MBR损坏的作用。

打开虚拟机,使用漏洞命令模拟损坏。

[root@daxia ~]# dd if=/dev/zero of=/dev/sda bs=100 count=1
记录了1+0 的读入
记录了1+0 的写出
100字节(100 B)已复制,0.00072338 秒,138 kB/秒
[root@daxia ~]# sync

2、重启测试

重启后,发现系统自动使用PXE寻找网络中的系统,说明MBR引导找不到系统了。

3、修复MBR

        下面我们就开始修复MBR,关闭服务器,挂载系统光盘,进入急救模式。注意:我这里直接关闭了虚拟机,选择iso文件后,默认是启动时连接。开启虚拟机后进入第三选项(急救模式)。

在开启服务器后的操作如下:

Troubleshooting→Rescue a CentOS system→ 1 (注意这有个1表示选择继续)

        在急救模式修复,执行下面命令。默认进入的系统可以称为伪系统,而执行chroot /mnt/sysimage 后看到的才能称之为真正的系统。重启(先exit退出再再执行reboot重启)测试系统是否正常使用,我这是虚拟环境,你的系统如果有服务或文件,测试起来更好一些。

4、测试系统

        进入后默认是登录页面,选择用户名登录,因为我这个没有开始创建文件,也没有服务,只能测试出系统正常开机,你做第二遍的时候记得搭建一些服务。

GRUB2修复

1、模拟损坏

注意:挂载光盘

        我们先找到grub2菜单文件的存放位置,删除文件达到模拟损坏的条件。这回我们想着先创建一个文件,后面修复后查看是否还有。grub2目录在boot下,删除它后关机。

[root@daxia ~]# mkdir /daxia
[root@daxia ~]# vim /daxia/test.txt
[root@daxia ~]# cat /daxia/test.txt 
aaaaaaaaaa
bbbbbb
ccccccc
daxia
[root@daxia ~]# cd /boot/grub2/
[root@daxia grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@daxia grub2]# rm -rf *
[root@daxia grub2]# ls
[root@daxia grub2]# init0

可以自己重启测试一下,我这里就省略了。

2、修复GRUB2

启动前先修改为光盘启动,否则还是找不到grub2菜单。

选择boot→找到光盘按小键盘+把启动顺序设置为第一位→f10保存退出。

        这时又来到了急救模式,选择3→第二页选择2(可以看上面MBR修复)→输入 1(表示继续),后面可能让你按回车键进入一个shell。

输入下面命令修复GRUB2菜单 

退出后还是需要进入BIOS修改启动顺序。(f10保存退出)

3、测试系统

进入后默认是登录页面,选择用户名登录,查看之前创建的目录和文件是否丢失,顺便查看一下grub2

[root@daxia ~]# ls /daxia/
test.txt
[root@daxia ~]# cat /daxia/test.txt 
aaaaaaaaaa
bbbbbb
ccccccc
daxia
[root@daxia ~]# ls /boot/grub2/
fonts  grub.cfg  grubenv  i386-pc  locale

        通过上面查看,系统修复了文件不会丢失。就好比windows,系统的C盘坏了,但是D盘、E盘里的文件会消失吗(有其他特殊情况),这样一整会不会对系统的理解又深了一个层次。你要是没搞懂,可以多做几遍,要还是没懂,那就是我的问题了。

内核修复

1、模拟损坏

注意:挂载光盘

        内核文件丢失其实可以和上面一起说,步骤基本相同,下面就简单讲讲。删除boot目录下的内核文件。vmlinuz-3.10.0-1160.el7.x86_64 内核文件

[root@daxia ~]# cd /boot/
[root@daxia boot]# ls
config-3.10.0-1160.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-e09f912b047c4b689d2483741b68d6d3.img
initramfs-3.10.0-1160.el7.x86_64.img
symvers-3.10.0-1160.el7.x86_64.gz
System.map-3.10.0-1160.el7.x86_64
vmlinuz-0-rescue-e09f912b047c4b689d2483741b68d6d3
vmlinuz-3.10.0-1160.el7.x86_64
[root@daxia boot]# rm -rf vmlinuz-3.10.0-1160.el7.x86_64 

自行测试一下,启动后选择系统进不去

2、修复内核

关机后进入BIOS,继续选择光盘启动(上面有,过程略)。

        进入急救模式,我这里显示了boot(直接按回车),然后选项3→2→按键1(跟上面操作一样进入急救模式)。

3、测试系统

到这里就是最后一步,修改BIOS的启动项,进入系统测试是否文件丢失。

相关文章:

CentOS7系统MBR、GRUB2、内核启动流程报错问题

目录 🥩Linux启动流程 🥩MBR修复 🍭1、模拟损坏 🍭2、重启测试 🍭3、修复MBR 🍭4、测试系统 🥩GRUB2修复 🍭1、模拟损坏 🍭2、修复GRUB2 🍭3、测试系统 &…...

剑指YOLOv5改进最新MPDIoU损失函数(23年7月首发论文):超越现有多种G/D/C/EIoU,高效准确的边界框回归的损失,高效涨点

💡本篇内容:剑指YOLOv5改进最新MPDIoU损失函数(23年7月首发论文):超越现有多种G/D/C/EIoU,高效准确的边界框回归的损失,高效涨点 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指YOLOv5原创改进》只更新…...

CAN bus off ——ISO11898

什么是can bus off? CAN总线关闭(CAN bus off)是指CAN节点进入一种错误状态,无法继续正常的数据通信。当一个CAN节点的错误计数器超过了设定的阈值时,该节点将进入CAN总线关闭状态。在这种状态下,该节点将停…...

如何评测一个大语言模型?

编者按:大型语言模型(Large language models, LLMs)因其在学术界和工业界展现出前所未有的性能而备受青睐。随着 LLMs 在研究和实际应用中被广泛使用,对其进行有效评测变得愈发重要。近期已有多篇论文围绕大模型的评测进行研究&am…...

React中useMemo和useCallback的区别

一句话来解释,useMemo是缓存值的,useCallback是缓存函数的。 一、useMemo: 接收两个参数,第一个参数是个函数,第二个是依赖项。返回一个memoized值,只有当它的某个依赖项改变时才重新计算 memoized 值&…...

SpringBoot 快速实现IP地址解析

如果使用本地ip 解析的话&#xff0c;我们将会借助ip2region&#xff0c;该项目维护了一份较为详细的本地ip 地址对应表&#xff0c;如果为了离线环境的使用&#xff0c;需要导入该项目依赖&#xff0c;并指定版本&#xff0c;不同版本的方法可能存在差异。 <dependency>…...

亚马逊、速卖通,阿里国际等平台测评如何用自养号测评补单

在电商领域&#xff0c;补单是一种常见的推广方式。它能够优化商品销售、留下优质评论、打压竞品和赶走跟卖等&#xff0c;具有很多好处。然而&#xff0c;补单也存在安全性问题&#xff0c;有些卖家找人补单后店铺反而出了问题。因此&#xff0c;了解测评系统是非常重要的的。…...

ubuntu挂载ext4文件系统

文章目录 1.虚拟机分配10G磁盘用来挂载ext4文件系统2.磁盘分区3.创建文件系统4.挂载文件系统5.卸载文件系统6.使用ior测试ext4三种日志模式&#xff08;1&#xff09;ordered&#xff08;2&#xff09;journal&#xff08;3&#xff09;writeback 1.虚拟机分配10G磁盘用来挂载e…...

MySQL 读写分离

目录 一、什么是读写分离&#xff1f; 二、为什么要读写分离呢&#xff1f; 三、什么时候要读写分离&#xff1f; 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1&#xff09;基于程序代码内部实现 2&#xff09;基于中间代理层实现…...

【多线程例题】顺序打印abc线程

顺序打印-进阶版 方法一&#xff1a;三个线程竞争同一个锁&#xff0c;通过count判断是否打印 方法二&#xff1a;三个线程同时start&#xff0c;分别上锁&#xff0c;从a开始&#xff0c;打印后唤醒b 三个线程分别打印A&#xff0c;B&#xff0c;C 方法一&#xff1a;通过co…...

WebSocket工具类

最近的项目在整长连接WebSocket&#xff0c;之前也写过一个感觉没有这个全面。提供个工具类WebSocketHelper和Java-WebSocket-1.3.9.jar包以及一个HttpURLConnectionUtil 1、WebSocketHelper import android.util.Log;import org.java_websocket.client.WebSocketClient; imp…...

Linux 的 crontab

Linux 的 crontab 是一个用于在特定时间运行命令或脚本的工具。每个用户都可以创建自己的 crontab 文件来安排定时任务。 以下是使用 Linux crontab 的基本步骤&#xff1a; 打开终端或命令行界面。 输入以下命令来编辑当前用户的 crontab 文件&#xff1a; crontab -e如果是…...

十二.Redis模拟集群搭建

配置环境 查看环境信息 127.0.0.1:6379> info replication #查看当前redis的信息 # Replication role:master #角色 master主机 connected_slaves:0 #从机数量为0 master_failover_state:no-failover master_replid:115f37a0ec195680ef754d6915738b0c0a05f450 master_replid…...

IDEA导入微服务项目后自动将微服务展示在service面板中

有时候&#xff0c;不会自动将微服务展示在service面板中。 添加service面板&#xff1a; service面板&#xff1a; 更新所有maven&#xff0c;就可以自动将微服务展示在service面板中。...

MySQL体系结构及执行过程

一、MySQL体系结构 1、网络连接层 客户端连接器&#xff08;Client Cnnectors&#xff09;&#xff1a;提供支持与MySQL服务器建立连接。 建立连接命令&#xff1a;mysql -h -u -p -h指定MySQL服务的IP 若本地连接则不需要 每一个连接均会保存用户权限&#xff0c;中途修改权…...

21. MySQL基础知识

文章目录 一、索引B Tree 原理1. 数据结构2. 操作3. 与红黑树的比较 MySQL 索引1. BTree 索引2. 哈希索引3. 全文索引4. 空间数据索引 索引优化1. 独立的列2. 多列索引3. 索引列的顺序4. 前缀索引5. 覆盖索引 索引的优点索引的使用条件 二、查询性能优化使用 Explain 进行分析优…...

【ArcGIS Pro微课1000例】0029:绘制全球海洋波纹荡漾效果图

本文讲解ArcGIS Pro3.0中,基于全球航洋面状矢量数据,绘制震撼全球海洋波纹荡漾效果图。 文章目录 一、效果预览二、效果制作三、参数详解一、效果预览 绘制好的海水波纹荡漾效果图如下: 下面我们来学习绘制过程。 二、效果制作 波纹荡漾效果需要在全局或者局部场景中制作…...

2023“钉耙编程”中国大学生算法设计超级联赛(3)8-bit Zoom

2023“钉耙编程”中国大学生算法设计超级联赛&#xff08;3&#xff09;8-bit Zoom 题解 有一张尺寸为 n n n\times n nn的图片&#xff0c;你要将图片放大成大小为 n Z 100 n Z 100 \dfrac{nZ}{100}\times \dfrac{nZ}{100} 100nZ​100nZ​的图片。 当下列任何一个条件不成…...

【PWN · ret2text | 伪rand()】[HDCTF 2023]pwnner

伪随机数以及ctypes库的初步接触 目录 前言 一、题目 二、解题思路 三、exp 总结 前言 一道简单的ret2text&#xff0c;加上一些伪随机的知识&#xff0c;对于本蒟蒻萌新来说&#xff0c;比较新&#xff0c;值得记录。 一、题目 栈溢出保护、PIE保护都没有开。反汇编后…...

第五章:通过对抗擦除的目标区域挖掘:一种简单的语义分割方法

0.摘要 我们研究了一种逐步挖掘具有鉴别性的物体区域的原则方法&#xff0c;使用分类网络来解决弱监督语义分割问题。分类网络只对感兴趣对象中的小而稀疏的鉴别性区域有响应&#xff0c;这与分割任务的要求相背离&#xff0c;分割任务需要定位密集、内部和完整的区域以进行像素…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...