Bug 59352 - После установки nvidia_glx_common на хостах с GPU Volta и старше user-space остаётся от 595.71.05, тогда как kernel-модуль автоматически понижается до 580.142 — система остаётся в состоянии Driver/library version mismatch, libnvidia-ml неработоспособна.
Summary: После установки nvidia_glx_common на хостах с GPU Volta и старше user-space о...
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: nvidia_glx_595.71.05 (show other bugs)
Version: unstable
Hardware: x86 Linux
: P5 normal
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-05-28 02:26 MSK by pshkourin
Modified: 2026-05-28 16:39 MSK (History)
2 users (show)

See Also:


Attachments
some logs (3.06 KB, text/plain)
2026-05-28 02:26 MSK, pshkourin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description pshkourin 2026-05-28 02:26:32 MSK
Created attachment 21560 [details]
some logs

На свежей установке ALT p11 JeOS (alt-p11-jeos-systemd-x86_64, релиз от 20260312, ядро 6.12) при штатной установке стека NVIDIA через apt-get install nvidia_glx_common (либо epm play switch-to-nvidia) скрипты пост-установки устанавливают пакет-обёртку kernel-modules-nvidia-6.12-595.71.05 (открытый модуль 595.71.05), затем детектируют несовместимое железо (Tesla V100, Volta, SM 7.0 — открытыми модулями NVIDIA не поддерживается, требуется closed-вариант и драйвер ветки не выше 580.x) и выполняют переключение модуля ядра:
nvidia: switching kernel module from 595.71.05 to 580.142
nvidia: switching kernel module from open to closed
Однако симметричного переключения user-space-библиотек на ветку 580.142 не происходит. В системе одновременно оказываются установлены nvidia_glx_595.71.05, nvidia_glx_580.142, nvidia_glx_470.256.02, nvidia_glx_390.157, но активным остаётся 595.71.05. В результате:

nvidia-smi показывает рассогласование: NVIDIA-SMI 595.71.05, Driver Version: 580.142;
libnvidia-ml.so (от 595) не может инициализироваться против kernel-модуля 580 — NVML: Driver/library version mismatch, nvsandboxutils возвращает result=11;
nvidia-ctk cdi generate падает с failed to initialize NVML: Driver/library version mismatch, /etc/cdi/nvidia.yaml не создаётся, podman не видит ни одного GPU-устройства через CDI;
любые рабочие нагрузки CUDA на хосте и в контейнерах нерабочие.

Попытки вручную привести user-space к 580.142 успеха не дали: пакет nvidia_glx_580.142 присутствует в репозитории и устанавливается, но активная ветка (через alternatives / nvidia-current) при любом штатном пути сваливается обратно на 595.71.05. Деинсталляция всех nvidia_glx_* с последующим повторным epm play switch-to-nvidia приводит ровно к тому же конечному состоянию.
Фактически, после dist-upgrade или свежей установки на любой Volta-карте (и более старых — Pascal, Maxwell, Kepler, по которым тоже отсутствует поддержка в 595.x) хост остаётся без рабочего GPU-стека. С учётом того, что ALT позиционируется как дистрибутив с широкой поддержкой устаревшего и специфичного железа, проблема видится регрессией, требующей внимания.

Steps to Reproduce:

Установить ALT p11 JeOS (alt-p11-jeos-systemd-x86_64, релиз 20260312) на хост с GPU NVIDIA Tesla V100 (или иной картой архитектуры Volta/Pascal/Maxwell/Kepler).
После первого входа:

   apt-get update
   apt-get dist-upgrade -y
   update-kernel -t std-def
   apt-get install -y kernel-headers-modules-std-def
   reboot

Установить NVIDIA-стек штатным путём:

   epm play switch-to-nvidia
(поведение идентично при apt-get install nvidia_glx_common && nvidia-install-driver).
4. Дождаться завершения post-install скриптов; в логе наблюдать переключение модуля ядра с 595.71.05/open на 580.142/closed.
5. Перезагрузиться.
6. Выполнить:
   nvidia-smi
   nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
   nvidia-ctk cdi list

