记一次Ubuntu 16.04 [ELF header smaller than expected]修复过程

不知道什么原因,其中一台虚拟机无法正常启动,启动报
error: ELF header smaller than expected.

注:由于修复过程没有截图,以下所使用图来自其他的人截图。
由于不知道怎么回事,Google出来说可以利用Boot Repair来进行修复。

  1. 下载Ubuntu 镜像,这里我使用国内的阿里的镜像https://opsx.alibaba.com/mirror
  2. 进入试用模式,打开终端,安装boot-repair
sudo add-apt-repository ppa:yannubuntu/boot-repair 
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair

记一次Ubuntu 16.04 [ELF header smaller than expected]修复过程_第1张图片
boot repair

选择 Recommended repair
修复重启,以为万事大吉时,重启出现以下错误:

error: file '/boot/grub/i386-pc/extcmd.mod' not found.
Entering rescue mode...
grub rescue>'

注: 网上更多的是/boot/grub/i386-pc/normal.mod 应该可以用相同的方法吧,未出来现这个问题,若下次出现再试。

好吧,google之后说重装grub,好吧,再次用上下载的镜像进入试用模式,打开终端。

sudo mount /dev/sdXY /mnt
sudo grub-install --root-directory=/mnt /dev/sdX
sudo apt-get install --reinstall grub2

/dev/sdX是Ubuntu安装的硬盘,比如我的是sda ,/dev/sdaXY是该硬盘上的第几块分区,比如我的是sda1,可以使用fdisk -l查看硬盘信息

本以上命令会正常执行,却报出:
grub-install error: cannot delete XXXX Structure needs cleaning
好吧,看来问题不少啊。用下面的两行代码来修复吧。

sudo umount /dev/sda1
sudo fsck.ext4 /dev/sda1

好像少了一个参数,只能一路按着 y 键。
执行完之后再执行重装grub2 好了。再次重启就可以正常进入系统了。

不要问我为什么,其实我也不知道为什么。
参考:

  1. https://blog.csdn.net/laocaibcc229/article/details/79274412
  2. https://blog.csdn.net/shiliangwang/article/details/7855770
  3. https://unix.stackexchange.com/questions/330742/cannot-remove-file-structure-needs-cleaning
  4. https://askubuntu.com/questions/197833/recovering-moved-mod-files-using-grubrescue

你可能感兴趣的:(记一次Ubuntu 16.04 [ELF header smaller than expected]修复过程)