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.
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.
Sur le forum de Devuan, c’est une des réponses, en effet de l’administrateur
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.
Voir, par exemple :
Je ne pense pas que le wiki soit une source officielle. Par contre le lien vers la résolution citée l’est.
ou la page popcorn
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.
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.
Il fait l’impasse totale sur les problèmes que cause la fusion d’/usr à dpkg.
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 .
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.
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…