Actual Results:
nvidia-smi:
NVIDIA-SMI 595.71.05              Driver Version: 580.142        CUDA Version: 13.0
...
Tesla V100-SXM2-32GB
(версия SMI и драйвера разные — рассогласование user-space и kernel-space).
nvidia-ctk cdi generate:
INFO[0000] Using /usr/lib64/libnvidia-ml.so.595.71.05
INFO[0000] Using /etc/libnvidiacurrent/libnvidia-sandboxutils.so.580.142
ERROR: driverInitFileInfo 578 result=11
ERROR: init 664 result=11
ERROR: init 250 result=11
WARN[0000] Failed to init nvsandboxutils: unknown return value: 11; ignoring
WARN[0000] Could not determine driver version: libnvsandboxutils is not available
failed to initialize nvml: Driver/library version mismatch
INFO[0000] Auto-detected mode as 'nvml'
ERRO[0000] failed to generate CDI spec: failed to create device CDI specs: failed to construct device spec generators: failed to initialize NVML: Driver/library version mismatch
nvidia-ctk cdi list:
INFO[0000] Found 0 CDI devices
Лог установки (фрагмент):
50: i586-nvidia_glx_470.256.02-470.256.0##### [ 93%]
51: kernel-modules-nvidia-6.12-595.71.05##### [ 94%]
nvidia: switching kernel module from 595.71.05 to 580.142
nvidia: switching kernel module from open to closed
52: i586-nvidia_glx_580.142-580.142-alt3##### [ 96%]
53: i586-nvidia_glx_595.71.05-595.71.05-##### [ 98%]
54: i586-nvidia_glx_390.157-390.157-alt3##### [100%]
GPU compute на хосте недоступен; CDI-проброс в podman/llama.cpp недоступен как следствие.

Expected Results:
После переключения kernel-модуля на ветку 580.142 скрипт пост-установки должен также переключить активную ветку user-space-библиотек (libnvidia-ml, libnvidia-sandboxutils, libcuda и пр.) на соответствующую — 580.142, и пересобрать alternatives/симлинки в /etc/libnvidiacurrent/. После завершения установки:

nvidia-smi показывает совпадающие версии NVIDIA-SMI и Driver Version;
NVML инициализируется без ошибок;
nvidia-ctk cdi generate штатно создаёт /etc/cdi/nvidia.yaml;
nvidia-ctk cdi list показывает доступные GPU;
контейнеризация GPU в podman через --device nvidia.com/gpu=all работает.


Additional Information / Дополнительно:
Воспроизводится строго детерминированно на любом GPU, не поддерживаемом веткой 595.x (Volta и старше). Проблема, по сути, в том, что логика переключения kernel-module под несовместимое железо реализована, а симметричной логики переключения user-space-ветки и alternatives — нет.
Прошу при возможности рассмотреть один из вариантов:

Доработать %post скрипты nvidia_glx_common / kernel-modules-nvidia-6.12-595.71.05 так, чтобы при switching kernel module from X to Y синхронно переключалась активная user-space-ветка на Y и обновлялись соответствующие alternatives.
Либо на этапе выбора пакета на установку детектировать GPU заранее (по PCI ID / cc cap) и сразу ставить совместимую ветку драйвера, не проходя через установку 595.x с последующим откатом.
Сохранить в репозитории и поддерживать ветку 580.x для пользователей карт Volta/Pascal/Maxwell/Kepler — в текущем виде она присутствует, но не «доезжает» до активного состояния при штатной установке.
Comment 1 Vladislav Glinkin 2026-05-28 11:10:50 MSK
> После переключения kernel-модуля на ветку 580.142 скрипт пост-установки должен также 
> переключить активную ветку user-space-библиотек (libnvidia-ml, libnvidia-sandboxutils, 
> libcuda и пр.) на соответствующую — 580.142, и пересобрать alternatives/симлинки в /etc/
> libnvidiacurrent/.

