Страшно, коли Linux перестає завантажуватися, а під рукою немає Live USB. Але не панікуйте — разом ми акуратно діагностуємо, тимчасово завантажимо систему і повністю відновимо GRUB або UEFI. Я поясню все просто й покроково — так, щоб ви впевнено пройшли шлях від помилки до робочого робочого столу 🙂

Діагностика: що саме зламалося?

Спочатку зрозуміймо, де збій: у GRUB, у записах UEFI, у файлових системах або в конфігурації ядра/initramfs. Використайте термінал Linux (якщо вдалося до нього дістатися через recovery чи тимчасовий запуск):

# Перевірити розмітку та точки монтування
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,PARTLABEL
blkid

# Дізнатися, чи система стартувала в UEFI або BIOS
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"

# Чи підмонтована ESP (EFI System Partition)
mount | grep -E "/boot|efi"

# Поточні записи завантаження UEFI (якщо UEFI)
sudo efibootmgr -v

Зверніть увагу на таке:

  • ESP має бути FAT32 і монтуватися як /boot/efi.
  • GRUB конфіг: /boot/grub/grub.cfg існує і не порожній.
  • Вільне місце в /boot (нестача призводить до збоїв при оновленні ядра).

Тимчасове завантаження без Live USB

Якщо бачите «grub rescue>»

Завдання — знайти розділ із /boot і завантажити нормальний режим GRUB.

# Подивитися диски/розділи в GRUB rescue
ls
# Напр., знайти, де лежить /boot/grub
ls (hd0,1)/
ls (hd0,1)/boot/

# Припустимо, /boot на (hd0,1)
set root=(hd0,1)
set prefix=(hd0,1)/boot/grub
insmod normal
normal

Якщо все ок, побачите звичайне меню GRUB.

Є меню GRUB, але ядро не стартує

Виділіть ваш пункт і натисніть e, відредагуйте рядки linux/initrd, а також тимчасово приберіть quiet splash для діагностики. Приклад універсальних рядків:

linux /vmlinuz root=UUID=<ваш-UUID-root> ro
initrd /initrd.img
boot

UUID можна дізнатися через blkid (коли вдасться зайти в систему) або методом спроб у GRUB (ls і перегляд вмісту).

Через меню UEFI/BIOS

Натисніть клавішу Boot Menu (F12/F11/ESC залежить від виробника) і виберіть запис GRUB або безпосередньо файл EFI/Boot/Bootx64.efi. Якщо GRUB відсутній у NVRAM, інколи допомагає вибір «EFI File» та запуск EFI/GRUB/grubx64.efi.

Повне відновлення після входу в систему

Коли вдалося тимчасово завантажитись у систему, можна виконати ремонт. Далі — для UEFI і для Legacy BIOS окремо.

UEFI-системи (GPT)

  1. Підмонтуйте ESP (замініть пристрій на ваш):
    sudo mkdir -p /boot/efi
    sudo mount /dev/nvme0n1p1 /boot/efi
    mount | grep efi
  2. Перевстановіть GRUB у режимі UEFI x86_64:
    sudo grub-install --target=x86_64-efi \
      --efi-directory=/boot/efi \
      --bootloader-id=GRUB --recheck
  3. Згенеруйте конфіг:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
  4. Відновіть запис у NVRAM (за потреби):
    # Створити запис GRUB (замінивши диск/партицію та шлях за потреби)
    sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "GRUB" -l '\\EFI\\GRUB\\grubx64.efi'
    # Виставити пріоритет (приклад)
    sudo efibootmgr -o 0003,0001,0002
  5. Fallback-файл на випадок «зникаючого» NVRAM:
    sudo mkdir -p /boot/efi/EFI/Boot
    sudo cp /boot/efi/EFI/GRUB/grubx64.efi /boot/efi/EFI/Boot/Bootx64.efi

Legacy BIOS (MBR)

  1. Встановіть GRUB у MBR диска (оберіть свій диск, не розділ):
    sudo grub-install /dev/sda
  2. Оновіть конфіг:
    sudo grub-mkconfig -o /boot/grub/grub.cfg

