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

Tags: #<Tag:0x00007f78b8c3c840> #<Tag:0x00007f78b8c3c688> #<Tag:0x00007f78b8c3c480>

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.

Stp, fournis des sources, parce que ce que je trouve depuis le site officiel Debian tend à prouver le contraire !

Voir, par exemple :

In February 2021, the Technical Committee has resolved that Debian ‹ bookworm › should support only the merged-usr root filesystem layout, dropping support for the non-merged-usr layout.
(…)

Adoption rate

Merged /usr has been the default since debootstrap 1.0.85, reverted in 1.0.87 and re-enabled in 1.0.102.

ou la page popcorn

Ce mail explique en long en large pourquoi il est bon de l’adopter dans Debian, sans faire l’impasse sur les possibles problèmes.

Bref, de ce que je lis, cela semble devenir la norme future pour Debian. Quant aux *Buntus (et assimilés), ces distributions y passent aussi.


La page suivante explique quelle approche semble être la plus pertinente relative au fait de fusionner /usr ; et, dans le cas de l’approche merged-/usr-via-aliased-dirs en effet l’outil dpkg a de gros soucis, ce qui ne semble pas être dans le cas de l’approche merged-/usr-via-moves-and-symlink-farms.


Quoiqu’il en soit, nulle part, je ne trouve de mention de l’abandon définitif de l’outil usrmerge ; et il me semble que les efforts sont faits plutôt dans le sens d’une adoption complète, à terme - qu’il soit long ou court, n’est pas le propos ici.

2 J'aime

Je viens de me souvenir ce matin pourquoi j’avais ces paquets de livesystem.
Un temps donné, j’ai essayé de générer une image iso d’installation de Devuan ; après avoir testé, avec plus ou moins de succès, debian-installer, j’ai essayé refractasnaphot, qui installe les binaires sus-mentionnés. Il s’est passé du temps, j’avais oublié/mis de côté ce « projet », et surtout oublié de purger les paquets en question.

Voilà, la raison.

@PascalHambourg

Sur le forum de Devuan, c’est une des réponses, en effet de l’administrateur :wink:

Le contraire de quoi ?
Que c’est incompatible avec dpkg et qu’il est compliqué de revenir en arrière ? Tu as fourni toi-même le lien qui l’explique.
Que c’est abandonné ? En effet j’ai été induit en erreur par l’avertissement ajouté lors de la mise à jour de dpkg par le mainteneur de dpkg qui est en opposition avec la décision du comité technique :

dpkg: warning: System unsupported due to merged-usr-via-aliased-dirs.
dpkg: warning: See https://wiki.debian.org/Teams/Dpkg/FAQ#broken-usrmerge.

modifié ultérieurement en :

dpkg: warning: This system uses merged-usr-via-aliased-dirs, going behind dpkg’s
dpkg: warning: back, breaking its core assumptions. This can cause silent file
dpkg: warning: overwrites and disappearances, and its general tools misbehavior.
dpkg: warning: See https://wiki.debian.org/Teams/Dpkg/FAQ#broken-usrmerge.

Je ne pense pas que le wiki soit une source officielle. Par contre le lien vers la résolution citée l’est.

Le nombre d’installations du paquet usrmerge est très faible et ne me semble pas très pertinent puisque l’installateur Debian (en fait debootstrap) applique par défaut la fusion d’/usr depuis buster sans installer ce paquet.

Il fait l’impasse totale sur les problèmes que cause la fusion d’/usr à dpkg.

Cette page ne reflète que la position du mainteneur de dpkg, qui est en désaccord avec la fusion d’/usr telle qu’elle a été définie par le comité technique et mise en oeuvre par le paquet usrmerge et l’installateur depuis buster. Un avis du comité technique précise ce qui est ou n’est pas considéré comme la fusion d’/usr :

  • Moving individual files is not merged-/usr.
  • « Symlink farms » are not merged-/usr.

Un message a été scindé en un nouveau sujet : Question à propos de usrmerge

Pour information, une déclaration de bogue a été faite :

C’est un doublon puisque j’avais déjà envoyé un rapport de bug un jour avant.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010951
Je pense que je vais laisser les mainteneurs les fusionner…