Назад | Перейти на главную страницу

Я удалил все содержимое / boot, и теперь сервер не загружается

Я сделал глупость. Я думал, что каталог / 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 не поможет. Чтобы оправиться от этого, вы должны уметь делать следующее:

  • Загрузите систему в режиме восстановления с образа CentOS DVD / ISO.
  • Переустановите ядро, запустив yum reinstall kernel
  • Переустановите Grub, запустив /sbin/grub2-install /dev/sda

На последнем этапе вам может потребоваться заменить /dev/sda с другим именем устройства, в зависимости от вашего оборудования. Это должен быть ваш основной жесткий диск, с которого вы хотите загрузиться. На виртуальных машинах это обычно /dev/vda. Если вы не уверены, вы можете использовать lsblk команда (вам может потребоваться запустить yum install util-linux сначала), чтобы перечислить все ваши блочные устройства, и вы сможете распознать диск по его размеру.

После этого ваша система должна снова нормально загрузиться.

Недавно у меня была похожая проблема. Я мог бы выздороветь, следуя ответу Вот.
Я задокументировал шаги, которые я выполнил, в новом ответе.

Я копирую свой ответ сюда для удобства:

У меня есть компьютер с Fedora 30. Загрузочный раздел включен /dev/sda3 а корневой раздел находится на LVLM с именем Fedora-root. Я запускал все команды с учетной записью root.

  1. Я загрузился с живого носителя Fedora (с USB-накопителя)

  2. Смонтируйте мой корневой раздел

    mount /dev/mapper/Fedora-root /mnt
    
  3. Смонтируйте мой загрузочный раздел
    mount /dev/sda3 /mnt/boot
    
  4. Скопируйте ядро ​​из live-раздела в предполагаемый загрузочный раздел
    cp /boot/vmlinuz-$(uname -r) /mnt/boot/
    
  5. Смонтировать системные разделы
    mount --bind /dev /mnt/dev
    mount --bind /sys /mnt/sys
    mount --bind /proc /mnt/proc
    
  6. Измените корень на /mnt
    chroot /mnt
    
  7. Создать initramfs
    dracut /boot/initramfs-$(uname -r).img $(uname -r) -v
    
  8. Переустановите grub и заново настройте его
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

По какой-то причине, которую я не знаю, генерирование initramfs был очень медленным и не мог завершить работу в моей системе (шаг 6). Однако команда работала нормально, когда я не вырезал файловую систему. Итак, я пропустил шаги с 3 и далее. Мне также пришлось изменить dracut конфигурация, указывающая на корневую систему.

Итак, новые шаги:

  1. Укажите на корневой каталог в dracut конфигурация
    echo "root=/dev/mapper/Fedora/root" > /etc/dracut.conf.d/kernel.conf
    
  2. Переустановите kernel и генерировать initramfs
    dracut /dev/sda/initramfs-$(uname -r).img $(uname -r) -v
    
  3. Затем я выполнил шаги 3-6 выше, поэтому я могу восстановить конфигурацию grub (этот шаг может быть не нужен, я был слишком осторожен)
    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
    
  4. Переустановите grub и заново настройте его
    grub2-install /dev/sda
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

Примечание для владельцев NVIDIA
У меня графический процессор NVIDIA, и до инцидента у меня были установлены проприетарные драйверы.
Восстановленное ядро ​​с живого носителя использовало драйверы Nouveau (поскольку это драйвер по умолчанию в Fedora). Восстановленное ядро ​​тоже было не последней версии. Когда я обновил kernel впоследствии, используя графический интерфейс, он использовал проприетарные драйверы NVIDIA.