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

这篇具有很好参考价值的文章主要介绍了CentOS7系统MBR、GRUB2、内核启动流程报错问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

目录

🥩Linux启动流程

🥩MBR修复

🍭1、模拟损坏

🍭2、重启测试

🍭3、修复MBR

🍭4、测试系统

🥩GRUB2修复

🍭1、模拟损坏

🍭2、修复GRUB2

🍭3、测试系统

🥩内核修复

🍭1、模拟损坏

🍭2、修复内核

🍭3、测试系统


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

     🦐专栏地址:服务器管理

Linux启动流程

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

来自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引导找不到系统了。

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

3、修复MBR

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

4、测试系统

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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菜单。

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

输入下面命令修复GRUB2菜单 

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

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 

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

2、修复内核

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

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

CentOS7系统MBR、GRUB2、内核启动流程报错问题,服务器管理,java,数据库,linux,原力计划

3、测试系统

到这里就是最后一步,修改BIOS的启动项,进入系统测试是否文件丢失。文章来源地址https://www.toymoban.com/news/detail-572915.html

到了这里,关于CentOS7系统MBR、GRUB2、内核启动流程报错问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • centos7操作系统开机提示error:file “/boot/grub/i386-pc/normal.mod“ not found

    一.问题现象 公司重要业务虚拟机突然业务访问不了,重启操作系统之后发现操作系统启动不了,直接进入救援模式,提示error:file “/boot/grub/i386-pc/normal.mod“ not found,报错截图 二.处理思路 在救援模式下,只有很少的命令可是使用: set 设置环境变量 ls 查看设备 insmod 加载模

    2024年02月04日
    浏览(42)
  • Linux下的grub2引导修复

    目录 引导故障分析处理 1.修复grub2引导故障 2.修复grub2-误删掉/boot/grub2/* 3.修复grub2 – 引导破坏故障 4.修复 /boot/ 下所有文件被删除故障 故障原因:grub.cfg文件丢失 两种解决方式,方式一: 故障现象: 无法正常开机,开机后显示以下界面: 解决办法:手动进行引导 在此界面

    2024年02月16日
    浏览(47)
  • Linux系统【Centos7】更新内核更新软件详细教程

    更新内核: 1. 打开终端,输入命令 sudo yum update,等待更新完成。 2. 重启系统,输入命令 sudo reboot。 3. 在 GRUB 引导界面,选择最新的内核版本,按下回车键进入系统。 4. 在终端中输入命令 uname -r,查看当前使用的内核版本是否更新成功。 更新软件: 1. 打开终端,输入命令

    2024年02月09日
    浏览(72)
  • 如何在Ubuntu中设定默认启动内核 (适用于GRUB 2.0及之后的版本)

    当需要指定Ubuntu操作系统启动的不同内核版本时,这可能会变得有点棘手。因此,在这篇文章中,我们将探讨一些实用的方法,以便指定Ubuntu操作系统所需的内核版本。 安装内核的步骤非常简单,我们可以先查看一下当前的内核版本和GRUB版本。 查看grub版本 下面是在Ubuntu中

    2024年02月08日
    浏览(58)
  • Linux系统启动流程和内核管理详细介绍

    Linux系统启动流程和内核管理详细介绍 博客主要包含CentOS5 和 CentOS6的启动流程介绍、相关的系统服务管理、Grub启 动引导管理、自定义满足基本使用需求的Linux系统、Centos系统启动故障排错、源码 编译安装linux内核、BusyBox 介绍、Centos 7启动流程介绍、Centos 7 Unit介绍 Centos 7 服

    2024年02月13日
    浏览(41)
  • linux系统下(centos7.9)安装Jenkins全流程

           Jenkins官网传送带: Redhat Jenkins Packages         选择好Jenkins版本进行下载         利用rz命令上传文件至Linux服务器,后直接用rpm -ivh命令直接安装.rpm后缀格式的Jenkins安装包即可。         利用以下命令修改一个端口号即可(改成自己想改成的端口号即可

    2024年02月12日
    浏览(38)
  • 39.Linux系统启动原理及故障排除(centos7)

    目录 1.centos7 系统启动过程 2.登陆系统图解 3.管理系统服务  4.运行级别  例 1:默认系统启动使用 3 级别字符界面  例 2:默认系统启动使用 5 级别图形界面  例 3: centos7 修改内核启动顺序  1.centos7 系统启动过程 加载 BIOS/UEFI 信息,进行硬件检测。按照 BIOS 设定找到第一个

    2023年04月08日
    浏览(41)
  • CentOS7中将MySQL注册为系统服务&开机启动

    实际生产环境中为了避免重启服务器后所有的服务都手动启动带来的麻烦,建议所有基础服务都设置为开机自动启动。本章节我们主要演示在Centos7中如何将MySQL注册为系统服务,并实现开机自动启动。 ① 手动启动mysql,查看进程信息,复制pid-file后的路径。 ② 在 /usr/lib/s

    2024年01月19日
    浏览(50)
  • linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

    目前服务器领域centos7基本是主流的操作系统,而linux相对于Windows来说,软硬件方面的支持是差很多的,在硬件方面来说,以一个免驱的网卡为例,window xp可能不会自动识别到,但Windows10基本都会自动识别到,简简单单的即插即用。根本原因在Windows随着版本的升级,内置的各

    2024年01月20日
    浏览(88)
  • Linux中修改系统启动项grub

    在修改grub时看到很多资料,上来就是直接修改 /etc/default/grub 配置文件中的GRUB_DEFAULT配置项,但是有时候修改不成功,本文简单说明一下修改的原理。 注:根据本人机器上的配置文件讲解,其他人可能不一样,所以只做参考。 介绍的是Ubuntu下的修改方式,Centos下的修改方式不

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包