четверг

[Bug 2154307] Re: framebuffer-nvidia initramfs hook skips compressed (.ko.zst) DKMS modules

** Summary changed: - DKMS modules installed as .ko.zst; are not included in initramfs + framebuffer-nvidia initramfs hook skips compressed (.ko.zst) DKMS modules -- You received this bug notification because you are subscribed to linux in Ubuntu. Matching subscriptions: Bgg, Bmail, Nb https://bugs.launchpad.net/bugs/2154307 Title: framebuffer-nvidia initramfs hook skips compressed (.ko.zst) DKMS modules Status in initramfs-tools package in Ubuntu: Confirmed Status in linux package in Ubuntu: Incomplete Status in nvidia-graphics-drivers-595 package in Ubuntu: Confirmed Bug description: DKMS-built NVIDIA modules installed as .ko.zst are not included in the initramfs, so the driver is unavailable at early boot (e.g., wrong- resolution splash; early Vulkan apps may fall back to llvmpipe -- Zed does). Driver still loads later from the root filesystem. CAUSE: the framebuffer-nvidia initramfs hook (nvidia-kernel- common-<branch>) only matches "*.ko" (comment #7). initramfs-tools itself handles .ko.zst correctly. DKMS compresses its output when the kernel's modules.dep already lists .zst modules (comment #11). AFFECTED: nvidia-kernel-common-580 and -595 (identical hook). SUGGESTED FIX (/usr/share/initramfs-tools/hooks/framebuffer-nvidia): - for kmod in $(find "${MODULESDIR}/${dir}" ${exclude:-} -name "$pattern*.ko" -print); do - manual_add_modules $(basename ${kmod} .ko) + for kmod in $(find "${MODULESDIR}/${dir}" ${exclude:-} -name "$pattern*.ko*" -print); do + kmod="${kmod##*/}" + manual_add_modules "${kmod%%.ko*}" WORKAROUND: unzstd the .ko.zst files in /usr/lib/modules/<kernel>/updates/dkms/ and /var/lib/dkms/nvidia/<ver>/<kernel>/x86_64/module/, then depmod and update-initramfs. --- Original description (2026-05-27) --- 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) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2154307/+subscriptions

Комментариев нет:

Отправить комментарий