Я сделал глупость. Я думал, что каталог / boot пуст, а его содержимое попадает в / boot при каждом запуске компьютера. Мой загрузочный диск выдавал мне сообщения об ошибках, и я подумал, что там могут быть ненужные файлы. Я удалил все содержимое / boot с помощью rm -rf *
и перезагрузил компьютер reboot
команда. Теперь система не запускается. Я получаю ошибку при загрузке, т.е.
error file /grub2/i386-pc/normal.mod not found
Entering rescue mode ...
grub rescue>
Большая часть поиска показывает, что проблема решается путем восстановления grub. В моем случае я знаю, что удалил содержимое, поэтому как мне восстановить систему. Я использую Centos 7.
Раздел / boot содержит важные файлы ядра Linux, а также файлы Grub. Без них ваша система не загрузится (как вы уже выяснили). И простое восстановление файлов Grub не поможет. Чтобы оправиться от этого, вы должны уметь делать следующее:
yum reinstall kernel
/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
mount /dev/sda3 /mnt/boot
cp /boot/vmlinuz-$(uname -r) /mnt/boot/
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --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
kernel
и генерировать initramfs
dracut /dev/sda/initramfs-$(uname -r).img $(uname -r) -v
mount /dev/mapper/Fedora-root /mnt`
mount /dev/sda3 /mnt/boot
cp /boot/vmlinuz-$(uname -r) /mnt/boot/
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
Примечание для владельцев NVIDIA
У меня графический процессор NVIDIA, и до инцидента у меня были установлены проприетарные драйверы.
Восстановленное ядро с живого носителя использовало драйверы Nouveau (поскольку это драйвер по умолчанию в Fedora). Восстановленное ядро тоже было не последней версии. Когда я обновил kernel
впоследствии, используя графический интерфейс, он использовал проприетарные драйверы NVIDIA.