| Summary: | После установки nvidia_glx_common на хостах с GPU Volta и старше user-space остаётся от 595.71.05, тогда как kernel-модуль автоматически понижается до 580.142 — система остаётся в состоянии Driver/library version mismatch, libnvidia-ml неработоспособна. | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | pshkourin | ||||
| Component: | nvidia_glx_595.71.05 | Assignee: | Sergey V Turchin <zerg> | ||||
| Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | glinkinvd, zerg | ||||
| Version: | unstable | ||||||
| Hardware: | x86 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
> После переключения 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
Удалите libnvidia-ml и всё, что выдаст apt-cache list-unreleased Пакет libnvidia-ml я сделаю пыстым, просто были препятствия со стороны других пакетов. > пыстым
пустым
На вссякий сделал https://packages.altlinux.org/ru/tasks/419440/ (Ответ для Sergey V Turchin на комментарий #4) > На вссякий сделал https://packages.altlinux.org/ru/tasks/419440/ А `/usr/lib64/libnvidia-ml.so -> libnvidianull.so` нужен в таком случае? (Ответ для Vladislav Glinkin на комментарий #5) > А `/usr/lib64/libnvidia-ml.so -> libnvidianull.so` нужен в таком случае? Жду, когда мантейнер resources уберёт зависимость на него #59069 |
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 — в текущем виде она присутствует, но не «доезжает» до активного состояния при штатной установке.