不知道什么原因,其中一台虚拟机无法正常启动,启动报
error: ELF header smaller than expected.
注:由于修复过程没有截图,以下所使用图来自其他的人截图。
由于不知道怎么回事,Google出来说可以利用Boot Repair来进行修复。
- 下载Ubuntu 镜像,这里我使用国内的阿里的镜像https://opsx.alibaba.com/mirror
- 进入试用模式,打开终端,安装boot-repair
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
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 好了。再次重启就可以正常进入系统了。
不要问我为什么,其实我也不知道为什么。
参考: