Installed initramfs-tools package post-installation script subprocess returned error exit

Tags: #<Tag:0x00007f74f613c460> #<Tag:0x00007f74f613c398> #<Tag:0x00007f74f613c2d0>
# dpkg --configure -a
Paramétrage de initramfs-tools (0.141) ...
update-initramfs: deferring update (trigger activated)
Traitement des actions différées (« triggers ») pour initramfs-tools (0.141) ...
update-initramfs: Generating /boot/initrd.img-5.17.0-1-amd64
live-boot: core filesystems dm-verityE: /usr/share/initramfs-tools/hooks/live failed with return 1.
update-initramfs: failed for /boot/initrd.img-5.17.0-1-amd64 with 1.
dpkg: erreur de traitement du paquet initramfs-tools (--configure) :
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Des erreurs ont été rencontrées pendant l'exécution :
 initramfs-tools

Par curisosité je viens de voir que je n’ai pas cette hook sur plusieurs de mes systèmes et en cherchant ça semble lié à ce paquet : live-boot-initramfs-tools.
N’y aurait-il pas un souci avec la signature de ce kernel durant la mise à jour ??? j’ai pas de secure boot sous la main malheureusement et pas plus d’idée :confused:

Pas surprenant qu’il ne soit pas installé chez toi : d’après sa description ce paquet est prévu pour les systèes live et n’est pas censé être installé sur un système ordinaire.

Pour le reste, qu’est-ce qui te fait penser à un problème lié au secure boot ?

@PengouinPdt : c’est un système live ou une installation ordinaire ?

update-initramfs -u affichera peut-être plus d’informations avec l’option -v.

La hook en question but après ça : filesystems dm-verity

Quel rapport avec le secure boot ?

installation ordinaire, depuis une image iso. ça fait des mois et des mois que je fonctionne dessus, sans quasiment jamais de soucis.

toutes les infos restituées sont dans ce paste :

PS : en passant - merci à tous les deux de vous pencher sur ce problème :wink:

Car j’avais pas pensé à la vérification d’un Device Mapper chiffré mais plus à un souci de signature lié au secure boot.

(...)
Calling hook ntfs_3g
Adding binary /bin/ntfs-3g
Adding binary-link /usr/lib/x86_64-linux-gnu/libntfs-3g.so.89
Adding binary /lib/x86_64-linux-gnu/libntfs-3g.so.89.0.0
Calling hook live
live-boot: core filesystems dm-verityRemoving /boot/initrd.img-5.17.0-1-amd64.dpkg-bak

Ça s’arrête comme ça, sans message d’erreur ? Si tu as redirigé la sortie standard dans un fichier, tu as bien redirigé aussi la sortie d’erreur ?

update-initramfs -uv | tee update-initramfs.txt
mais avec la commande update-initramfs, cela se termine exactement pareil !

Cette commande ne redirige pas la sortie d’erreur dans le fichier. Utilise plutôt

update-initramfs -uv 2>&1 | tee update-initramfs.txt

Et pas besoin de tout poster, la fin suffit.

(…)
Calling hook live
live-boot: core filesystems dm-verityE: /usr/share/initramfs-tools/hooks/live failed with return 1.
Removing /boot/initrd.img-5.17.0-1-amd64.dpkg-bak
update-initramfs: failed for /boot/initrd.img-5.17.0-1-amd64 with 1.

Le hook script live n’est pas plus bavard avec -v… Et je ne sais pas du tout ce qu’il fait.

Espace libre suffisant dans /boot et ailleurs ?

Essaie avec strace, c’est très bavard mais parfois ça permet de décoincer des trucs.

J’ai trouvé ça sur la toile c’est pour ubuntu mais ça doit être proche (je n’ai pas non plus sur les postes aux quels j’ai accès) :

https://www.apt-browse.org/browse/ubuntu/trusty/universe/all/live-boot-initramfs-tools/3.0.1-1/file/usr/share/initramfs-tools/hooks/live

Pour débugger un script shell, ça me paraît un peu excessif.

Ça ne contient pas de section « dm-verity ».

P’têt ben mais on trouve ren…

Bon en récupérant le paquet adéquat j’ai bien une copie à jour du script :

https://packages.debian.org/sid/live-boot-initramfs-tools

#!/bin/sh

set -e

. /usr/share/initramfs-tools/hook-functions

[ "${QUIET}" ] || echo -n "live-boot:"

