/usr/share/initramfs-tools/hooks/btrfs завершился с кодом возврата 1

Вопрос или проблема

Когда я загружаю систему, я получаю следующую ошибку:

/dev/root: Can't open blockdev

После принудительной перезагрузки я могу загрузиться, используя расширенные параметры загрузки:

С Linux 6.8.0-51-generic система не загружается.
С Linux 5.15.0-130-generic система загружается успешно.

Я пытался обновить и усовершенствовать, но проблема сохраняется.

(Примечание: Для отладки я добавил sed -ex в /usr/share/initramfs-tools/hooks/btrfs.)

root@x:~# apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  kpartx libsgutils2-1.46-2 sg3-utils
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Setting up initramfs-tools (0.142ubuntu25.4) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.142ubuntu25.4) ...
update-initramfs: Generating /boot/initrd.img-5.15.0-130-generic
+ PREREQ=
+ prereqs
+ echo
+ exit 0
+ PREREQ=
+ prereqs
+ echo
+ exit 0
+ PREREQ=
+ . /usr/share/initramfs-tools/hook-functions
+ [ -x /bin/btrfs ]
+ copy_exec /bin/btrfs /bin
+ local src target x nonoptlib ret
+ src=/bin/btrfs
+ target=/bin
+ copy_file binary /bin/btrfs /bin
+ local type src target link_target
+ type=binary
+ src=/bin/btrfs
+ target=/bin
+ [ -f /bin/btrfs ]
+ [ -d /var/tmp/mkinitramfs_SxPD4G//bin ]
+ target=/bin/btrfs
+ target=/usr/bin/btrfs
+ [ -e /var/tmp/mkinitramfs_SxPD4G//usr/bin/btrfs ]
+ mkdir -p /var/tmp/mkinitramfs_SxPD4G//usr/bin
+ [ -h /bin/btrfs ]
+ [ n = y ]
+ cp -pP /bin/btrfs /var/tmp/mkinitramfs_SxPD4G//usr/bin/btrfs
+ env --unset=LD_PRELOAD ldd /bin/btrfs
+ grep -P ^\t
+ sed -e
                /\//!d;
                /linux-gate/d;
                /=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/};
                s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/
+ echo /lib/libgcwrap.so
+ sed -e s#/lib/\([^/]*/\)\?\(tls\|i686\|sse2\|neon\|vfp\).*/\(lib.*\)#/lib/\1\3#
+ nonoptlib=/lib/libgcwrap.so
+ echo /lib/libgcwrap.so
+ sed -e s#-linux-gnu/\(tls\|i686\|sse2\|neon\|vfp\).*/\(lib.*\)#-linux-gnu/\2#
+ nonoptlib=/lib/libgcwrap.so
+ [ -e /lib/libgcwrap.so ]
+ copy_file binary /lib/libgcwrap.so
+ local type src target link_target
+ type=binary
+ src=/lib/libgcwrap.so
+ target=/lib/libgcwrap.so
+ [ -f /lib/libgcwrap.so ]
+ return 2
+ ret=2
+ [ 2 = 1 ]
+ return 1
E: /usr/share/initramfs-tools/hooks/btrfs failed with return 1.
update-initramfs: failed for /boot/initrd.img-5.15.0-130-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 initramfs-tools

Примечание: Я также столкнулся с ошибкой в /usr/share/initramfs-tools/hooks/dhcpcd, которая завершилась с возвращаемым значением 1. Я решил это, переустановив initramfs-tools.

Заранее спасибо

Ответ или решение

Ошибка, возникающая при загрузке системы, связана с невозможностью выполнить сценарий из директории /usr/share/initramfs-tools/hooks/btrfs, который завершается с кодом ошибки 1. Это может указывать на проблемы с генерацией образа initramfs, необходимого для загрузки ядра Linux 6.8.0-51, но не затрагивающего ядро 5.15.0-130, которое загружается успешно. Давайте подробнее рассмотрим возможные причины и решения данной проблемы.

Анализ проблемы

  1. Неполная установка пакетов: Лог указывает на проблему с пакетом initramfs-tools, что может быть связано с неправильной или неполной установкой пакетов, необходимых для корректной работы btrfs.

  2. Неправильная обработка зависимостей: Скрипт btrfs не может скопировать библиотеку /lib/libgcwrap.so, что приводит к ошибке. Это может быть результатом отсутствия данной библиотеки или неправильного конфигурирования путей и зависимостей.

  3. Версия ядра: Ошибка проявляется только при загрузке с ядром 6.8.0-51, что может указывать на несовместимость ядра с текущей конфигурацией или наличием багов в новой версии ядра.

Рекомендации по решению

1. Проверка и восстановление пакетов

Проверьте целостность всех связанных пакетов и переустановите необходимые для работы с Btrfs и initramfs компоненты:

sudo apt-get update
sudo apt-get install --reinstall initramfs-tools btrfs-progs

2. Ручное обновление initramfs

Попробуйте вручную обновить образ initramfs:

sudo update-initramfs -u -k 6.8.0-51-generic

Если вывод содержит ошибки, обратите внимание на сообщения и устраните их.

3. Поиск и установка отсутствующих библиотек

Протестируйте наличие файла /lib/libgcwrap.so и если он отсутствует, попробуйте найти соответствующий пакет, содержащий данную библиотеку и установите его.

apt-cache search libgcwrap # поиск пакета

4. Проверка совместимости с ядром

Если проблема сохраняется, временно загрузитесь с предыдущей версией ядра (5.15.0-130) и проверьте обновление системы:

sudo apt-get dist-upgrade

Это может помочь обнаружить более свежие исправления или обновления, касающиеся проблем с ядром.

Вывод

Ключом к решению проблемы является последовательный анализ и устранение возможных причин ошибки btrfs в рамках сценариев initramfs-tools. Исправление ошибок в сценариях, обновление и воссоздание образа initramfs может обеспечить успешную загрузку последней версии ядра. Если все эти шаги не помогают, возможно стоит обновить систему до новой версии дистрибутива, если таковая доступна.

Оцените материал
Добавить комментарий

Капча загружается...