Привет. После небольших мучений с обновлением Proxmox с версии 8 до 9 на серверах под управлением OVH, я решил объяснить, как мне удалось это сделать. Во-первых, это не универсальное руководство, а просто описание того, как я решил свою проблему на двух своих серверах (один "So-yo-start SYS-LE-2" и один "ADVANCE-1 | AMD EPYC 4244P"). У вас может быть другая конфигурация, модель сервера, таблица разделов, RAID и так далее... Так что используйте с умом. Сначала сделайте бэкап и не делайте этого на боевых серверах...
Серверы оснащены двумя SSD по 1 ТБ, используют программный RAID и LVM-раздел для /var/lib/vz. ZFS нет.
Сначала я обновлял их по официальному гайду ():
- Сделать резервную копию всего
- Выключить все ВМ
- Проверить, что всё в порядке
Команда: pve8to9
pve8to9 --full
Обновиться до последней версии Proxmox 8
Команда: apt update && apt dist-upgrade
Проверить, что версия 8.4.1+
Команда: pveversion
pve-manager/8.4.11/14a32011146091ed (kernel 6.8.12-13-pve)
Сменить репозиторий
Команда:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*
Обновить
Команды:
apt update
apt dist-upgrade
Во время процесса проверяйте отличия в конфигурациях и принимайте решения
# Перезагрузка
Команда: reboot
Обновление прошло гладко, но после перезагрузки не удалось загрузиться. Процесс загрузки заканчивался в BIOS без каких-либо сообщений в консоли, которые помогли бы понять в чём дело...
-----------------
[ОБНОВЛЕНО 29.08.2025]
ПРОПУСТИТЕ ОСТАЛЬНУЮ ЧАСТЬ ЭТОГО СООБЩЕНИЯ И ПЕРЕЙДИТЕ К СЛЕДУЮЩЕМУ ПОСТУ @sbraz: КОМАНДА OVH ПРЕДОСТАВИЛА ПРАВИЛЬНОЕ РЕШЕНИЕ ЭТОЙ ПРОБЛЕМЫ
Если вы уже применили моё решение ниже, проверьте порядок загрузки EFI через efibootmgr и восстановите PXE на первое место, если его там нет
-----------------
Я загрузился в режиме восстановления и решил переустановить и перенастроить grub-efi-amd64. Не уверен, что все эти шаги были обязательны, но именно так удалось запустить сервера снова.
Итак, в режиме rescue:
Определение разделов и точек монтирования для монтирования /root
Команда: lsblk -f
У меня выглядело примерно так:
nvme0n1
├─nvme0n1p1 vfat FAT16 EFI_SYSPART
├─nvme0n1p2 linux_raid_member 1.2 md2
│ └─md2 ext4 1.0 boot
├─nvme0n1p3 linux_raid_member 1.2 md3
│ └─md3 ext4 1.0 root
├─nvme0n1p4 swap 1 swap-nvme0n1p4
├─nvme0n1p5 linux_raid_member 1.2 md5
│ └─md5 LVM2_member LVM2 001
│ └─vg-data ext4 1.0 var-lib-vz
├─nvme0n1p6 linux_raid_member 1.2 md6
│ └─md6 ext4 1.0 var-log
└─nvme0n1p7 iso9660 Joliet Extension config-2
nvme1n1
├─nvme1n1p1 vfat FAT16 EFI_SYSPART
├─nvme1n1p2 linux_raid_member 1.2 md2
│ └─md2 ext4 1.0 boot
├─nvme1n1p3 linux_raid_member 1.2 md3
│ └─md3 ext4 1.0 root
├─nvme1n1p4 swap 1 swap-nvme1n1p4
├─nvme1n1p5 linux_raid_member 1.2 md5
│ └─md5 LVM2_member LVM2 001
│ └─vg-data ext4 1.0 var-lib-vz
└─nvme1n1p6 linux_raid_member 1.2 md6
└─md6 ext4 1.0 var-log
Подготовить каталог /mnt, если его нет
Команда: mkdir -p /mnt
Смонтировать разделы boot и root согласно таблице разделов
Команды:
mount /dev/md3 /mnt
mount /dev/md2 /mnt/boot
Смонтировать первый EFI-раздел (на первом SSD)
Команда: mount /dev/nvme0n1p1 /mnt/boot/efi
Подготовка к chroot
Команды:
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev/pts /mnt/dev/pts
Chroot, чтобы переустановить grub
Команда: chroot /mnt /bin/bash
Переустановка grub-efi-amd64 и shim-signed загрузчика
Команды:
apt update
apt install --reinstall grub-efi-amd64 shim-signed
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck --no-floppy
update-grub
grub-install /dev/nvme0n1
grub-install /dev/nvme1n1
Появлялись предупреждения: warning: EFI variables cannot be set on this system.
warning: You will have to complete the GRUB setup manually.
Поэтому я смонтировал efivarfs, чтобы проверить записи в менеджере загрузки
Команда: mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Проверить записи загрузчика
Команда: efibootmgr -v
Если proxmox отсутствует:
Команда: efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "proxmox" --loader '\EFI\proxmox\grubx64.efi'
Иначе проверить правильность настроек. Если настройки неправильные — удалить и создать запись proxmox заново
Команды:
efibootmgr -b <ID_ЗАПИСИ_ДЛЯ_УДАЛЕНИЯ> -B
efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "proxmox" --loader '\EFI\proxmox\grubx64.efi'
Отмонтировать efivarfs
Команда: umount /sys/firmware/efi/efivars
Выйти из chroot
Команда: exit
Отмонтировать первый EFI-раздел
Команда: umount /mnt/boot/efi
Смонтировать второй EFI-раздел: EFI-разделы не входят в RAID, поэтому для консистентности я установил grub на оба. Не уверен, что это обязательно.
Команда: mount /dev/nvme1n1p1 /mnt/boot/efi
Chroot и переустановка grub на второй раздел
Команды:
chroot /mnt /bin/bash
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck --no-floppy
Выйти из chroot
Команда: exit
Отмонтировать все точки монтирования
Команда: umount -R /mnt
Перезагрузиться, держим кулаки...
Команда: reboot
И именно это сработало для меня.
Серверы оснащены двумя SSD по 1 ТБ, используют программный RAID и LVM-раздел для /var/lib/vz. ZFS нет.
Сначала я обновлял их по официальному гайду ():
- Сделать резервную копию всего
- Выключить все ВМ
- Проверить, что всё в порядке
Команда: pve8to9
pve8to9 --full
Обновиться до последней версии Proxmox 8
Команда: apt update && apt dist-upgrade
Проверить, что версия 8.4.1+
Команда: pveversion
pve-manager/8.4.11/14a32011146091ed (kernel 6.8.12-13-pve)
Сменить репозиторий
Команда:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*
Обновить
Команды:
apt update
apt dist-upgrade
Во время процесса проверяйте отличия в конфигурациях и принимайте решения
# Перезагрузка
Команда: reboot
Обновление прошло гладко, но после перезагрузки не удалось загрузиться. Процесс загрузки заканчивался в BIOS без каких-либо сообщений в консоли, которые помогли бы понять в чём дело...
-----------------
[ОБНОВЛЕНО 29.08.2025]
ПРОПУСТИТЕ ОСТАЛЬНУЮ ЧАСТЬ ЭТОГО СООБЩЕНИЯ И ПЕРЕЙДИТЕ К СЛЕДУЮЩЕМУ ПОСТУ @sbraz: КОМАНДА OVH ПРЕДОСТАВИЛА ПРАВИЛЬНОЕ РЕШЕНИЕ ЭТОЙ ПРОБЛЕМЫ
Если вы уже применили моё решение ниже, проверьте порядок загрузки EFI через efibootmgr и восстановите PXE на первое место, если его там нет
-----------------
Я загрузился в режиме восстановления и решил переустановить и перенастроить grub-efi-amd64. Не уверен, что все эти шаги были обязательны, но именно так удалось запустить сервера снова.
Итак, в режиме rescue:
Определение разделов и точек монтирования для монтирования /root
Команда: lsblk -f
У меня выглядело примерно так:
nvme0n1
├─nvme0n1p1 vfat FAT16 EFI_SYSPART
├─nvme0n1p2 linux_raid_member 1.2 md2
│ └─md2 ext4 1.0 boot
├─nvme0n1p3 linux_raid_member 1.2 md3
│ └─md3 ext4 1.0 root
├─nvme0n1p4 swap 1 swap-nvme0n1p4
├─nvme0n1p5 linux_raid_member 1.2 md5
│ └─md5 LVM2_member LVM2 001
│ └─vg-data ext4 1.0 var-lib-vz
├─nvme0n1p6 linux_raid_member 1.2 md6
│ └─md6 ext4 1.0 var-log
└─nvme0n1p7 iso9660 Joliet Extension config-2
nvme1n1
├─nvme1n1p1 vfat FAT16 EFI_SYSPART
├─nvme1n1p2 linux_raid_member 1.2 md2
│ └─md2 ext4 1.0 boot
├─nvme1n1p3 linux_raid_member 1.2 md3
│ └─md3 ext4 1.0 root
├─nvme1n1p4 swap 1 swap-nvme1n1p4
├─nvme1n1p5 linux_raid_member 1.2 md5
│ └─md5 LVM2_member LVM2 001
│ └─vg-data ext4 1.0 var-lib-vz
└─nvme1n1p6 linux_raid_member 1.2 md6
└─md6 ext4 1.0 var-log
Подготовить каталог /mnt, если его нет
Команда: mkdir -p /mnt
Смонтировать разделы boot и root согласно таблице разделов
Команды:
mount /dev/md3 /mnt
mount /dev/md2 /mnt/boot
Смонтировать первый EFI-раздел (на первом SSD)
Команда: mount /dev/nvme0n1p1 /mnt/boot/efi
Подготовка к chroot
Команды:
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev/pts /mnt/dev/pts
Chroot, чтобы переустановить grub
Команда: chroot /mnt /bin/bash
Переустановка grub-efi-amd64 и shim-signed загрузчика
Команды:
apt update
apt install --reinstall grub-efi-amd64 shim-signed
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck --no-floppy
update-grub
grub-install /dev/nvme0n1
grub-install /dev/nvme1n1
Появлялись предупреждения: warning: EFI variables cannot be set on this system.
warning: You will have to complete the GRUB setup manually.
Поэтому я смонтировал efivarfs, чтобы проверить записи в менеджере загрузки
Команда: mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Проверить записи загрузчика
Команда: efibootmgr -v
Если proxmox отсутствует:
Команда: efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "proxmox" --loader '\EFI\proxmox\grubx64.efi'
Иначе проверить правильность настроек. Если настройки неправильные — удалить и создать запись proxmox заново
Команды:
efibootmgr -b <ID_ЗАПИСИ_ДЛЯ_УДАЛЕНИЯ> -B
efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "proxmox" --loader '\EFI\proxmox\grubx64.efi'
Отмонтировать efivarfs
Команда: umount /sys/firmware/efi/efivars
Выйти из chroot
Команда: exit
Отмонтировать первый EFI-раздел
Команда: umount /mnt/boot/efi
Смонтировать второй EFI-раздел: EFI-разделы не входят в RAID, поэтому для консистентности я установил grub на оба. Не уверен, что это обязательно.
Команда: mount /dev/nvme1n1p1 /mnt/boot/efi
Chroot и переустановка grub на второй раздел
Команды:
chroot /mnt /bin/bash
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck --no-floppy
Выйти из chroot
Команда: exit
Отмонтировать все точки монтирования
Команда: umount -R /mnt
Перезагрузиться, держим кулаки...
Команда: reboot
И именно это сработало для меня.
