This bug is marked "Fix Released" but the fix is incomplete. The .zst
handling was added only to the add_firmware() function and was never
extended to the module inclusion code path.

Confirmed on Linux Mint 22.3 (Ubuntu Noble/24.04 base), kernel
6.17.0-29-generic, nvidia-dkms-580 (580.159.03):

$ grep -A 10 -B 10 "zst" /usr/share/initramfs-tools/hook-functions
# Returns an error if no such firmware file can be located and DESTDIR doesn't
# already contain any matching file. (It is up to the caller to figure out
# whether a warning should be printed in that case.)
add_firmware()
{
        local ext firmware found_fwloc fwloc path

        firmware="${1}"

        for path in "updates/${version?}" "updates" "${version}" ""; do
                for ext in ".xz" ".zst" ""; do
                        fwloc="/lib/firmware${path:+/}${path}/${firmware}${ext}"
                        if [ -e "${DESTDIR}${fwloc}" ]; then
                                # DESTDIR already contains a matching firmware 
file.
                                return 0
                        fi
                        if [ -z "${found_fwloc}" ] && [ -e "${fwloc}" ]; then
                                found_fwloc="$fwloc"
                        fi
                done
        done

The .zst extension check exists only within add_firmware(), which
searches /lib/firmware/ paths. There is no corresponding .zst handling
in the module inclusion code path.

The result: DKMS installs modules as .ko.zst (following
CONFIG_MODULE_COMPRESS_ZSTD from the kernel config), but initramfs-tools
module inclusion does not find them. DKMS-managed modules are absent
from the initramfs. This has been confirmed across every kernel from
6.8.0-50-generic through 6.17.0-29-generic, with one exception
(6.11.0-26-generic, which briefly installed uncompressed .ko files).

The workaround is to manually decompress the .ko.zst files and rebuild
the initramfs after each kernel upgrade. This is documented in Launchpad
bug #2154307.

The fix needs to extend .zst awareness to the module inclusion path in
hook-functions, parallel to what was done for add_firmware().

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1932329

Title:
  Support compressed kernel modules in initramfs-tools and kernel

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1932329/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to