Files
Utils/Proxmox/Recovery/GRUB.md
T
2025-12-04 10:51:36 +03:00

219 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Восстановление Proxmox после неудачного обновления (Hetzner, RAID, Rescue)
Ниже приведён детальный гайд по восстановлению сервера Proxmox, аналогичный процессу, который мы выполнили вручную. Полностью подходит для серверов Hetzner, использующих software RAID (mdadm) и загрузку через `grub-pc`.
## 📌 Ситуация
После обновления Proxmox сервер перестал загружаться. Доступ — только через Hetzner Rescue. Проблема была в повреждённом `grub-pc`, неинициализированном mdadm в initramfs и невозможности загрузки root‑файловой системы.
## ✔️ Цель
Полностью восстановить загрузчик, initramfs, конфигурацию RAID и вернуть сервер в рабочее состояние.
---
# 🛠 Шаг 1. Загрузка в Rescue
В панели Hetzner выбрать **Rescue → Enable & Reboot**.
После загрузки зайти по SSH:
```bash
ssh root@SERVER_IP
```
---
# 🛠 Шаг 2. Определить RAID и убедиться, что массивы активны
```bash
cat /proc/mdstat
```
Если всё корректно, должны быть массивы `md0`, `md1`, `md2`, `md3`.
---
# 🛠 Шаг 3. Смонтировать систему Proxmox
```bash
mkdir -p /mnt/root
mount /dev/md2 /mnt/root # root
mkdir -p /mnt/root/boot
mount /dev/md1 /mnt/root/boot # /boot
```
Проверить содержимое:
```bash
ls /mnt/root
ls /mnt/root/boot
```
---
# 🛠 Шаг 4. Подготовить chroot-окружение
```bash
mount --bind /dev /mnt/root/dev
mount --bind /dev/pts /mnt/root/dev/pts
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/sys
mount --bind /run /mnt/root/run
```
Проверка:
```bash
mount | grep /mnt/root
```
---
# 🛠 Шаг 5. Войти в chroot
```bash
chroot /mnt/root /bin/bash
```
---
# 🛠 Шаг 6. Исправление mdadm конфигурации
Проверить `/etc/mdadm/mdadm.conf`:
```bash
grep ARRAY /etc/mdadm/mdadm.conf
```
Если пусто, восстановить:
```bash
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
```
---
# 🛠 Шаг 7. Переустановка загрузчика GRUB
Удаление UEFI‑версии (если была):
```bash
apt remove grub-efi-amd64 -y
```
Переустановка grub-pc:
```bash
apt install --reinstall grub-pc grub-common
```
Если видите ошибки «is /dev mounted?» — значит chroot был сделан без bind‑монтирования.
После установки выполнить:
```bash
dpkg --configure -a
```
GRUB автоматически установится на все NVMe‑диски:
```
grub-install /dev/nvme0n1
...
grub-install /dev/nvme6n1
```
Сгенерировать меню загрузки:
```bash
update-grub
```
---
# 🛠 Шаг 8. Пересборка initramfs
(чтобы убедиться, что mdadm попал в initrd)
```bash
update-initramfs -u -k all
```
Сообщения **No /etc/kernel/proxmox-boot-uuids found** — нормальны для BIOS‑загрузки.
---
# 🛠 Шаг 9. Проверить сетевой интерфейс
Hetzner использует нестандартные имена (`enp195s0`). Проверка:
```bash
ip a
```
Проверить конфигурацию:
```bash
cat /etc/network/interfaces
```
Если интерфейс после загрузки исчезнет — нужно обновить netplan/udev правила.
(В нашем случае интерфейс сохранился и заработал.)
---
# 🛠 Шаг 10. Выйти из chroot и перезагрузить сервер
```bash
exit
reboot
```
Загрузка Proxmox прошла успешно — оболочка Proxmox VE запустилась.
---
# 🧹 Шаг 11. После восстановления (опциональная очистка)
Старые ядра Debian (НЕ Proxmox):
```bash
apt autoremove --purge
```
Но: если система работает стабильно — **лучше ядра не трогать**.
Brokenpackages (если были):
```bash
apt -f install
```
Проверка RAID:
```bash
cat /proc/mdstat
```
---
# 🎉 Результат
✔ Система полностью восстановлена
✔ Загрузка GRUB исправлена
✔ mdadm работает корректно
✔ Сеть поднялась
✔ Proxmox полностью функционирует
---
# 📝 Рекомендации на будущее
* Перед обновлением Proxmox всегда делать `pve-kernel` update вручную
* Избегать смешивания UEFI/BIOS boot режимов
* Держать отдельный текстовый гайд под рукой
---
Если нужно — могу подготовить **PDF**, **дополнительный раздел с типичными ошибками** или **автоматический recovery‑скрипт**.