АйТи Фреш
Главная / Статьи / Серверы и хостинг
Серверы и хостинг

Удаляет ли pve8to9 настоящий загрузчик Proxmox

Автор: Семёнов Евгений Сергеевич, директор ООО «АйТи-Фреш» · · ~16 мин чтения
Удаляет ли pve8to9 настоящий загрузчик Proxmox
Иллюстрация к статье «Удаляет ли pve8to9 настоящий загрузчик Proxmox».

Вижу знакомую паузу: `pve8to9` пишет удалить `systemd-boot`, а сервер действительно загружается через systemd-boot. Рука к Enter не тянется — и правильно. Я, Семёнов Евгений Сергеевич, в такой ситуации сначала разделяю пакет, файлы на EFI-разделах и механизм их обновления. Ниже покажу, как определить реальную схему загрузки, когда удаление штатно, где находится единственное существенное исключение и как мы прошли этот этап на двух узлах условной службы доставки «Экспресс-Курьер».

Почему удалить пакет — не всегда значит удалить загрузчик

Короткий ответ такой: если актуальный pve8to9 сам требует удалить метапакет systemd-boot, штатная конфигурация Proxmox обычно от этого не перестаёт загружаться. Но я всё равно не выполняю команду вслепую. Исключение прямо названо в официальном руководстве: systemd-boot нельзя механически удалять, если администратор сам устанавливал и настраивал его без proxmox-boot-tool. В такой системе метапакет действительно может быть частью собственного механизма обслуживания загрузчика. Отдельно ставить systemd-boot-efi и systemd-boot-tools руководство не требует — оно лишь оговаривает, что если они нужны, pve8to9 об этом предупредит.

Здесь смешаны три сущности. Первая — запись в базе dpkg о пакете systemd-boot. В Debian 13 Trixie это метапакет с хуками, которые срабатывают при обновлении его самого и других пакетов и устанавливают systemd-boot как загрузчик; он зависит от двух пакетов ниже. Вторая — пакет systemd-boot-efi, содержащий исходный EFI-бинарник, например /usr/lib/systemd/boot/efi/systemd-bootx64.efi, и пакет systemd-boot-tools с командой bootctl. Третья — уже развёрнутые копии на EFI System Partition: /EFI/systemd/systemd-bootx64.efi, записи в /loader/entries/ и каталоги ядер /EFI/proxmox/. Это не один объект и не одна операция.

В Debian 12 Bookworm команда bootctl входила в systemd-boot, поэтому пакет попадал на системы, установленные с ISO Proxmox VE 8.1–8.4. В Trixie инструменты и EFI-бинарники разнесли по отдельным пакетам, а systemd-boot оставили как автоматически действующую интеграцию. Proxmox такая автоматика мешает: его ESP обычно не смонтированы постоянно, а ядра и конфигурацию на них синхронизирует собственный proxmox-boot-tool. Поэтому смысл предупреждения — убрать конкурирующего управляющего, а не отказаться от systemd-boot как загружаемого EFI-кода.

Не удаляйте каталоги `/EFI/systemd`, `/loader/entries`, файл `/etc/kernel/proxmox-boot-uuids` или kernel hooks вручную. Предупреждение относится к пакету, а не к этим объектам.
Цифры и версии: Почему удалить пакет — не всегда значит удалить загрузчик — схема
Цифры и версии: Почему удалить пакет — не всегда значит удалить загрузчик. Открыть схему в полном размере

Как я определяю реальный путь загрузки

Сначала собираю факты одной пачкой. Наличие пакета ничего не доказывает, существующая запись NVRAM тоже может оказаться старой. Мне нужны режим текущей загрузки, файловая система корня, состояние proxmox-boot-tool, активная UEFI-запись и установленные пакеты.

if test -d /sys/firmware/efi; then echo UEFI; else echo BIOS-Legacy; fi
findmnt -no SOURCE,FSTYPE /
proxmox-boot-tool status
efibootmgr -v
dpkg -l systemd-boot systemd-boot-efi systemd-boot-tools proxmox-kernel-helper grub-efi-amd64 2>/dev/null | grep -E '^(ii|rc)'
ls /etc/kernel/proxmox-boot-uuids
findmnt /boot/efi /efi 2>/dev/null

Последняя команда в типовой схеме с proxmox-boot-tool часто ничего не выводит. Это нормально: Proxmox специально не держит vfat-разделы смонтированными постоянно, а подключает их для синхронизации.

Штатная развилка из документации Host Bootloader проста. Legacy BIOS означает GRUB. При UEFI и корне на ext4 или XFS (в том числе поверх LVM) используется GRUB. При UEFI, ZFS на корне и выключенном Secure Boot установщик Proxmox применяет systemd-boot. При ZFS и включённом Secure Boot используется GRUB через shim. Это правило для стандартной установки, а не закон природы: перенесённые системы и ручные переделки встречаются регулярно.