Это реализовано. Схема сборки nvidia изменилась - теперь все необходимые разделяемые библиотеки идут "в комплекте" с драйвером.
```
[root@labelwhim ~]# ls -l /etc/libnvidiacurrent
lrwxrwxrwx 1 root root 26 мая 28 10:49 /etc/libnvidiacurrent -> /usr/lib64/nvidia_580.142/
```
Проблема в том, что в репозитории остались остатки по типу бинарных libnvidia-ml которые собираются из nvidia_glx_libs_595.71.05:
```
[root@labelwhim ~]# rpm -ql libnvidia-ml 
/usr/lib64/libnvidia-ml.so
/usr/lib64/libnvidia-ml.so.1
/usr/lib64/libnvidia-ml.so.595.71.05
[root@labelwhim ~]# ls -l /usr/lib64/libnvidia-ml.so*
lrwxrwxrwx 1 root root      16 мая 12 18:19 /usr/lib64/libnvidia-ml.so -> libnvidianull.so
lrwxrwxrwx 1 root root      25 мая 12 18:19 /usr/lib64/libnvidia-ml.so.1 -> libnvidia-ml.so.595.71.05
-rw-r--r-- 1 root root 2621336 мая 12 18:19 /usr/lib64/libnvidia-ml.so.595.71.05
[root@labelwhim ~]# ldconfig -p | grep libnvidia-ml
        libnvidia-ml.so.1 (libc6,x86-64) => /etc/libnvidiacurrent/libnvidia-ml.so.1
        libnvidia-ml.so.1 (libc6,x86-64) => /lib64/libnvidia-ml.so.1
        libnvidia-ml.so.1 (libc6) => /etc/libnvidia32current/libnvidia-ml.so.1
        libnvidia-ml.so (libc6,x86-64) => /etc/libnvidiacurrent/libnvidia-ml.so
        libnvidia-ml.so (libc6,x86-64) => /lib64/libnvidia-ml.so
        libnvidia-ml.so (libc6) => /etc/libnvidia32current/libnvidia-ml.so
[root@labelwhim ~]# apt-cache whatdepends libnvidia-ml
libnvidia-ml-595.71.05-alt1:p11+415909.320.18.1@1779710523
  i586-libnvidia-ml.32bit-595.71.05-alt1:p11+415909.320.18.1@1779715057
    Depends: libnvidia-ml = 595.71.05-alt1:p11+415909.320.18.1
  nvtop-3.3.2-alt2:p11+409808.200.3.1@1773310056
    Depends: libnvidia-ml
  nvidia-container-toolkit-base-1.18.2-alt1:p11+417897.1400.9.1@1779805475
    Depends: libnvidia-ml
  resources-1.7.1-alt1.1:p11+372203.31200.14.2@1739295564
    Depends: </usr/lib64/libnvidia-ml.so>
      libnvidia-ml-595.71.05-alt1:p11+415909.320.18.1@1779710523
```

Как временное решение, вы можете сделать:
# mv /usr/lib64/libnvidia-ml.so* ~/
# ldconfig
Comment 2 Sergey V Turchin 2026-05-28 14:53:58 MSK
Удалите libnvidia-ml и всё, что выдаст
apt-cache list-unreleased

Пакет libnvidia-ml я сделаю пыстым, просто были препятствия со стороны других пакетов.
Comment 3 Sergey V Turchin 2026-05-28 14:54:27 MSK
> пыстым
пустым
Comment 4 Sergey V Turchin 2026-05-28 15:15:04 MSK
На вссякий сделал https://packages.altlinux.org/ru/tasks/419440/
Comment 5 Vladislav Glinkin 2026-05-28 15:30:03 MSK
(Ответ для Sergey V Turchin на комментарий #4)
> На вссякий сделал https://packages.altlinux.org/ru/tasks/419440/

А `/usr/lib64/libnvidia-ml.so -> libnvidianull.so` нужен в таком случае?
Comment 6 Sergey V Turchin 2026-05-28 16:39:27 MSK
(Ответ для Vladislav Glinkin на комментарий #5)
> А `/usr/lib64/libnvidia-ml.so -> libnvidianull.so` нужен в таком случае?
Жду, когда мантейнер resources уберёт зависимость на него #59069