Public bug reported:

DKMS-built kernel modules are installed as .ko.zst (zstd-compressed)
rather than uncompressed .ko files. The initramfs-tools module inclusion
code does not handle .ko.zst files — it finds and includes only
uncompressed .ko files. As a result, DKMS-managed modules are absent
from the initramfs, and drivers depending on them fail to load at early
boot.

The current workaround are manual steps to run unzstd --rm on the
modules, depmod -a, and update-initramfs to include them.

Affected kernels (confirmed on this system):
  6.8.0-50-generic: broken (first occurrence)
  6.11.0-24-generic: broken
  6.11.0-25-generic: broken
  6.11.0-26-generic: working (uncompressed .ko files present after upgrade)
  6.11.0-28-generic: broken (regression)
  All subsequent kernels through 6.17.0-29-generic: broken

Cause:
July 2023, a patch series by Dimitri John Ledkov was applied to Ubuntu's kernel 
packaging to enable zstd-compressed modules:  
https://lists.ubuntu.com/archives/kernel-team/2023-July/141412.html

The patch series description makes clear the intent was for DKMS-built
modules to remain uncompressed.  It explicitly states: "the makefile is
patched to not attempt installing random modules compressed — this is to
ensure that any dkms / lrm / modules builds."

However, in practice, DKMS reads CONFIG_MODULE_COMPRESS_ZSTD from the
kernel configuration and compresses its output accordingly, regardless
of that intent. The result is that DKMS modules are installed as .ko.zst
rather than as .ko.

Investigation shows initramfs-tools does have .zst handling, but only in
the add_firmware() function (searching /lib/firmware/ paths). There is
no corresponding .zst handling in the module inclusion code path.
Confirmed by: $ grep -A 10 -B 10 "zst" /usr/share/initramfs-tools/hook-
functions

This leaves a conflict between the actions of the components:
- Ubuntu kernel packaging compresses modules and intends to exclude DKMS — but 
does not fully achieve that exclusion
- DKMS follows CONFIG_MODULE_COMPRESS_ZSTD from the kernel config and 
compresses its output
- initramfs-tools has no .zst handling in its module inclusion path, only in 
its firmware path

Environment:
  Distribution: Linux Mint 22.3 (Ubuntu Noble/24.04 base)
  Kernel: Affects 6.8.0-50-generic and all subsequent kernels tested through 
6.17.0-29-generic, with one exception noted above
  GPU: NVIDIA GeForce GTX 1660 Super
  NVIDIA driver: 580.159.03 (nvidia-dkms-580)

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

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

Title:
  DKMS modules installed as .ko.zst; are not included in initramfs

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2154307/+subscriptions


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

Reply via email to