Я сделал какую-то глупость. Я думал, что каталог / boot пуст, а его содержимое попадает в / boot при каждом запуске компьютера. Мой загрузочный диск выдавал мне сообщения об ошибках, и я подумал, что там могут быть ненужные файлы.
Я удалил все содержимое / boot командой rm -rf *
и перезагрузил компьютер командой reboot
.
Теперь система не запускается. Я получаю ошибку при загрузке, т.е.
файл ошибки /grub2/i386-pc/normal.mod не найден
Вход в режим восстановления ...
grub rescue>
Большая часть поиска показывает решение проблемы ремонтируя личинку. В моем случае я знаю, что удалил содержимое, поэтому как мне восстановить систему. Я использую Centos 7.
Раздел / boot содержит важные файлы ядра Linux, а также файлы Grub. Без них ваша система не загрузится (как вы уже выяснили).И простое восстановление файлов Grub не поможет. Для восстановления после этого вы должны иметь возможность сделать следующее:
yum переустановите ядро
/ sbin / grub2-install / dev / sda
На последнем этапе вам может потребоваться заменить / dev / sda
другим именем устройства, в зависимости от вашего оборудования. Это должен быть ваш основной жесткий диск, с которого вы хотите загрузиться. На виртуальных машинах это обычно / dev / vda
. Если вы не уверены, вы можете использовать команду lsblk
(вам может потребоваться сначала запустить yum install util-linux
), чтобы вывести список всех ваших блочных устройств, и вы сможете распознать по размеру диска.
После этого ваша система должна снова нормально загрузиться.
Недавно у меня была аналогичная проблема. Я мог бы поправиться, следуя ответу здесь .
Я задокументировал шаги, которые я выполнил, в новом ответе.
Я скопировал свой ответ сюда для удобства:
У меня компьютер с Fedora 30. Загрузочный раздел находится на / dev / sda3
а корневой раздел находится на LVLM с именем Fedora-root
.
Я выполнил все команды с учетной записью root.
Я загрузился с живого носителя Fedora (с USB-накопителя)
Смонтируйте свой корневой раздел
mount / dev / mapper / Fedora-root / mnt
монтировать / dev / sda3 / mnt / boot
cp / boot / vmlinuz - $ (uname -r) / mnt / boot /
монтировать --bind / dev / mnt / dev
монтировать --bind / sys / mnt / sys
монтировать --bind / proc / mnt / proc
/ mnt
chroot / mnt
initramfs
dracut / boot / initramfs - $ (uname -r) .img $ (uname -r) -v
grub2-mkconfig -o /boot/grub2/grub.cfg
По неизвестной мне причине создание initramfs
происходило очень медленно и не могло завершиться в моей системе (шаг 6). Однако команда работала нормально, когда я не исказил файловую систему. Итак, я пропустил шаги с 3 и далее. Мне также пришлось изменить конфигурацию dracut
, чтобы указать на корневую систему.
Итак, новые шаги:
dracut
echo "root = / dev / mapper / Fedora / root"> /etc/dracut.conf.d/kernel.conf
ядро
и сгенерируйте initramfs
dracut / dev / sda / initramfs - $ (uname -r) .img $ (uname -r) -v
монтировать / dev / mapper / Fedora-root / mnt`
смонтировать / dev / sda3 / mnt / boot
cp / boot / vmlinuz - $ (uname -r) / mnt / boot /
монтировать --bind / dev / mnt / dev
монтировать --bind / sys / mnt / sys
монтировать --bind / proc / mnt / proc
chroot / mnt
grub2-install / dev / sda
grub2-mkconfig -o /boot/grub2/grub.cfg
Примечание для владельцев NVIDIA.
У меня есть графический процессор NVIDIA, и до инцидента у меня были установлены проприетарные драйверы.
Восстановленное ядро с живого носителя использовало драйверы Nouveau (поскольку это драйвер по умолчанию в Fedora). Восстановленное ядро тоже было не последней версии. Когда я впоследствии обновил ядро
, используя графический интерфейс, оно использовало проприетарные драйверы NVIDIA.