У proxmox-boot-tool status есть неочевидная формулировка. Строка is configured with: uefi означает ESP, подготовленный для systemd-boot; строка is configured with: grub означает ESP с GRUB. В выводе efibootmgr -v я сопоставляю BootCurrent с конкретной строкой BootNNNN: путь \EFI\systemd\systemd-bootx64.efi указывает на systemd-boot, \EFI\proxmox\grubx64.efi — на GRUB, а \EFI\proxmox\shimx64.efi — на GRUB с Secure Boot. Просто найти где-то Linux Boot Manager недостаточно: запись могла остаться после прошлой конфигурации.

Файл `/etc/kernel/proxmox-boot-uuids` и исправный вывод `proxmox-boot-tool status` важнее самого факта, что в NVRAM существует запись Linux Boot Manager.
Удаляет ли pve8to9 настоящий загрузчик Proxmox — схема
Схема к статье. Открыть схему в полном размере

Безопасная последовательность, которую я выбираю

На ещё не обновлённом PVE 8 с активным systemd-boot под управлением proxmox-boot-tool свежий проверяющий скрипт (если существует /etc/kernel/proxmox-boot-uuids, а proxmox-boot-tool status показывает ESP с uefi) сообщает SKIP: not yet upgraded, systemd-boot still needed for bootctl. Я в этот момент пакет не трогаю: в Bookworm отдельного systemd-boot-tools ещё нет. Если старый скрипт даёт другой совет, сначала довожу PVE 8.4 до последних доступных пакетов и снова запускаю pve8to9 --full. Руководство требует минимум pve-manager 8.4.1, но на практике я ставлю все обновления ветки 8.4.

Когда узел уже обновлён до PVE 9 и pve8to9 выдаёт FAIL systemd-boot meta-package installed, на узле с systemd-boot я сначала явно закрепляю две нужные части. Это моя страховка, а не пункт руководства: метапакет зависит от systemd-boot-efi и systemd-boot-tools, и после его удаления они, установленные как зависимости, становятся кандидатами для apt autoremove. Затем смотрю симуляцию удаления. Если APT собирается удалить proxmox-ve, proxmox-kernel-helper, EFI-пакет или неожиданно большой список — отвечаю «нет» и разбираю зависимости.

apt install systemd-boot-efi systemd-boot-tools
apt-mark manual systemd-boot-efi systemd-boot-tools
apt -s remove systemd-boot
apt remove systemd-boot
proxmox-boot-tool refresh
proxmox-boot-tool status
pve8to9 --full

После apt remove я не перезагружаюсь, пока refresh не завершился без ошибок и каждый ожидаемый UUID не появился в status. Это мой главный практический предохранитель.

Для узла с Legacy BIOS или подтверждённым GRUB отдельные пакеты systemd-boot обычно не нужны: достаточно симуляции, удаления метапакета и повторной проверки. На Legacy BIOS скрипт выдаёт лишь WARN systemd-boot package installed on legacy-boot system is not necessary, а на UEFI без proxmox-boot-uuids — FAIL сразу, ещё до перехода на Trixie, потому что bootctl такому узлу не нужен. А вот если BootCurrent ведёт на systemd-boot, файла /etc/kernel/proxmox-boot-uuids нет и вы знаете, что загрузчик ставили вручную, команду выполнять нельзя только ради зелёного отчёта. Я сначала перевожу такую машину на документированную схему proxmox-boot-tool либо GRUB и лишь затем продолжаю major upgrade.

На GRUB-узлах с UEFI, в том числе с Secure Boot через shim, тот же блок проверки pve8to9 смотрит ещё две вещи, и их я исправляю в том же окне. Если не установлен метапакет grub-efi-amd64, новые версии GRUB не будут записываться в /boot/efi — после обновления firmware продолжит грузить старый бинарник. Если на ESP лежит резервный путь /EFI/BOOT/BOOTX64.efi, а debconf не настроен обновлять его, скрипт предлагает включить это явно:

apt install grub-efi-amd64
echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u
apt install --reinstall grub-efi-amd64

На платах, которые игнорируют записи NVRAM и грузятся только по резервному пути, именно этот пункт отличает успешную перезагрузку от старого GRUB, не понимающего новое ядро.

Не применяйте блок с `systemd-boot-tools` на чистом Bookworm наугад: пакет появляется в Trixie. Ориентируйтесь на стадию обновления и текущий вывод свежего `pve8to9`.
Порядок действий: Безопасная последовательность, которую я выбираю — схема
Порядок действий: Безопасная последовательность, которую я выбираю. Открыть схему в полном размере

