当前位置: 首页 > 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;分割任务需要定位密集、内部和完整的区域以进行像素…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...