Package: initramfs-tools-core
Version: 0.142
Severity: normal
Tags: patch

With a root filesystem on ZFS then mkinitramfs builds an initrd that
lacks fsck.zfs:

        testaroli# mkinitramfs -o /boot/initrd.img-$(uname -r)
        W: Couldn't identify type of root file system for fsck hook
        testaroli# zstdcat /boot/initrd.img-$(uname -r) | cpio -itv | grep fsck
        381518 blocks
        testaroli# 

I'm sure this patch will break more than it fixes, but at least it
worked for me and writing it here may help others in the short-term:

I edited /usr/share/initramfs-tools/hooks/fsck, located the code block:

        ...
        if [ "${MNT_DIR}" = "/" ] || [ "${MNT_TYPE}" = "auto" ]; then
            MNT_FSNAME="$(resolve_device "${MNT_FSNAME}")"
            fstype() { "/usr/lib/klibc/bin/fstype" "$@"; }
            if ! get_fstype "${MNT_FSNAME}"; then
                echo "W: Couldn't identify type of $2 file system for fsck 
hook" >&2
            fi
            unset -f fstype
        else
            ...

and replaced it with:

        ...
        if [ "${MNT_DIR}" = "/" ] || [ "${MNT_TYPE}" = "auto" ]; then
            mount | sed -rn "s@.* on $MNT_DIR type ([^ ]+) \\(.*@\\1@p"
        else
            ...

(I.e. the body of the 'then' clause is replaced.)

After which rerunning the above test produced:

        testaroli# mkinitramfs -o /boot/initrd.img-$(uname -r)
        testaroli# zstdcat /boot/initrd.img-$(uname -r) | cpio -itv | grep fsck
        -rwxr-xr-x   1 root     root        55664 Feb 13 03:48 usr/sbin/fsck
        -rwxr-xr-x   1 root     root          762 Feb 25 23:32 usr/sbin/fsck.zfs
        381657 blocks
        testaroli# 

This might actually be *two* bugs in
two different packages (initramfs-tools-core because
/usr/share/initramfs-tools/hooks/fsck produces an ugly warning when
root filesysem is on ZFS; zfs-initramfs because it doesn't drop a
hook into /usr/share/initramfs-tools/hooks to get fsck.zfs included)
but certainly you know what is most appropriate better than I do.

-- System Information:
Debian Release: bookworm/sid
  APT prefers testing-security
  APT policy: (500, 'testing-security'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-6-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages initramfs-tools-core depends on:
ii  coreutils    9.1-1
ii  cpio         2.13+dfsg-7.1
ii  e2fsprogs    1.46.6-1
ii  klibc-utils  2.0.12-1
ii  kmod         30+20221128-1
ii  logsave      1.46.6-1
ii  udev         252.6-1

Versions of packages initramfs-tools-core recommends:
ii  busybox  1:1.35.0-4+b2
ii  zstd     1.5.4+dfsg2-3

Versions of packages initramfs-tools-core suggests:
pn  bash-completion  <none>

-- no debconf information

Reply via email to