Я вручную смонтировал файловую систему:
mount /dev/nvme0n1p1 /mnt # предполагая, что корневая файловая система на первом разделе
Потом проверил /etc/fstab — там действительно были ссылки на /dev/sda1. Это и была причина. Обновление ядра изменило правила именования, а fstab не обновился автоматически.
Чтобы восстановить сервер, я:
- Смонтировал все разделы вручную
- Смонтировал /proc, /sys, /dev в chroot-окружение
- Пересобрал initramfs с правильными модулями
- Обновил grub
Конкретные команды:
mount /dev/nvme0n1p2 /mnt # корневая файловая система
mount /dev/nvme0n1p1 /mnt/boot
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
mount -a # проверить fstab
nano /etc/fstab # заменить /dev/sda на UUID или правильные имена
update-initramfs -u -k all
update-grub
exit
reboot
Сервер загрузился. Но я понял, что делал все неправильно. Теперь я никогда не обновляю серверы без:
- Резервной копии перед обновлением
- Проверки свободного места в /boot (часто проблемы из-за нехватки места)
- Обновления только одного сервиса за раз
- Тестирования обновлений на staging-сервере с такой же конфигурацией
Самый важный урок: всегда используй UUID вместо имен дисков в /etc/fstab. Команда blkid покажет UUID каждого раздела. Это спасет тебя от многих проблем после аппаратных изменений или обновлений ядра.