Вопрос или проблема
Я обновляю сервер Debian, работающий на DigitalOcean, с Bullseye до Bookworm, и не могу понять, как преодолеть эту ошибку, которая возникла во время apt upgrade --without-new-pkgs
Когда я пытался продолжить неудачное обновление, ошибка продолжала появляться:
Настройка initramfs-tools (0.142+deb12u1) ...
update-initramfs: откладывает обновление (триггер активирован)
Настройка linux-image-6.1.0-28-amd64 (6.1.119-1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Генерация /boot/initrd.img-6.1.0-28-amd64
E: /usr/share/initramfs-tools/hooks/growroot завершился с кодом возврата 1.
update-initramfs: не удалось завершить /boot/initrd.img-6.1.0-28-amd64 с 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools завершился с кодом возврата 1
dpkg: ошибка при обработке пакета linux-image-6.1.0-28-amd64 (--configure):
скрипт пост-установки установленного пакета linux-image-6.1.0-28-amd64 завершился с кодом выхода 1
dpkg: проблемы с зависимостями не позволяют настроить linux-image-amd64:
linux-image-amd64 зависит от linux-image-6.1.0-28-amd64 (= 6.1.119-1); тем не менее:
Пакет linux-image-6.1.0-28-amd64 еще не настроен.
dpkg: ошибка при обработке пакета linux-image-amd64 (--configure):
проблемы зависимостей - оставление неконфигурированным
Обработка триггеров для initramfs-tools (0.142+deb12u1) ...
update-initramfs: Генерация /boot/initrd.img-5.10.0-33-amd64
E: /usr/share/initramfs-tools/hooks/growroot завершился с кодом возврата 1.
update-initramfs: не удалось завершить /boot/initrd.img-5.10.0-33-amd64 с 1.
dpkg: ошибка при обработке пакета initramfs-tools (--configure):
скрипт пост-установки установленного пакета initramfs-tools завершился с кодом выхода 1
При обработке возникли ошибки:
linux-image-6.1.0-28-amd64
linux-image-amd64
initramfs-tools
root@anaximander1:~# df -h
Файловая система Размер Использовано Доступно Использование% Смонтировано на
udev 1.9G 0 1.9G 0% /dev
tmpfs 392M 864K 392M 1% /run
/dev/vda1 118G 82G 31G 74% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 392M 4.0K 392M 1% /run/user/0
Поскольку сбой происходит при growpart, я попытался проверить использование диска, но не вижу никаких проблем.
Файловая система Размер Использовано Доступно Использование% Смонтировано на
udev 1.9G 0 1.9G 0% /dev
tmpfs 392M 864K 392M 1% /run
/dev/vda1 118G 82G 31G 74% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 392M 4.0K 392M 1% /run/user/0
И я проверил fdisk
Диск /dev/vda: 120 GiB, 128849018880 байт, 251658240 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 66776602-A740-4B6D-8F30-6CC8AA66C962
Устройство Начало Конец Сектора Размер Тип
/dev/vda1 4096 251656191 251652096 120G Файловая система Linux
/dev/vda15 2048 4095 2048 1M Загрузка BIOS
Записи таблицы разделов не находятся в порядке по диску.
Как я могу решить эту ошибку?
Я нашел обходной путь, но будьте очень осторожны, чтобы ваша система НЕ нуждалась в growpart. Мой сервер DigitalOcean – это один раздел, в котором много свободного места. Поэтому я отключил хук growpart, завершил обновление, повторно включил его, и, похоже, все работает нормально.
# Отложите хук mv /usr/share/initramfs-tools/hooks/growroot /root/growroot # Выполните update-initramfs update-initramfs -u # Продолжите обновление dpkg --configure -a apt upgrade --without-new-pkgs apt full-upgrade # Верните хук на его законное место mv /root/growroot /usr/share/initramfs-tools/hooks/growroot # Снова выполните update-initramfs, чтобы убедиться, что он все еще работает update-initramfs -u
Я приветствую лучший ответ. Это, похоже, работало на моей системе, не вызывая никаких проблем, но это не кажется правильным ответом.
Ответ или решение
Ошибка при обновлении initramfs-tools, возникающая во время процесса обновления с Debian 11 (Bullseye) до Debian 12 (Bookworm), может быть вызвана неработоспособной hook-сценарией growroot. Эта проблема препятствует корректной конфигурации пакетов, связанных с ядром, и может быть вызвана рядом факторов, включая неправильную конфигурацию дискового пространства или проблемы совместимости.
Возможные причины ошибки
-
Неисправность скрипта growroot: Скрипт hook
/usr/share/initramfs-tools/hooks/growroot
не смог выполнить своё назначение, что вызвало сбои в процессе генерации изображения initramfs. Это обычно связано с тем, что сценарий не может корректно определить доступное дисковое пространство или не может корректно изменить размер файловой системы. -
Проблемы с диском или разделами: Хотя в вашем случае визуально не наблюдается нехватки пространства на файловой системе, важно убедиться, что все разделы и диски настроены корректно и имеют соответствующие атрибуты.
-
Зависимости пакетов: Неудовлетворённые зависимости между различными версиями пакетов могут привести к подобным проблемам, особенно если несколько пакетов требуют обновления одновременно.
Преодоление ошибки
Вы уже нашли обходной путь, который сработал для вас, переместив скрипт growroot и после завершения обновления вернув его на место. Этот подход эффективен, однако требует осторожности, поскольку не все системы могут функционировать корректно без скрипта growroot.
Вот более детализированный и безопасный метод решения этой проблемы:
-
Резервное копирование: Перед выполнением любых операций…
cp /usr/share/initramfs-tools/hooks/growroot /root/growroot_backup
-
Отключение скрипта: Переместите скрипт growroot для предотвращения его выполнения.
mv /usr/share/initramfs-tools/hooks/growroot /root/growroot
-
Обновление initramfs: Выполните обновление initramfs, чтобы исключить ошибки, связанные с отсутствием скрипта.
update-initramfs -u
-
Решение проблем с пакетами: Перезапустите процесс конфигурации пакетов.
dpkg --configure -a apt upgrade --without-new-pkgs apt full-upgrade
-
Возврат скрипта: В конце вы можете вернуть скрипт в исходное положение.
mv /root/growroot /usr/share/initramfs-tools/hooks/growroot
-
Финальное обновление initramfs: Завершите процесс, обновив initramfs еще раз.
update-initramfs -u
Заключение
Данный метод позволяет произвести обновление без потери функциональности, если ваша система действительно не нуждается в growroot. Однако важно помнить, что такие изменения могут повлиять на работу систем, где необходима авто-расширяемая файловая система. Для правильной работы рекомендуется осуществить детальную проверку конфигурации и зависимостей перед обновлением.
Справьтесь с указанной проблемой с осторожностью, и учитывайте, что вне зависимости от обходного метода, важно после выполнения всех операций провести тщательное тестирование системы для подтверждения её стабильности и целостности.