Перевірки й тонка діагностика

  • Initramfs та ядро:
    # Debian/Ubuntu
    sudo update-initramfs -u -k all
    # Arch
    sudo mkinitcpio -P
  • Стан Secure Boot:
    mokutil --sb-state
  • Монтування efivarfs (якщо efibootmgr каже, що не може встановити змінні):
    sudo mount -t efivarfs efivarfs /sys/firmware/efi/efivars
  • Вільне місце і старі ядра:
    df -h /boot /boot/efi
    ls -lh /boot
  • Перевірка файлової системи (виконуйте на відмонтованому розділі!):
    sudo fsck -f /dev/nvme0n1p2

Альтернативні способи

  • Systemd-boot: якщо використовуєте його, перевірте наявність файлів у /boot/loader/entries/ і /boot/efi/EFI/systemd/systemd-bootx64.efi, за потреби перевстановіть: bootctl install.
  • UEFI Shell: у деяких прошивках можна завантажитися у вбудовану оболонку та вручну запустити EFI\GRUB\grubx64.efi.

GUI-спосіб (коли вже зайшли в систему)

  • GNOME Disks / KDE Partition Manager: перевірте, що ESP має прапорець «esp» і монтується в /boot/efi при старті (увімкніть «Mount at system startup»).
  • Boot-Repair (Ubuntu): зручна утиліта з GUI, яка перевстановлює GRUB та генерує звіт.
    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt update
    sudo apt install -y boot-repair
    boot-repair

Хоча GUI допомагає, більшість глибоких виправлень швидше виконувати через термінал Linux.

FAQ

Найчастіші помилки Linux під час відновлення і як їх вирішити.

  • grub-install: error: cannot find EFI directory — не змонтована ESP. Змонтируйте її на /boot/efi, перевірте, що це FAT32, прапорець «esp» увімкнено.
  • efibootmgr: Could not set variable — не змонтований efivars або Secure Boot/налаштування прошивки забороняють зміну. Спробуйте: mount -t efivarfs efivarfs /sys/firmware/efi/efivars і змініть налаштування в BIOS/UEFI.
  • GRUB не бачить root (LVM/RAID/Btrfs) — перевірте наявність модулів: у GRUB-консолі спробуйте insmod lvm або insmod btrfs. У системі переконайтеся, що initramfs зібрано з потрібними хуками.
  • Після оновлення ядра меню порожнє — перегеніруйте конфіг: grub-mkconfig -o /boot/grub/grub.cfg; перевірте вміст /etc/grub.d/ та наявність /boot/vmlinuz*, /boot/initrd*.
  • UEFI постійно забуває порядок завантаження — скопіюйте GRUB у fallback-шлях EFI/Boot/Bootx64.efi і залиште його першим у пріоритеті.
  • Secure Boot увімкнено, GRUB не стартує — або використайте підписаний shim (пакети shim-signed), або тимчасово вимкніть Secure Boot у прошивці.
  • Немає місця в /boot — видаліть надто старі ядра вашого дистрибутива, потім згенеруйте конфіг GRUB знову.

Ще більше відповідей дивіться у розділі «FAQ Linux» на блозі.

Порада від Kernelka

Тримайте резервну копію ESP і конфіга GRUB. Достатньо зрідка робити tar-архіви /boot і /boot/efi після великих оновлень. Додайте пункт «Перезавантажитися в прошивку» у GRUB — так ви швидко потрапите в UEFI-меню, коли це буде потрібно. І завжди зберігайте нотатки з UUID ваших розділів — це економить купу часу 🛠️

Підсумок

  • Діагностуйте тип завантаження (UEFI/BIOS), стан ESP і наявність конфігів.
  • Тимчасово завантажтеся через GRUB rescue, редагування запису або меню UEFI.
  • Перевстановіть GRUB: для UEFI — через grub-install --target=x86_64-efi, для BIOS — grub-install /dev/sdX.
  • Оновіть grub.cfg, перевірте initramfs, простір у /boot і порядок UEFI-записів.
  • На випадок «впертої» прошивки використайте fallback-файл EFI/Boot/Bootx64.efi.
  • Зберігайте бекапи й нотатки — це ваш найкращий інструмент профілактики.

Це були мої поради Linux. Якщо щось не вийшло — пишіть, розберемо разом!