по ошибке удалил / загрузочную папку и перезагрузил

16

Я по ошибке удалил папку / boot из моей файловой системы, перезагрузился, и все, что я сейчас получаю, это:

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

grub rescue>
Имад Нуари
источник
иначе, в этом случае папка / boot была полностью удалена. не только некоторые файлы из него, спасибо.
Имад Нуари
Я не думаю, что какого-либо ответа на другой вопрос достаточно, чтобы это исправить ..
Грэм
Справедливо, на самом деле не прочитал все ответы. Я всегда предлагал бы перестроить все это, вместо того, чтобы пытаться разобраться в том, чего не хватало, поэтому предполагал, что кто-то там тоже будет. Занимает половину времени.
Ктулху Щупальца
7
Гораздо большая ошибка по сравнению с удалением /boot- это, конечно, перезагрузка системы до того, как это будет исправлено.
Anthon

Ответы:

36

К сожалению!

Вот что нужно сделать:

  1. Загрузите живой дистрибутив. Это может быть ваш установочный диск Ubuntu или другой, такой как Knoppix .

  2. Найдите диск / раздел, на котором установлена ​​корневая файловая система. Для этого вы можете открыть терминал и запустить либо sudo parted -lили sudo fdisk -l. Если вы не можете сказать, то отредактируйте свой вопрос и добавьте вывод.

  3. Предполагая, что ваш корневой раздел, который вы нашли на последнем шаге, /dev/sdxy( xдолжен быть другой буквой и 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 ...
    

    Где ...заменены имена пакетов из первой команды. Не включайте запятые, просто укажите имена пакетов с пробелами для разделения.

    Для этого шага, вероятно, потребуется доступ в Интернет (если пакеты уже не находятся в кэше), поэтому убедитесь, что вы подключены, если есть проблема.

  6. Поскольку вы удалили свои ядра и переустановили их, это должно было вызвать автоматическое обновление GRUB2. Но на случай, если их нет, вы можете запустить:

    update-grub
    
  7. Перезагрузка и все теперь должно быть исправлено. Одна из проблем, с которой я столкнулся в прошлый раз, когда делал что-то подобное, заключалась в том, что Windows update-grubзапускается там, где не обнаруживается при запуске chrootиз-за ошибки в os-prober. Если это проблема, просто запустите sudo update-grubснова в восстановленной системе.

Graeme
источник
@ Оливье, спасибо, я изначально /dev/sdaxвезде, а затем изменил его /dev/sdxy.
Грэм
Спасибо за отличную информацию - это спасло меня, с одним дополнением. Так как у меня есть программный RAID, мне пришлось также следовать инструкциям здесь: help.ubuntu.com/community/Grub2/Установка с помощью переустановки с использованием метода chroot, чтобы запустить mdadm и собрать элементы RAID и выполнить монтирование соответствующим образом. Затем после chroot переустановите пакеты, как описано в этом ответе, и все хорошо!
bitfiddler