1、背景

一台运行在Esxi上面的VM重启后报initramfs-xxx.img not found错误。

按任意键后出现以下错误。

之前在运维Centos7的时候解决过Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0.0)错误,以为按照之前的解决方案,重启服务器,按Esc进入选择内核的界面,选择中间的内核启动服务器就能解决问题(默认是选择最上面的内核),没想到还是同样报initramfs-xxx.img not found错误。

然后尝试选择第三个内核,错误依旧。然后在内核选择页面按e尝试进入Centos7安全模式,定位到ro 然后修改ro为rw,并添加sysroot=/bin/sh命令,按Ctrl+x命令进入安全模式,发现错误还是依旧。

2、解决方案

在解决initramfs-xxx.img not found错误前,需要先了解下initramfs作用。

2.1 initramfs模块作用

在Linux系统启动过程中,initramfs(Initial RAM File System)是一种临时的根文件系统,用于在系统初始化期间挂载根文件系统之前进行各种初始化操作。initramfs可以包含必需的驱动程序、二进制文件和脚本等,以便在系统引导期间使用。

在Linux系统引导时,initramfs模块会被加载到内存中,其中包含了必要的文件和驱动程序,用于在启动阶段执行各种任务,例如检查文件系统、加载模块、识别和挂载根文件系统等。此外,initramfs模块还可以用于进行故障排除和修复系统错误,例如恢复损坏的文件系统等。

总的来说,initramfs模块在Linux系统的引导过程中起着非常重要的作用,它提供了一个轻量级的临时文件系统,使得在系统初始化阶段执行各种任务更加灵活、高效和可靠。

2.2 数据备份(可选)

在尝试解决此错误前,为了保险起见,可以先备份当前VM数据(相当于创建了一个和报错VM相同数据的VM)。

1)、数据盘新建目录用于备份报错VM

2)、将报错VM的vmx、vmdk文件拷贝到新建目录下

3)、右键点击test115目录下的monitor115.vmx进行虚拟机注册,然后等待拷贝任务完成,即可备份出一个一模一样的VM。

注意 1:数据备份不是必选的,monitro115这台VM是测试机器,没有要求修复完成时间,因此留出时间进行数据备份,以防误操导致机器彻底启动不来。

注意 2:等待拷贝任务需要等待很长时间(monitor115这个VM是200G的SATA盘,拷贝用了将近4个小时),如果服务器急需修复,请选择其他方式进行VM的备份。

2.3 解决报错

1)、修改VM配置,使得下次虚拟机启动时,强制进入BIOS设置界面

2)、使用CD光盘驱动启动VM

打开VM电源,进行BIOS界面,切到开机项(Boot),将光盘驱动(CD-ROM Drive)调整到硬盘驱动(Hard Drive)上面即可,然后F10保存,退出BIOS设置。

3)、选择“Troubleshooting”疑难杂症

4)、进入救援模式

如果以上操作正确,便可进入救援模式。

输入1即可进入救援模式。

5)、 救援环境尝试挂载linux根文件系统到/mnt/sysimage

根据上图提示,执行chroot /mnt/sysimage命令,切换至根目录模式,确认initramfs-*.img文件是否存在。

bash-4.2#chroot /mnt/sysimage
bash-4.2#cd /boot
bash-4.2#ls

6)、执行mount命令,将光驱重新挂载至/mnt目录,然后切换至系统软件包所在目录,列出kernel相关软件包。

bash-4.2#mount /dev/cdrom /mnt/

7)、执行rpm命令强制安装kernel软件包

rpm -ivh kernel-3.10.0-693.e17.x86_64.rpm  --force --nodeps

8)、kernel软件包重装完成后,查看/boot目录下是否有新的initramfs文件生成。

9)、重启主机,操作系统恢复正常。
bash-4.2#exit
bash-4.2#init 6

注意:不要忘了再把bios启动顺序再调整回去,优先加载硬盘。

参考:http://www.360doc.com/content/22/1020/09/79641151_1052432906.shtml

参考:https://www.cnblogs.com/Julien1021/p/16341423.html

参考:https://blog.csdn.net/weixin_43279032/article/details/120322514

Centos7 开机时遇到initramfs-xxx.img not found错误导致虚拟机无法开启问题处理的更多相关文章

  1. CentOS7开机时的菜单选项及时间的修改

    一.在CentOS更新后,并不会自动删除旧内核.所以在启动选项中会有多个内核选项,可以手动使用以下命令删除多余的内核:(正常下,第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正常启动时使 ...

  2. sqlserver插入时发生在“xxx”处关键发生错误

    今天知道了一个小技巧,当你的数据库表名为user时会sqlserver的表发生冲突,所以因该将user这样用[user],ok 一切搞定 .

  3. centos7 开机/etc/rc.local 不执行的问题

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDE ...

  4. centos7开机/etc/rc.local不执行的问题

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash# THIS FILE IS ADDED ...

  5. 解决centos7 开机/etc/rc.local 不执行的问题

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 ? 1 2 3 4 5 6 7 8 9 10 11 #!/bi ...

  6. Linux centos7开机界面出现多个选项

    centos7开机界面出现多个选项时 前面几个选项正常启动,最后一个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统) 在CentOS更新后,并不会自动删除旧内核.所以在启动选项中会有多个内 ...

  7. centos7 开机/etc/rc.local 不执行的问题(转载)

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDE ...

  8. IA-32/centos7开机流程

    开机后系统首先在实地址模式下工作(只有1MB的寻址空间) 开机过程中,需要先准备在实模式下的中断向量表和中断服务程序.通常,由固化在主板上一块ROM芯片中的BIOS程序完成 加载BIOS的硬件信息,B ...

  9. CentOS7 开机调整亮度

    默认亮度是100,受不了,所与就自己想了个办法,依赖其它的自启动服务使我的设置生效. /usr/lib/systemd/scripts/nfs-utils_env.sh这是一个开机自启动服务要用到的脚 ...

  10. centos6.5新增加硬盘挂载并实现开机时自动挂载

    在内网主机新增一个2T硬盘,先关机断电再连接硬盘数据线和电源线! 查看当前磁盘设备信息: [root@tb ~]# fdisk -lWARNING: GPT (GUID Partition Table ...

随机推荐

  1. Java使用Redis实现分布式锁

    1.概述 此处使用Redis的setNx命令和expire命令和del命令来实现分布式锁. 首先我们要知道, 我们的redis执行命令是队列方式的,并不存在多个命令同时运行,所有命令都是串行的访问.那 ...

  2. Linux命令之定时调度-crontab

    以上cron命令格式为:* * * * * [root run-parts] command 前面五个*号代表时间,用数字,数字的取值范围和含义如下: 第一个*:分钟 (0-59)[整数] 第二个*: ...

  3. DOS基本命令与快捷键

    DOS命令 #查看当前盘下的所有目录 dir #切换盘符 直接盘符名称: 例如切换D: #切换目录 cd 目录名称 #清屏 cls #退出 exit #创建 cd>文件名称.文件后缀 #查询电脑 ...

  4. 【javascript】关于 canvas.toDataURL()

    在工作中遇到了奇怪的问题,在此记录. 一.定义 canvas.toDataURL()方法是返回一个包含图片展示的 数据URL.可以使用 type 参数其类型,默认为 PNG格式,图片的分辨率为96dp ...

  5. node+appium安装

      node是什么: node全称Node.js,是一个基于Chrome V8引擎的JavaScript运行环境,一个让JavaScript 运行在服务端的开发平台:它让JavaScript成为与PH ...

  6. 实验六 开源控制器实践——RYU

    (一)基本要求 搭建SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑. 阅读Ryu文档的The First Application一节,运行当中的L ...

  7. Maven 切换JDK版本

    欢迎访问我的个人博客:xie-kang.com 查看Maven安装目录的conf目录可以看到有 settings.xml\toolchains.xml文件.settings.xml主要是设置切换Mav ...

  8. 执行sql语句,查询sql版本

    SELECT VERSION();

  9. uglfy

    uglify: npm install uglify-js -g 或者用npm install uglify-es 运行: uglifyjs demo.js -m -o demo.min.js Ugl ...

  10. 前端程序员需要了解的MySQL

    数据库的基本概念 数据库(database)是用来组织.存储和管理数据的仓库.对数据库中的数据可以进行增删改查操作.市面上常见的数据库有: MySQL(使用最广泛.流行度最高的开源免费数据库 Comm ...