Практика: два узла «Экспресс-Курьера» и четыре ESP

«Экспресс-Курьер» — условное имя, параметры проекта обезличены. У службы доставки 33 рабочих места, а девять виртуальных машин (1С, диспетчерская система, сервис трекинга, терминальный сервер, почтовый шлюз и служебные ВМ) и два LXC-контейнера работали на двух одинаковых узлах. На каждом — 64 ГБ RAM, два системных SSD по 480 ГБ в ZFS mirror и по две ESP размером 512 МБ. Перед работами стояла Proxmox VE 8.4 со всеми обновлениями ветки и ядром 6.8.12; целевой результат — актуальная PVE 9.2 на Debian 13 с ядром 7.0. Внешний backup-сервер хранил 1,8 ТБ резервных копий, а восстановление тестовой ВМ мы проверили за 9 минут.

Перед первым окном я увидел ровно тот случай, который пугает администраторов: efibootmgr показывал активный Linux Boot Manager, корень был rpool/ROOT/pve-1, а пакет systemd-boot стоял. Но proxmox-boot-tool видел обе ESP, поэтому это была штатная схема Proxmox.

System currently booted with uefi
19F2-7A61 is configured with: uefi (versions: 6.8.12-15-pve, 6.8.12-14-pve)
19F4-21B0 is configured with: uefi (versions: 6.8.12-15-pve, 6.8.12-14-pve)

В /etc/kernel/cmdline была одна строка root=ZFS=rpool/ROOT/pve-1 boot=zfs, а в /etc/kernel/proxmox-boot-uuids — оба UUID. До перехода на Trixie проверка правильно оставила пакет ради bootctl.

После обновления первого узла до PVE 9 повторный pve8to9 --full уже выдал FAIL по метапакету. Я явно установил systemd-boot-efi и systemd-boot-tools, сделал симуляцию удаления и убедился, что в секции REMOVE указан только systemd-boot. После реального удаления сразу выполнил proxmox-boot-tool refresh. Оба раздела получили новое ядро ветки 7.0 и предыдущее ядро 6.17 как запасное; активная запись NVRAM продолжала вести на \EFI\systemd\systemd-bootx64.efi. То есть управляющий пакет исчез, а используемый загрузчик остался и снова был синхронизирован.

Первый узел обновлялся 24 минуты, его контрольная перезагрузка вместе с POST сервера заняла около 5 минут. Затем мы вернули часть нагрузки, повторили тот же порядок на втором узле и получили примерно такое же время. Все 11 гостевых систем стартовали, диспетчерская и трекинг вернулись в работу до начала утренней смены, ZFS mirror остался ONLINE, обе ESP на каждом сервере отображались в status. Через неделю очередное обновление ядра тоже разошлось на четыре ESP автоматически. Чем всё закончилось? Нулём восстановлений загрузчика и понятной схемой сопровождения вместо пакета, который конкурировал с Proxmox.

Критичным оказался не вывод `dpkg -l`, а совпадение трёх фактов: текущая UEFI-загрузка, две зарегистрированные ESP и успешный `proxmox-boot-tool refresh`.

Где администраторы ломают загрузку

Самая частая ошибка — воспринимать подсказку как просьбу зачистить всё с названием systemd-boot. Удаляют /boot/efi/EFI/systemd, правят NVRAM через efibootmgr -b … -B, стирают /etc/kernel/proxmox-boot-uuids или запускают bootctl remove. Ничего этого pve8to9 не просит. После такой уборки установленное ядро остаётся на ZFS, но firmware уже не знает, чем и откуда его загрузить.

Вторая ошибка — выполнить apt remove, увидеть успешный exit code и сразу перезагрузиться. Успех APT говорит только о состоянии пакетов. Он не подтверждает, что обе ESP доступны, содержат одинаковые ядра и соответствуют загрузочной записи. Ещё хуже запускать следом без чтения apt autoremove: явно нужные systemd-boot-efi и systemd-boot-tools могут считаться автоматическими зависимостями, если их заранее не закрепили.

Есть и тонкий момент. Скрипты метапакета работают с ESP через bootctl и рассчитаны на классическую схему Debian с постоянно смонтированной ESP; именно поэтому ручная схема является исключением, и перед удалением на таком узле я читаю сами maintainer-скрипты в /var/lib/dpkg/info/systemd-boot.*. В штатном Proxmox ESP обычно не смонтированы, а последующий proxmox-boot-tool refresh разворачивает нужное содержимое заново. Отдельный Debian bug №1110177 зафиксировал и обратную проблему: postinst метапакета (версия 257.7-1) падал, когда ESP не смонтирована — а у Proxmox она по умолчанию именно не смонтирована. Предупреждение pve8to9 появилось не из эстетических соображений — два независимых управляющих механизма действительно плохо уживаются.

