Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
LINUX-BOOT-GRUB2-RECOVERY Linux / DevOps

Гайд: Траблшутинг загрузки Linux: восстановление сломанного GRUB2 на UEFI и Legacy BIOS

Обновлено: 21.08.2026  ·  Официальная база знаний

Причины повреждения загрузочного сектора и конфигурации GRUB2

Системный загрузчик GRUB2 (GRand Unified Bootloader) отвечает за первичную инициализацию оборудования, загрузку ядра Linux (vmlinuz) и передачу управления виртуальному диску инициализации (initramfs). Сбой загрузчика оставляет сервер в неработоспособном состоянии, встречая администратора минималистичными консолями восстановления:

  • grub rescue>: Ядро загрузчика не может найти модуль normal.mod или раздел /boot/grub (переименован UUID диска или удален раздел);
  • grub>: Базовый командный интерпретатор загружен, но отсутствует файл конфигурации grub.cfg;
  • Unknown filesystem / Error: file '/boot/vmlinuz' not found: Повреждение метаданных файловой системы или некорректная запись после неудачного обновления ядра.

Бизнес-риски

Длительный простой инфраструктуры при плановых или аварийных перезагрузках серверов, невозможность загрузки хостов виртуализации.

Сравнение архитектур загрузки: Legacy MBR и UEFI NVRAM

ПараметрLegacy BIOS (MBR)UEFI (GPT)
Расположение загрузчикаПервые 512 байт диска (Master Boot Record) + зазор MBR Gap.Специальный FAT32 раздел (ESP - EFI System Partition).
Исполняемый файлСырой бинарный код stage1 / stage2.PE32+ бинарный файл /boot/efi/EFI/boot/grubx64.efi.
Хранение путейФиксированные секторы диска.Переменные энергонезависимой памяти материнской платы (NVRAM / efibootmgr).

Регламент восстановления загрузчика GRUB2

Сценарий 1: Интерактивная ручная загрузка из консоли grub rescue>

Если сервер упал в консоль спасения:

# 1. Просмотр доступных дисков и разделов:
grub rescue> ls
# Вывод: (hd0) (hd0,msdos1) (hd0,gpt1) (hd0,gpt2)

# 2. Поиск раздела с установленным ядром и GRUB:
grub rescue> ls (hd0,gpt2)/
grub rescue> ls (hd0,gpt2)/boot/grub

# 3. Установка переменных окружения на найденный раздел:
grub rescue> set root=(hd0,gpt2)
grub rescue> set prefix=(hd0,gpt2)/boot/grub

# 4. Загрузка стандартного модуля и переход в нормальный режим:
grub rescue> insmod normal
grub rescue> normal

Сценарий 2: Восстановление GRUB2 через LiveCD и Chroot (Универсальный метод)

Загрузитесь с любого установочного LiveCD (Ubuntu/Debian/SystemRescue) и выполните подготовку изолированного окружения:

# 1. Определение корневого и EFI разделов (например, /dev/sda2 - корень, /dev/sda1 - EFI):
sudo fdisk -l

# 2. Монтирование целевой файловой системы:
sudo mount /dev/sda2 /mnt
# Если /boot и /boot/efi вынесены на отдельные разделы:
sudo mount /dev/sda1 /mnt/boot/efi  # Для UEFI систем

# 3. Биндинг системных псевдофайловых систем ядра:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run

# 4. Вход в окружение Chroot:
sudo chroot /mnt /bin/bash

Сценарий 3: Переустановка загрузчика внутри Chroot

# Для Legacy BIOS (MBR) систем (диск целиком, например /dev/sda):
grub-install --target=i386-pc /dev/sda
update-grub

# Для UEFI (GPT) систем:
# Убедитесь, что смонтирован efivarfs:
mount -t efivarfs efivarfs /sys/firmware/efi/efivars

# Переустановка GRUB EFI:
apt install --reinstall grub-efi-amd64  # Для Debian/Ubuntu
# dnf reinstall grub2-efi-x64 shim-x64 # Для RHEL/CentOS
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
update-grub

# Выход из Chroot и перезагрузка:
exit
sudo umount -R /mnt
sudo reboot

Типовые ошибки администраторов

  • Установка grub-install на раздел вместо диска: В режиме Legacy BIOS команда grub-install /dev/sda1 выдаст ошибку или сломает загрузочный сектор PBR. Указывать нужно целевой накопитель: /dev/sda.
  • Забытый монтированный каталог EFI: Переустановка GRUB EFI без смонтированного каталога /boot/efi запишет файлы во временную папку корневого раздела, оставив системный FAT32 ESP раздел пустым.
Физический сервер или виртуальная машина не поднимается после апдейта ядра?
Специалисты ITSTM оперативно восстановят конфигурации EFI NVRAM, разберут поврежденные LVM/RAID тома и восстановят штатную загрузку.
Практический опыт инженера: При использовании Software RAID (mdadm) всегда устанавливайте GRUB на ОБА диска зеркала (grub-install /dev/sda && grub-install /dev/sdb). В противном случае при выходе из строя первого диска сервер не сможет инициировать первичную загрузку со второго накопителя.

Частые вопросы (FAQ)

Как добавить параметр ядра (например, nomodeset или single) при старте?

В меню выбора GRUB нажмите клавишу 'e' на нужном пункте ядра, найдите строку, начинающуюся с linux /vmlinuz-..., добавьте в конец нужные параметры и нажмите Ctrl+X (или F10) для загрузки.

Что делать, если efibootmgr выдает ошибку 'EFI variables are not supported on this system'?

Это означает, что хост загружен в режиме Legacy BIOS, либо не смонтирована служебная файловая система: mount -t efivarfs efivarfs /sys/firmware/efi/efivars.

Как восстановить поврежденный initramfs?

Внутри chroot-окружения выполните команду: update-initramfs -u -k all (в Ubuntu/Debian) или dracut -f (в RHEL/CentOS).

Почему после смены диска UUID в fstab перестает совпадать?

Узнайте актуальный UUID раздела командой blkid и обновите записи в файле /etc/fstab и конфигурации /etc/default/grub перед выполнением update-grub.