иначе, в этом случае папка / boot была полностью удалена. не только некоторые файлы из него, спасибо.
Имад Нуари
Я не думаю, что какого-либо ответа на другой вопрос достаточно, чтобы это исправить ..
Грэм
Справедливо, на самом деле не прочитал все ответы. Я всегда предлагал бы перестроить все это, вместо того, чтобы пытаться разобраться в том, чего не хватало, поэтому предполагал, что кто-то там тоже будет. Занимает половину времени.
Ктулху Щупальца
7
Гораздо большая ошибка по сравнению с удалением /boot- это, конечно, перезагрузка системы до того, как это будет исправлено.
Anthon
Ответы:
36
К сожалению!
Вот что нужно сделать:
Загрузите живой дистрибутив. Это может быть ваш установочный диск Ubuntu или другой, такой как Knoppix .
Найдите диск / раздел, на котором установлена корневая файловая система. Для этого вы можете открыть терминал и запустить либо sudo parted -lили sudo fdisk -l. Если вы не можете сказать, то отредактируйте свой вопрос и добавьте вывод.
Предполагая, что ваш корневой раздел, который вы нашли на последнем шаге, /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
Теперь вы будете в chrootсреде, означающей, что выполнение команд здесь эквивалентно выполнению их в установленной системе Первое, что вы хотите сделать, это переустановить GRUB2 на устройство, чтобы оно скопировало нужные файлы в /bootпапку. Для этого запустите следующее с диска, на котором находится корневой раздел (т.е. /dev/sdxyс yудаленным номером ( )):
grub-install /dev/sdx
Теперь вы хотите выяснить, какие пакеты у вас установлены, у которых есть файлы в каталоге загрузки, и переустановить их. Это заменит образы ядра, которые были удалены среди прочего. Команда для поиска пакетов:
dpkg -S /boot
И переустановить их:
apt-get --reinstall install ...
Где ...заменены имена пакетов из первой команды. Не включайте запятые, просто укажите имена пакетов с пробелами для разделения.
Для этого шага, вероятно, потребуется доступ в Интернет (если пакеты уже не находятся в кэше), поэтому убедитесь, что вы подключены, если есть проблема.
Поскольку вы удалили свои ядра и переустановили их, это должно было вызвать автоматическое обновление GRUB2. Но на случай, если их нет, вы можете запустить:
update-grub
Перезагрузка и все теперь должно быть исправлено. Одна из проблем, с которой я столкнулся в прошлый раз, когда делал что-то подобное, заключалась в том, что Windows update-grubзапускается там, где не обнаруживается при запуске chrootиз-за ошибки в os-prober. Если это проблема, просто запустите sudo update-grubснова в восстановленной системе.
@ Оливье, спасибо, я изначально /dev/sdaxвезде, а затем изменил его /dev/sdxy.
Грэм
Спасибо за отличную информацию - это спасло меня, с одним дополнением. Так как у меня есть программный RAID, мне пришлось также следовать инструкциям здесь: help.ubuntu.com/community/Grub2/Установка с помощью переустановки с использованием метода chroot, чтобы запустить mdadm и собрать элементы RAID и выполнить монтирование соответствующим образом. Затем после chroot переустановите пакеты, как описано в этом ответе, и все хорошо!
/boot
- это, конечно, перезагрузка системы до того, как это будет исправлено.Ответы:
К сожалению!
Вот что нужно сделать:
Загрузите живой дистрибутив. Это может быть ваш установочный диск Ubuntu или другой, такой как Knoppix .
Найдите диск / раздел, на котором установлена корневая файловая система. Для этого вы можете открыть терминал и запустить либо
sudo parted -l
илиsudo fdisk -l
. Если вы не можете сказать, то отредактируйте свой вопрос и добавьте вывод.Предполагая, что ваш корневой раздел, который вы нашли на последнем шаге,
/dev/sdxy
(x
должен быть другой буквой иy
должен быть числом), затем выполните следующие команды в терминале:Теперь вы будете в
chroot
среде, означающей, что выполнение команд здесь эквивалентно выполнению их в установленной системе Первое, что вы хотите сделать, это переустановить GRUB2 на устройство, чтобы оно скопировало нужные файлы в/boot
папку. Для этого запустите следующее с диска, на котором находится корневой раздел (т.е./dev/sdxy
сy
удаленным номером ( )):Теперь вы хотите выяснить, какие пакеты у вас установлены, у которых есть файлы в каталоге загрузки, и переустановить их. Это заменит образы ядра, которые были удалены среди прочего. Команда для поиска пакетов:
И переустановить их:
Где
...
заменены имена пакетов из первой команды. Не включайте запятые, просто укажите имена пакетов с пробелами для разделения.Для этого шага, вероятно, потребуется доступ в Интернет (если пакеты уже не находятся в кэше), поэтому убедитесь, что вы подключены, если есть проблема.
Поскольку вы удалили свои ядра и переустановили их, это должно было вызвать автоматическое обновление GRUB2. Но на случай, если их нет, вы можете запустить:
Перезагрузка и все теперь должно быть исправлено. Одна из проблем, с которой я столкнулся в прошлый раз, когда делал что-то подобное, заключалась в том, что Windows
update-grub
запускается там, где не обнаруживается при запускеchroot
из-за ошибки вos-prober
. Если это проблема, просто запуститеsudo update-grub
снова в восстановленной системе.источник
/dev/sdax
везде, а затем изменил его/dev/sdxy
.