Риск удаления одного метапакета в штатной схеме часто преувеличен. Риск ручной зачистки EFI-файлов или перезагрузки после неудачной синхронизации — вполне реальный.
Памятка: Где администраторы ломают загрузку — схема
Памятка: Где администраторы ломают загрузку. Открыть схему в полном размере

Финальная проверка перед перезагрузкой

Перед рестартом я хочу получить не ощущение, а доказательства. Проверяю версию платформы и ядра, отсутствие сломанных пакетов, успешную синхронизацию всех ESP и итоговый отчёт. Команду pve8to9 полезно запускать неоднократно: её вывод намеренно меняется до и после перехода на PVE 9.

pveversion -v
uname -r
dpkg --audit
proxmox-boot-tool refresh
proxmox-boot-tool status
efibootmgr -v
pve8to9 --full

Если два системных диска должны независимо загружаться, в status должны присутствовать обе ESP. Одной строки System currently booted with uefi для зеркала недостаточно.

Первую перезагрузку делаю только при открытой независимой консоли. В меню проверяю наличие ожидаемых ядер, после старта — zpool status, сетевые мосты, кластер, хранилища и запуск контрольной ВМ. Проверка загрузки со второго системного диска полезна, но на рабочем сервере я провожу её только в отдельное окно: изменение BootOrder — самостоятельный риск, не обязательная часть удаления метапакета.

На сентябрь 2026 года актуальная ветка — Proxmox VE 9.2, основанная на Debian 13.5 и использующая ядро 7.0 как стабильное по умолчанию. Сам принцип не изменился: Proxmox управляет своими ESP через proxmox-boot-tool, а интеграционный systemd-boot из Trixie ему обычно не нужен. Мой приоритет такой: сначала доказать способ загрузки, затем сохранить отдельные EFI-компоненты, убрать только метапакет, синхронизировать ESP и лишь потом перезагружать. На косметические остатки конфигов можно не тратить окно обслуживания.

Зелёный `pve8to9` — необходимая, но не достаточная проверка. Для загрузчика решающим остаётся успешный `proxmox-boot-tool status` по каждой ESP.

Частые вопросы

Можно ли просто выполнить apt remove systemd-boot?

Можно, если это рекомендует актуальный `pve8to9`, загрузчик не настроен вручную и симуляция `apt -s remove systemd-boot` не удаляет важные пакеты. При systemd-boot под управлением Proxmox сначала явно установите и закрепите `systemd-boot-efi` и `systemd-boot-tools`, а после удаления выполните `proxmox-boot-tool refresh`.

Почему сервер продолжает загружаться после удаления пакета?

Потому что метапакет с Debian-хуками, исходный EFI-бинарник и развёрнутая копия загрузчика на ESP — разные сущности. В штатной схеме нужные EFI-файлы и записи ядер обслуживает `proxmox-boot-tool`.

Что делать, если systemd-boot-tools не находится?

Скорее всего, узел ещё использует репозитории Debian 12 Bookworm. На активной схеме systemd-boot свежий `pve8to9` на этой стадии должен оставить старый пакет ради `bootctl`. Не подключайте случайные репозитории; продолжайте по официальному порядку обновления.

Достаточно ли увидеть Linux Boot Manager в efibootmgr?

Нет. Сопоставьте `BootCurrent` с конкретной записью, проверьте путь EFI и сравните результат с `proxmox-boot-tool status`. Неактивные и устаревшие записи NVRAM встречаются часто.

Нужно ли удалять каталог EFI/systemd вручную?

Нет. Это уже удаление используемого EFI-бинарника, а не исправление пакетной зависимости. Если каталог требует восстановления или очистки, сначала определите активную запись и работайте через `proxmox-boot-tool`.

Что делать с вручную настроенным systemd-boot?

Не удалять метапакет только ради прохождения проверки. Зафиксируйте собственные hooks, точки монтирования ESP и схему kernel-install, после чего спланируйте переход на `proxmox-boot-tool` или GRUB. Это отдельная миграция загрузчика.

Что означает предупреждение про grub-efi-amd64 и BOOTX64.efi?

Это соседние проверки того же блока `pve8to9`. Без метапакета `grub-efi-amd64` новые версии GRUB не попадают на ESP, а без `grub2/force_efi_extra_removable` не обновляется резервный путь `/EFI/BOOT/BOOTX64.efi`. Установите пакет, задайте параметр через `debconf-set-selections` и переустановите `grub-efi-amd64` — точные команды скрипт выводит сам.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 💬 MAX: +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи