错误地删除了/ boot文件夹并重新启动


16

我错误地从文件系统中删除了/ boot文件夹,重新启动了,现在我得到的是:

error: file '/boot/grub/i368-pc/linux.mod' not found.

grub rescue>


不同的是,在这种情况下,/ boot文件夹已被完全删除。不仅有一些文件,谢谢。
Imad Nouari 2015年

我没有任何事情对另外一个问题的答案是足以解决这个问题..
格雷姆

足够公平,没有真正阅读所有答案。我总是建议重建整个事情,而不是摆弄试图找出缺失的东西,所以假设那里的人也会有。花费一半的时间。
克苏鲁触手

7
与删除相比,更大的错误 /boot当然是在解决此问题之前重新启动系统。
Anthon 2015年

Answers:


36

糟糕!

这是做什么的:

  1. 启动现场发行版。这可以是您的Ubuntu安装光盘,也可以是另一张光盘,例如Knoppix

  2. 查找已在其中安装根文件系统的驱动器/分区。为此,您可以打开终端并运行sudo parted -lsudo fdisk -l。如果您不知道,请编辑 问题并添加输出。

  3. 假设您在上一步中找到的根分区是/dev/sdxyx应该是另一个字母,y应该是一个数字),然后在终端中运行以下命令:

    mkdir mnt
    sudo mount /dev/sdxy mnt
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo chroot mnt
    
  4. 您现在将处于一个chroot环境中,这意味着在此处运行命令等效于在已安装的系统上运行它们。您要做的第一件事是将GRUB2重新安装到设备,以便将正确的文件复制到该/boot文件夹中。为此,请在根分区所在的驱动器上运行以下命令(即删除/dev/sdxy数字(y)):

    grub-install /dev/sdx
    
  5. 现在,您想找出已安装的哪些软件包在引导目录中包含文件,然后重新安装它们。这将替换已删除的内核映像。查找软件包的命令是:

    dpkg -S /boot
    

    并重新安装它们:

    apt-get --reinstall install ...
    

    where ...被第一个命令中的软件包名称替换。不包括逗号,只需将软件包名称加空格分隔即可。

    此步骤可能需要Internet访问(除非程序包已在缓存中),因此如果出现问题,请确保已连接。

  6. 由于您将删除内核并重新安装它们,因此应该可以自动触发GRUB2更新。但是,以防万一他们没有,您可以运行:

    update-grub
    
  7. 重新启动,现在应该修复问题。我上次执行类似操作时遇到的一个问题是,由于Windows update-grub中的chroot错误,Windows 在运行时找不到的位置进行安装os-prober。如果这是一个问题,请sudo update-grub在已修复的系统中再次运行。


@Olivier,非常感谢,我最初/dev/sdax到处都是,然后将其更改为/dev/sdxy
Graeme

非常感谢您提供的优质信息-它为我节省了一大笔钱。由于我具有软件RAID,因此我还必须按照此处的说明进行操作:help.ubuntu.com/community/Grub2/使用chroot方法在重新安装下安装以启动mdadm并组装RAID成员并相应地进行安装。然后,在chroot之后,按照此答案中的说明重新安装软件包,一切顺利!
bitfiddler
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.