• [Linux] VMware虚拟机开机后直接进入memtest


    问题描述

    今天碰到一个很难受的问题,昨天写报告的时候虚拟机还是正常的,早上开机的时候忽然报错+进不了ubuntu虚拟机直接进入一个memtest的界面,情况大概是这样的:
    一开始会报一些“error syntax”“error incorrect command”等错误,紧接着进入了Memtest
    在这里插入图片描述

    问题定位

    谷歌搜相应问题
    开机的问题先查启动项,谷歌了半天最接近的结果也是因为改了grub文件导致的,按照这篇文章流程,先将虚拟机的CD/DVD改为装虚拟机时候的ISO镜像,然后进BIOS修改启动顺序,将CD-ROM Drive提到Hard Drive之前;
    在这里插入图片描述

    注:虚拟机进BIOS是按F2,如果由于虚拟机启动太快进不了BIOS的话可以参考这篇文章直接从设置进入或者改一下.vmx文件;
    进入临时ubuntu系统
    此时我们虽然没有恢复先前的虚拟机系统,但是Other Location里可以看到先前的文件环境了,大家可以在这里定位一下自己的问题发生在哪里;
    在这里插入图片描述
    我的问题是发生在/boot/grub里面,发现grub.cfg文件变成了乱码,网上有看到可能是虚拟机关闭时没有完成而宿主机直接断电引起的(我昨天有关得这么急吗?)

    如何解决

    定位到大概是grub损坏的问题,我有尝试在临时环境里直接利用boot-repair修复grub,但是boot-repair给出的命令我一直报错,没有成功

    dpkg error parsing file '/var/lib/dpkg/status' near line 0: empty field name
    
    • 1

    然后我脑洞大开用了一种很离奇的方法
    我的方法
    ①利用ubuntu ISO镜像重新构建一个虚拟机,然后将新虚拟环境的/boot/grub文件复制到原始的虚拟磁盘中(这个新虚拟机可以在VMware 虚拟机的硬盘环境里设置挂在之前的虚拟磁盘);
    在这里插入图片描述
    ②复制之后重新启动原系统会报grub错误,内容大概为:
    在这里插入图片描述
    此处可以分为两个问题,即系统找不到名为“17428bf…”这么一长串的硬盘设备+需要的启动文件“/boot/vmlinuz…”找不到;因为这两个都对应着我们新建的系统中的内容;
    ③针对②中第一个问题,在之前boot-repair时我就注意到,boot-repair最终使用的就是用一个命令修复一个名字为一长串的磁盘里的grub项;我们重新进入临时系统,在/media中挂载就是我们需要找的磁盘名,把他复制过来替换掉grub.cfg中所有的“17428bf…”,第一个问题即解决了;
    ④针对②中第二个问题,参照这两篇文章[12]即可重新建立联系,重新进入系统之后不要忘记sudo update-grub,不然下次开机还得重新来一遍!

    总结

    至此解决了我碰到的VMware虚拟机开机报错+直接进入memtest的问题,出现该问题很有可能是因为grub出了问题,寻找修复grub相关的方法即可

  • 相关阅读:
    一口气拿下vue-router所有知识点,薪资暴涨3000
    vue中部分知识比较
    【Web开发】Python实现Web服务器(Flask打包部署上线)
    Spring Boot Actuator 漏洞复现合集
    ClassUtils.getClassFileName()方法具有什么功能呢?
    【Kotlin基础系列】第7章 类与对象(2)--- 继承
    PyQt5_股票策略校验工具_升级版
    33、Flink之hive介绍与简单示例
    java-php-python-ssm-乌托邦宿舍管理系统2021计算机毕业设计
    pytorch分布式数据训练结合学习率周期及混合精度
  • 原文地址:https://blog.csdn.net/qq_41265365/article/details/126356868