# Reading configuration file from filesystem and live-media
for _FILE in /etc/live/boot.conf /etc/live/boot/* \
	     /run/live/medium/live/boot.conf /run/live/medium/live/boot/*
do
	if [ -e "${_FILE}" ]
	then
		. "${_FILE}"
	fi
done

# Checking live-boot
if [ ! -e /bin/live-boot ]
then
	echo
	echo "W: live-boot-initramfs-tools (backend) installed without live-boot,"
	echo "W: this initramfs will *NOT* have live support."
	exit 0
fi

[ "${QUIET}" ] || echo -n " core"

mkdir -p "${DESTDIR}/bin"
cp -a /bin/live-boot "${DESTDIR}/bin"

mkdir -p "${DESTDIR}/lib/live"
cp -a /lib/live/boot "${DESTDIR}/lib/live"

mkdir -p "${DESTDIR}/etc/live"
if [ -e /etc/live/boot.conf ]
then
	cp -a /etc/live/boot.conf "${DESTDIR}/etc/live"
fi
if [ -e /etc/live/boot ]
then
	cp -a /etc/live/boot "${DESTDIR}/etc/live"
fi

# klibc dependencies
for FILE in /lib/libacl* /lib/libblkid* /lib/libuuid* /lib/libdevmapper* /lib/libattr*
do
	if [ ! -e "${DESTDIR}/${FILE}" ] && ls "${FILE}" > /dev/null 2>&1
	then
		cp -a "${FILE}" "${DESTDIR}/${FILE}"
	fi
done

# udev dependencies
if [ "${MINIMAL:-}" != "true" ] &&  [ "${MINIMAL:-}" != "yes" ]
then
	for FILE in /lib/udev/*_id
	do
		copy_exec "${FILE}"
	done
fi

if [ -e /lib/udev/rules.d/60-cdrom_id.rules ] && [ "${DISABLE_CDROM:-}" != "true" ] && \
	[ "${DISABLE_CDROM:-}" != "yes" ]
then
	mkdir -p "${DESTDIR}/lib/udev/rules.d"
	cp -p /lib/udev/rules.d/60-cdrom_id.rules "${DESTDIR}/lib/udev/rules.d"
fi

[ "${QUIET}" ] || echo -n " filesystems"

# Configuration: keymap (usefull when using encryption)
if [ -x /bin/loadkeys ] && [ -r /etc/console/boottime.kmap.gz ]
then
	copy_exec /bin/loadkeys

	mkdir -p "${DESTDIR}/etc"
	cp /etc/console/boottime.kmap.gz "${DESTDIR}/etc"
fi

# Configuration: Unique ID
if [ -n "${LIVE_GENERATE_UUID}" ]
then
	mkdir -p "${DESTDIR}/conf"
	uuidgen -r > "${DESTDIR}/conf/uuid.conf"
fi

# Filesystem: btrfs
manual_add_modules btrfs

# Filesystem: cifs
if [ -x /sbin/mount.cifs ]
then
	copy_exec /sbin/mount.cifs
        manual_add_modules cifs
fi

# Filesystem: ext3/ext4
manual_add_modules ext3
manual_add_modules ext4

# Filesystem: hfs/hfsplus
manual_add_modules hfs
manual_add_modules hfsplus

# Filesystem: jffs2
manual_add_modules jffs2

if [ -x /usr/bin/rsync ] && [ "${MINIMAL:-}" != "true" ] && [ "${MINIMAL:-}" != "yes" ]
then
	copy_exec /usr/bin/rsync /bin
fi

# Filesystem: squashfs
copy_exec /sbin/losetup
manual_add_modules loop
manual_add_modules squashfs
manual_add_modules sqlzma
manual_add_modules unlzma

# Filesystem: aufs/overlay
manual_add_modules aufs
manual_add_modules overlay

# Filesystem: vfat
if [ "${DISABLE_FAT:-}" != "true" ] &&  [ "${DISABLE_FAT:-}" != "yes" ]
then
	manual_add_modules nls_cp437
	manual_add_modules nls_iso8859-1
	manual_add_modules nls_utf8
	manual_add_modules nls_ascii
	manual_add_modules vfat
fi

# Filesystem: ntfs
if [ "${DISABLE_NTFS:-}" != "true" ] && [ "${DISABLE_NTFS:-}" != "yes" ]
then
	manual_add_modules ntfs
fi

# dm-verity support
if [ "${DISABLE_DM_VERITY:-}" != "true" ] && [ "${DISABLE_DM_VERITY:-}" != "yes" ]
then
	[ "${QUIET}" ] || echo -n " dm-verity"
	manual_add_modules dm-verity
	# The BusyBox mount does not support dm-verity so we use the util-linux version.
	copy_exec /usr/bin/mount /bin
fi

[ "${QUIET}" ] || echo -n " devices"
# Hardware: cdrom
if [ "${DISABLE_CDROM:-}" != "true" ] && [ "${DISABLE_CDROM:-}" != "yes" ]
then
	manual_add_modules ide-cd
	manual_add_modules ide-generic
	manual_add_modules ohci1394
	manual_add_modules sbp2
	manual_add_modules sr_mod
fi

# Hardware: usb
if [ "${DISABLE_USB:-}" != "true" ] && [ "${DISABLE_USB:-}" != "yes" ]
then
	manual_add_modules sd_mod
fi

# Hardware: network
auto_add_modules net

# Program: eject
if [ -x /usr/bin/eject ]
then
	copy_exec /usr/bin/eject /bin
fi

[ "${QUIET}" ] || echo -n " utils"

# Feature: Verify Checksums
if [ -e /etc/progress-linux_version ]
then
	copy_exec /usr/bin/sha256sum /bin
else
	copy_exec /usr/bin/md5sum /bin
fi

# Program: memdisk
if [ -x /usr/bin/memdiskfind ]
then
[ "${QUIET}" ] || echo -n " memdisk"
	copy_exec /usr/bin/memdiskfind
	manual_add_modules phram
	manual_add_modules mtdblock
fi

# Program: udev
if [ -x /bin/udevadm ]
then
	[ "${QUIET}" ] || echo -n " udev"
	copy_exec /bin/udevadm
fi

# Program: blockdev
if [ -x /sbin/blockdev ]
then
	[ "${QUIET}" ] || echo -n " blockdev"
	copy_exec /sbin/blockdev
fi

# FUSE kernel module
if [ "${DISABLE_FUSE:-n}" != "true" ] && [ "${DISABLE_FUSE:-n}" != "yes" ]
then
	manual_add_modules fuse

	# FUSE filesystem: httpfs2
	if [ -x /usr/bin/httpfs2_ssl ]
	then
		[ "${QUIET}" ] || echo -n " httpfs:ssl"
		copy_exec /usr/bin/httpfs2_ssl /bin/httpfs
	elif [ -x /usr/bin/httpfs2 ]
	then
		[ "${QUIET}" ] || echo -n " httpfs"
		copy_exec /usr/bin/httpfs2 /bin/httpfs
	fi

	# FUSE filesystem: curlftpfs
	if [ -x /usr/bin/curlftpfs ]
	then
		[ "${QUIET}" ] || echo -n " ftpfs"
		copy_exec /usr/bin/curlftpfs /bin
	fi
fi

# iSCSI
if [ -x /usr/sbin/iscsistart ]
then
	[ "${QUIET}" ] || echo -n " iscsi"
	copy_exec /usr/sbin/iscsistart /bin
	#manual_add_modules ib_iser
	manual_add_modules iscsi_tcp
	manual_add_modules crc32c
fi

# Some experimental stuff

[ "${QUIET}" ] || echo -n " dns"

# libnss_dns.so.*:    DNS
# libnss_files.so.*:  /etc/hosts and /etc/passwd
# libnss_compat.so.*: /etc/passwd

for _SHLIB in $(find /lib /usr/lib -name 'libnss_dns.so.*' -o -name 'libnss_files.so.*')
do
	copy_exec "${_SHLIB}"
done

if [ ! -e "${DESTDIR}/etc/nsswitch.conf" ]
then
	# Needed to make "hostname -f" honor the domainname provided by DHCP
	echo "hosts: files dns" > "${DESTDIR}/etc/nsswitch.conf"
fi

[ "${QUIET}" ] || echo .

Mais je vois pas plus …

La partie concernant dm-verity :

# dm-verity support
if [ "${DISABLE_DM_VERITY:-}" != "true" ] && [ "${DISABLE_DM_VERITY:-}" != "yes" ]
then
	[ "${QUIET}" ] || echo -n " dm-verity"
	manual_add_modules dm-verity
	# The BusyBox mount does not support dm-verity so we use the util-linux version.
	copy_exec /usr/bin/mount /bin
fi

Les causes d’erreurs possibles sont :

  • le module dm-verity est manquant ; il est bien présent dans le noyau Debian standard
  • l’exécutable /usr/bin/mount est manquant ; le paquet mount installe ce fichier dans /bin et non dans /usr/bin, mais avec « usr-merge » (où /bin est un symlink vers /usr/bin, par défaut à partir de buster et abandonné après bullseye), il est accessible par les deux chemins.

Vérification :

/sbin/modinfo dm-verity
which -a mount

Apparemment il est possible de désactiver le support de dm-verity dans l’initramfs en mettant DISABLE_DM_VERITY à « true » ou « yes » dans /etc/live/boot.conf ou un fichier /etc/live/boot/*, mais je ne connais pas les conséquences sur le démarrage.

Oui :

$ df -h
df: /run/user/1000/doc: Operation not permitted
Filesystem          Size  Used Avail Use% Mounted on
udev                7.8G     0  7.8G   0% /dev
tmpfs               1.6G  1.3M  1.6G   1% /run
/dev/sda7           4.6G  1.1G  3.2G  26% /
/dev/sda9            19G  7.9G  9.4G  46% /usr
tmpfs               5.0M  4.0K  5.0M   1% /run/lock
tmpfs               4.7G  4.0K  4.7G   1% /dev/shm
/dev/sda8           920M  112M  746M  13% /boot
/dev/sda1           510M   15M  496M   3% /boot/efi
/dev/sda6           397G  342G   35G  91% /home
/dev/sda12          4.6G  2.0G  2.3G  47% /opt
/dev/sda10          4.6G   76K  4.3G   1% /tmp
/dev/sda13          4.6G  160K  4.3G   1% /usr/local
/dev/sda11          4.6G  1.9G  2.4G  44% /var
/dev/sda14          4.6G   34M  4.3G   1% /var/log
cgroup_root          10M     0   10M   0% /sys/fs/cgroup
tmpfs               1.6G   12K  1.6G   1% /run/user/1000
/home/myuser/.Private  397G  342G   35G  91% /home/myuser

$ /sbin/modinfo dm-verity
filename:       /lib/modules/5.17.0-1-amd64/kernel/drivers/md/dm-verity.ko
license:        GPL
description:    device-mapper target for transparent disk integrity checking
author:         Will Drewry <wad@chromium.org>
author:         Mandeep Baines <msb@chromium.org>
author:         Mikulas Patocka <mpatocka@redhat.com>
depends:        dm-bufio,dm-mod,reed_solomon
retpoline:      Y
intree:         Y
name:           dm_verity
vermagic:       5.17.0-1-amd64 SMP preempt mod_unload modversions 
sig_id:         PKCS#7
signer:         Debian Secure Boot CA
sig_key:        4B:6E:F5:AB:CA:66:98:25:17:8E:05:2C:84:66:7C:CB:C0:53:1F:8C
sig_hashalgo:   sha256
signature:      5F:F3:3C:79:48:72:8D:9D:5D:DE:BA:B1:0A:75:55:5E:DC:12:A1:36:
                2A:44:88:B7:BD:AA:2B:FD:EC:D7:A5:3B:7D:29:6E:CE:C6:1C:2A:06:
                A9:33:AC:96:9A:4C:40:AB:16:5B:9A:C2:1E:43:54:95:02:D0:DA:9A:
                CE:8D:60:E2:03:8C:77:C2:C4:DB:03:2D:C2:A6:C3:C2:E9:37:3B:10:
                1B:12:5B:91:DD:2B:30:B4:57:0A:83:C2:99:E5:30:DC:55:0A:2B:89:
                8E:07:1A:DC:FF:FF:AB:60:34:06:C4:4B:58:14:1D:B8:A3:A9:93:88:
                3D:05:49:4E:5A:0E:F5:6C:A5:A3:99:5A:9E:9D:DA:76:A0:5D:81:9E:
                FC:4D:63:9A:18:0A:01:01:22:19:54:37:F3:C2:4F:FD:EE:24:ED:CB:
                09:76:BB:C6:9F:1E:22:84:07:2B:55:F8:F0:6E:46:DE:22:6C:DD:2F:
                47:4A:DC:73:87:22:2C:06:2E:0C:DB:B8:69:B0:E9:6B:01:05:A9:A8:
                17:76:5C:7B:95:55:E3:69:65:75:D5:5A:AA:C1:A9:A9:6F:85:54:29:
                67:F5:C4:56:11:35:0F:FD:A3:81:AA:2A:14:5D:FE:0C:CF:E5:02:54:
                24:69:BB:57:BC:87:00:EF:93:7F:F1:0D:26:59:04:AB
parm:           prefetch_cluster:uint
parm:           require_signatures:Verify the roothash of dm-verity hash tree (bool)

$ which -a mount
/bin/mount

Le binaire usrmerge n’est pas installé. Je fais.

Paramétrage de usrmerge (25) ...
The system has been successfully converted.

Et cela a résolu le problème ; la mise à jour a continué sans soucis.

Installer le paquet usrmerge n’était pas la meilleure chose à faire… Comme je l’ai écrit, cette façon de fusionner /usr est abandonnée car elle est incompatible avec le fonctionnement de dpkg, et revenir en arrière est compliqué voire impossible. Il aurait mieux valu créer un symlink de mount dans /usr/bin ou désactiver le support de dm-verity fautif qui a été ajouté par la toute récente mise à jour de live-boot en attendant que le bug soit corrigé. Apparemment il n’a pas encore été rapporté, n’hésite pas à le faire.