Discussion:
Где NVIDIA прячет свои модули или как же мне проапгрейдить драйвер?
(слишком старое сообщение для ответа)
Zhenja Kaliuta
2021-12-24 17:54:58 UTC
Permalink
Hi, Rinat!

On Fri, 24 Dec 2021 09:56:42 +0300 Rinat H. Sadretdinow writes:

RHS> Hello All!
RHS> У меня сейчас установлен драйвер NVIDIA вот такой версии:

У меня нет ни nvidia, ни dkms сейчас, поэтому попробую погадать.

RHS> ~~~
RHS> [***@sys3175 ~]$ nvidia-installer -v

RHS> nvidia-installer: version 470.82.00
RHS> The NVIDIA Software Installer for Unix/Linux.

RHS> This program is used to install, upgrade and uninstall The NVIDIA
RHS> Accelerated Graphics Driver Set for Linux-x86_64.

RHS> [***@sys3175 ~]$
RHS> ~~~

RHS> Захотел я его проапгрейдить. Hу сходил на сайт:

RHS> https://www.nvidia.ru/Download/index.aspx?lang=ru

RHS> и скачал там:

RHS> NVIDIA-Linux-x86_64-470.94.run

RHS> Запустил его из-под root, он мне сказал что "Обнаружен 470.82, он
RHS> будет предварительно удалён, а после я тебе 470.94 установлю". Я
RHS> согласился. Он попыхтел, сказал что 470.82 удалён, а 470.94
RHS> установлен. Перезагружаюсь -- не входит в X вообще. Лезу в
RHS> /var/log/messages. А там:

RHS> ~~~
RHS> Dec 24 12:09:14 sys3175 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel
RHS> Module 470.82.00 Thu Oct 14 10:24:40 UTC 2021
RHS> Dec 24 12:09:14 sys3175 kernel: nvidia-modeset: Loading NVIDIA Kernel
RHS> Mode Setting Driver for UNIX platforms 470.82.00 Thu Oct 14 10:17:58 UTC
RHS> 2021
RHS> ~~~

RHS> Hу и после этого:

RHS> ~~~
RHS> Dec 24 09:10:27 sys3175 kernel: NVRM: API mismatch: the client has the
RHS> version 470.94, but#012NVRM: this kernel module has the version
RHS> 470.82.00. Please#012NVRM: make sure that this kernel module and all
RHS> NVIDIA driver#012NVRM: components have the same version.
RHS> Dec 24 09:10:27 sys3175 kernel: NVRM: API mismatch: the client has the
RHS> version 470.94, but#012NVRM: this kernel module has the version
RHS> 470.82.00. Please#012NVRM: make sure that this kernel module and all
RHS> NVIDIA driver#012NVRM: components have the same version.
RHS> Dec 24 09:10:27 sys3175 kernel: NVRM: API mismatch: the client has the
RHS> version 470.94, but#012NVRM: this kernel module has the version
RHS> 470.82.00. Please#012NVRM: make sure that this kernel module and all
RHS> NVIDIA driver#012NVRM: components have the same version.
RHS> Dec 24 09:10:27 sys3175 kernel: NVRM: API mismatch: the client has the
RHS> version 470.94, but#012NVRM: this kernel module has the version
RHS> 470.82.00. Please#012NVRM: make sure that this kernel module and all
RHS> NVIDIA driver#012NVRM: components have the same version.
RHS> ~~~

RHS> со всеми вытекающими. Причём dkms говорит что у меня отныне 470.94:

RHS> ~~~
RHS> [***@sys3175 ~]$ dkms status
RHS> nvidia/470.94, 5.15.10-200.fc35.x86_64, x86_64: installed
RHS> [***@sys3175 ~]$
RHS> ~~~

RHS> но ведро считает что у меня до сих пор 470.82.00:

RHS> ~~~
RHS> [***@sys3175 ~]# lsinitrd | grep extra/nvidia
RHS> -rw-r--r-- 1 root root 24028 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
RHS> -rw-r--r-- 1 root root 23809056 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
RHS> -rw-r--r-- 1 root root 515404 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
RHS> [***@sys3175 ~]#
RHS> ~~~

судя по man, lsinitrd -- часть dracut (initrd инфраструктура) и должен
по-умолчанию брать initramfs для текущего ядра.

Если dkms не обновил initrd (лень смотреть его скрипты) и модули грузятся
оттуда, то логично, хоть и странно (что не обновил). dracut --force должен
перегенерировать. А depmod -v | grep nvidia что показывает?


RHS> Так и есть, модули старые, 28 октября, от 470.82.

RHS> Изучаю /boot/initramfs$(uname -r).img, там кроме
RHS> microcode/GenuineIntel.bin больше нифига ничего нет.

Звучит странно.


RHS> Откатился пока что обратно на 470.82 чтобы была возможность загрузить
RHS> GoldEd и тут поспрашивать. В принципе мне ничуть не критичны драйвера
RHS> 470.94, я и на 470.82 прекрасно живу, но тут у меня уже принцип полез
RHS> -- какого хрена ведро считает себя умнее меня?

RHS> Посему вопрос (вопросы):

RHS> 1) где, чёрт возьми, хранится инфа о том, что ведро хочет 470.82, хотя
RHS> уже установлено 470.94?

У тебя установлены библиотеки и драйвер X новые, но ядерный модуль старый.

RHS> 2) откуда lsinitrd эту инфу берёт? (можно конечно на его исходники
RHS> глянуть и узнать откуда оно инфу цепляет, но не хотелось бы сразу же
RHS> нырять в такие дебри).

Можно в man глянуть.

RHS> 3) как сказать ведру чтобы оно забыло про 470.82 насовсем и стало юзать
RHS> 470.94?

RHS> И гуглил, и FAQ'и всякие читал, но нифига ответ так и не нашёл. Что
RHS> называется "и унитаз свой приносил, и задницу показывал, но не продают
RHS> мне нужную туалетную бумагу!"

RHS> Bye!
Rinat H. Sadretdinow
2021-12-25 03:04:18 UTC
Permalink
Hello Zhenja!

24 Dec 21 20:54, you wrote to me:

[...]

ZK> судя по man, lsinitrd -- часть dracut (initrd инфраструктура) и
ZK> должен по-умолчанию брать initramfs для текущего ядра.

Да, man я читал, так оно и есть.

ZK> Если dkms не обновил initrd (лень смотреть его скрипты) и модули
ZK> грузятся оттуда, то логично, хоть и странно (что не обновил). dracut
ZK> --force должен перегенерировать.

Это я пока не пробовал, честно признаюсь. Вдруг перестанет грузиться вообще?
Безусловно с этим (с возможной не загрузкой) я разберусь, не вчера с компами и
не совсем тупой, просто не хотелось бы тратить на это время ежели такое
произойдёт, хотелось обойтись малой кровью.

ZK> А depmod -v | grep nvidia что показывает?

Сейчас у меня [временно] 470.82, но на безуспешно установленном 470.94 он
показывает то же самое, уж поверь.

Ядро вот такое:

~~~
[***@sys3175 ~]$ uname -r
5.15.10-200.fc35.x86_64
[***@sys3175 ~]$
~~~

depmod -v | grep nvidia показывает так:

~~~
[***@sys3175 ~]$ sudo depmod -v | grep nvidia
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "__typec_altmode_register_driver":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/typec.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "dp_altmode_remove":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_displayport.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz needs
"nvidia_register_module":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"drm_framebuffer_cleanup":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"drm_kms_helper_poll_fini":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm_kms_helper.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"nvKmsKapiGetFunctionsTable":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-uvm.ko.xz needs
"nvUvmInterfaceDisableAccessCntr":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz needs
"drm_gem_object_free":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm.ko.xz
[***@sys3175 ~]$
~~~

Это для текущего 470.82.

RHS>> Так и есть, модули старые, 28 октября, от 470.82.

RHS>> Изучаю /boot/initramfs$(uname -r).img, там кроме
RHS>> microcode/GenuineIntel.bin больше нифига ничего нет.

ZK> Звучит странно.

Я не вру. Кроме микрокода в initramfs больше нет ничего:

~~~
[***@sys3175 ~]$ sudo file /boot/initramfs-$(uname -r).img
/boot/initramfs-5.15.10-200.fc35.x86_64.img: ASCII cpio archive (SVR4 with no
CRC)
[***@sys3175 ~]$ sudo cat /boot/initramfs-$(uname -r).img | cpio --list
.
early_cpio
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
30 blocks
[***@sys3175 ~]$
~~~

RHS>> 1) где, чёрт возьми, хранится инфа о том, что ведро хочет
RHS>> 470.82, хотя уже установлено 470.94?

ZK> У тебя установлены библиотеки и драйвер X новые, но ядерный модуль
ZK> старый.

Вот! В initrd почему-то именно *старые* драйвера/модули:

~~~
[***@sys3175 ~]$ sudo lsinitrd | grep -i extra/nvidia
-rw-r--r-- 1 root root 24028 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
[***@sys3175 ~]$
~~~

Обрати внимание на дату модулей из вывода lsinitrd, они все 28 октября (я в то
время как раз Fedora 35 себе заапгрейдил через dnf с Fedora 34 чтобы не делать
"pere install", так что эти модули от 470.82 остались ещё с Fedora 34, там с
ними было всё нормально, я просто время от времени апгрейдил драйвера nvidia и
подобных проблем не возникало никогда (я апгрыжусь с версии на версию Fedora
через dnf ещё со времён Fedora 32, то есть года два уже, "pure install" с тех
пор ни разу не делал).

А фактически в usr/lib/modules/5.15.10-200.fc35.x86_64/extra/ лежат модули за
вчерашнее число, за 24 декабря уже:

~~~
[***@sys3175 ~]$ ls -l /lib/modules/$(uname -r)/extra
total 24120
-rw-r--r-- 1 root root 24028 Dec 24 09:16 nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Dec 24 09:16 nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Dec 24 09:16 nvidia-modeset.ko.xz
-rw-r--r-- 1 root root 1008 Dec 24 09:16 nvidia-peermem.ko.xz
-rw-r--r-- 1 root root 342612 Dec 24 09:16 nvidia-uvm.ko.xz
[***@sys3175 ~]$
~~~

Сейчас у меня, повторюсь, 470.82, поэтому и модули из lsinitrd, и модули из
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/ совпадают по API версии NVRM и
всё пучком, все довольны. Hо стОит мне установить 470.94, как в
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/ образуются модули 470.94
(инсталлятор в процессе установки их компилит под текущее ведро и туда
копирует), а в выводе lsinitrd остаются старые, от 470.82, за 28 октября, и
ведро начинает орать что "Я хочу 470.82, а в
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/ лежат 470.94, непорядок, не буду
их грузить!". Явно что initrd не обновляется. Hо вот почему?

RHS>> 2) откуда lsinitrd эту инфу берёт? (можно конечно на его исходники
RHS>> глянуть и узнать откуда оно инфу цепляет, но не хотелось бы сразу же
RHS>> нырять в такие дебри).

ZK> Можно в man глянуть.

Там я ничего не увидел. Может плохо смотрел?

Похоже придётся всё же смотреть на исходники lsinitrd чтобы узнать где же и как
же и почему же упорно берутся старые модули для ведра при наличии новых. Если
внутри initramfs про них ни слова нет.

RHS>> 3) как сказать ведру чтобы оно забыло про 470.82 насовсем и
RHS>> стало юзать 470.94?

Я бы руками сам изменил initramfs, добавил бы в него (заменил бы в нём) модули
470.82 на 470.94, но см. выше, в initramfs кроме микрокода ничего нет.

Откуда lsinitrd берёт инфу что модули 470.82? Я бы прям там поменял. Если бы
знал откуда эта конфигурация берётся.

[offtopic ON]

В декабре прошлого года я в дранках попросил сеть друзей, FIDO, помочь мне и
дать в долг кто сколько сможет на похороны. Многие откликнулись и ты в том
числе, спасибо великое все откликнувшимся за это. В июле этого года я смог
отдать долги тем, кто не высказал явное желание не получать долг обратно. Отдал
всем, остался ты единственный. С июля я тебе отправлял аж три netmail'а с
периодичностью в месяц каждое с вопросом "Как вернуть долго?", но ни ответа, ни
привета. Или мои netmail'ы до тебя почему-то не доходят, или ты их игнорируешь.
Поэтому, как говориться "пользуясь случаем", раз уж эхи ты точно читаешь и даже
отвечаешь, то вопрошаю тут: "Как вернуть тебе долг?"

[offtopic OFF]

Bye!
Rinat H. Sadretdinow
2021-12-25 03:11:10 UTC
Permalink
Hello Zhenja!

25 Dec 21 06:04, I wrote to you:

ZK>> Если dkms не обновил initrd (лень смотреть его скрипты) и модули
ZK>> грузятся оттуда, то логично, хоть и странно (что не обновил).
ZK>> dracut --force должен перегенерировать.

RS> Это я пока не пробовал, честно признаюсь.

Попробовал. Это не спасло смертельно раненного кота, модули nvidia как были от
28 октября, так и остались такими же, а свежие от 24 декабря нифига не
подключились:

~~~
[***@sys3175 ~]$ sudo dracut --force
[***@sys3175 ~]$ sudo lsinitrd | grep -i extra/nvidia
-rw-r--r-- 1 root root 24028 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
[***@sys3175 ~]$ ls -l /usr/lib/modules/$(uname -r)/extra
total 24120
-rw-r--r-- 1 root root 24028 Dec 24 09:16 nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Dec 24 09:16 nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Dec 24 09:16 nvidia-modeset.ko.xz
-rw-r--r-- 1 root root 1008 Dec 24 09:16 nvidia-peermem.ko.xz
-rw-r--r-- 1 root root 342612 Dec 24 09:16 nvidia-uvm.ko.xz
[***@sys3175 ~]$
~~~

Bye!
Zhenja Kaliuta
2021-12-25 03:07:03 UTC
Permalink
Hi, Rinat!

On Sat, 25 Dec 2021 06:11:10 +0300 Rinat H. Sadretdinow writes:

ZK>>> Если dkms не обновил initrd (лень смотреть его скрипты) и модули
ZK>>> грузятся оттуда, то логично, хоть и странно (что не обновил).
ZK>>> dracut --force должен перегенерировать.

RS>> Это я пока не пробовал, честно признаюсь.

RHS> Попробовал. Это не спасло смертельно раненного кота, модули nvidia как
RHS> были от 28 октября, так и остались такими же, а свежие от 24 декабря
RHS> нифига не подключились:

Как-то очень странно звучит, если новые модули установлены как и раньше и
поверх старых, то при перегенерации старым взяться неоткуда.
Если старые были как-то иначе в другом месте и замещают новые, то старые либо
убрать, либо подконфигурировать приоритеты.

modinfo nvidia что говорит?

dracut --debug --force в крайнем случае расскажет очень подробно в частности
все обрабатываемые модули.

RHS> ~~~
RHS> [***@sys3175 ~]$ sudo dracut --force
RHS> [***@sys3175 ~]$ sudo lsinitrd | grep -i extra/nvidia
RHS> -rw-r--r-- 1 root root 24028 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
RHS> -rw-r--r-- 1 root root 23809056 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
RHS> -rw-r--r-- 1 root root 515404 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
RHS> [***@sys3175 ~]$ ls -l /usr/lib/modules/$(uname -r)/extra
RHS> total 24120
RHS> -rw-r--r-- 1 root root 24028 Dec 24 09:16 nvidia-drm.ko.xz
RHS> -rw-r--r-- 1 root root 23809056 Dec 24 09:16 nvidia.ko.xz
RHS> -rw-r--r-- 1 root root 515404 Dec 24 09:16 nvidia-modeset.ko.xz
RHS> -rw-r--r-- 1 root root 1008 Dec 24 09:16 nvidia-peermem.ko.xz
RHS> -rw-r--r-- 1 root root 342612 Dec 24 09:16 nvidia-uvm.ko.xz
RHS> [***@sys3175 ~]$
RHS> ~~~
Rinat H. Sadretdinow
2021-12-25 05:16:30 UTC
Permalink
Hello Zhenja!

25 Dec 21 06:07, you wrote to me:

RHS>> Попробовал. Это не спасло смертельно раненного кота, модули
RHS>> nvidia как были от 28 октября, так и остались такими же, а
RHS>> свежие от 24 декабря нифига не подключились:

ZK> Как-то очень странно звучит, если новые модули установлены как и
ZK> раньше и поверх старых, то при перегенерации старым взяться неоткуда.

Hу вот откуда-то берутся! В /usr/lib/modules/$(uname -r)/extra лежат новые,
только что собранные, а lsinitrd показывает старые.

ZK> Если старые были как-то иначе в другом месте и замещают новые, то
ZK> старые либо убрать, либо подконфигурировать приоритеты.

Знать бы где они лежат -- убрал бы.

ZK> modinfo nvidia что говорит?

470.94 я пока не пробовал ставить (иначе бы не смог это написать), а так 470.82
само собой.

ZK> dracut --debug --force в крайнем случае расскажет очень подробно в
ZK> частности все обрабатываемые модули.

Ой! Он мне такую портянку выдал, что сходу не я не разобрался, буду вдумчиво
сидеть и рассматривать.

Bye!
Rinat H. Sadretdinow
2021-12-25 06:07:50 UTC
Permalink
Hello Zhenja!

25 Dec 21 08:16, I wrote to you:

[...]

Всё страньше и страньше.

Перегрузился в 'init 3'.

'modinfo nvidia' нормально говорит про текущий 470.82:

~~~
[***@sys3175 ~]$ sudo modinfo nvidia
filename: /lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
firmware: nvidia/470.82.00/gsp.bin
alias: char-major-195-*
version: 470.82.00
supported: external
license: NVIDIA
srcversion: E66753074ED62D36C634AF6
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: drm
retpoline: Y
name: nvidia
vermagic: 5.15.10-200.fc35.x86_64 SMP mod_unload

[...]

[***@sys3175 ~]$
~~~

depmod тоже прекрасно всё видит:

~~~
[***@sys3175 ~]$ sudo depmod -v | grep nvidia
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "__typec_altmode_register_driver":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/typec.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "dp_altmode_remove":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_displayport.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz needs
"nvidia_register_module":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"drm_framebuffer_cleanup":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"drm_kms_helper_poll_fini":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm_kms_helper.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz needs
"nvKmsKapiGetFunctionsTable":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-uvm.ko.xz needs
"nvUvmInterfaceDisableAccessCntr":
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz needs
"drm_gem_object_free":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/gpu/drm/drm.ko.xz
[***@sys3175 ~]$
~~~

lsinitrd показывает всё те же модули от 28 октября, ещё от прежнего 470.82,
вместо новых от 24 декабря, но тоже от 470.82:

~~~
[***@sys3175 ~]$ sudo lsinitrd | grep extra/nvidia
-rw-r--r-- 1 root root 24028 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
[***@sys3175 ~]
~~~

Удаляю драйвер штатным анисталлером:

~~~
[***@sys3175 ~]$ sudo nvidia-uninstall
[***@sys3175 ~]
~~~

Проверяю modinfo, так и есть, никакого nvidia больше нет:

~~~
[***@sys3175 ~]$ sudo modinfo nvidia
modinfo: ERROR: Module nvidia not found.
[***@sys3175 ~]
~~~

Запускаю depmod, он показывает какие-то ядерные огрызки, которые к драйверам
nvidia с их сайта явно не относятся, а все модули nvidia отсутствуют бляго
nvidia-uninstall их прекрасно удалил:

~~~
[***@sys3175 ~]$ sudo depmod -v | grep nvidia

/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "__typec_altmode_register_driver":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/typec.ko.xz
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_nvidia.ko.xz
needs "dp_altmode_remove":
/lib/modules/5.15.10-200.fc35.x86_64/kernel/drivers/usb/typec/altmodes/typec_displayport.ko.xz
[***@sys3175 ~]
~~~

Консультируюсь у lsinitrd... И БАЦ!

~~~
[***@sys3175 ~]$ sudo lsinitrd | grep extra/nvidia
-rw-r--r-- 1 root root 24028 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
-rw-r--r-- 1 root root 23809056 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
-rw-r--r-- 1 root root 515404 Oct 28 22:55
usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
[***@sys3175 ~]
~~~

Вот откуда, *ОТКУДА* он упорно продолжает показывать всё те же самые модули от
28 октября? Откуда он их достаёт? Где они лежат? Если в /boot/initramfs$(uname
-r).img кроме микрокода GenuineIntel.bin нет больше вообще ничего!

Hадо ли говорить что после установки 470.94 ядро опять возопило: "У меня тут
470.82, а мне пихают 470.94, API другой, не буду работать, идите все в пень!"

Откатился опять на 470.82, чьи модули упорно сидят где-то (ГДЕ???) и которые
lsinitrd показывает всегда, даже после команды nvidia-unistall, которая по идее
должна удалить *все* упоминания про nvidia, включая эти. Буду думать дальше.

Bye!
Zhenja Kaliuta
2021-12-25 06:15:32 UTC
Permalink
Hi, Rinat!

On Sat, 25 Dec 2021 09:07:50 +0300 Rinat H. Sadretdinow writes:

[...]

RHS> Консультируюсь у lsinitrd... И БАЦ!

RHS> ~~~
RHS> [***@sys3175 ~]$ sudo lsinitrd | grep extra/nvidia
RHS> -rw-r--r-- 1 root root 24028 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-drm.ko.xz
RHS> -rw-r--r-- 1 root root 23809056 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia.ko.xz
RHS> -rw-r--r-- 1 root root 515404 Oct 28 22:55
RHS> usr/lib/modules/5.15.10-200.fc35.x86_64/extra/nvidia-modeset.ko.xz
RHS> [***@sys3175 ~]
RHS> ~~~

RHS> Вот откуда, *ОТКУДА* он упорно продолжает показывать всё те же самые
RHS> модули от 28 октября? Откуда он их достаёт? Где они лежат? Если в
RHS> /boot/initramfs$(uname -r).img кроме микрокода GenuineIntel.bin нет
RHS> больше вообще ничего!

Нет, он содержит гораздо больше и lsinitrd это показывает. Пример (из гугля) --
https://ahelpme.com/linux/tips/unpack-centos-7-initramfs-file-with-and-without-dracut-skipcpio/

https://www.kernel.org/doc/html/latest/driver-api/early-userspace/buffer-format.html

```In human terms, the initramfs buffer contains a collection of compressed
and/or uncompressed cpio archives (in the "newc" or "crc" formats); arbitrary
amounts zero bytes (for padding) can be added between members.```

RHS> Hадо ли говорить что после установки 470.94 ядро опять возопило: "У меня
RHS> тут 470.82, а мне пихают 470.94, API другой, не буду работать, идите все
RHS> в пень!"

RHS> Откатился опять на 470.82, чьи модули упорно сидят где-то (ГДЕ???) и
RHS> которые lsinitrd показывает всегда, даже после команды
RHS> nvidia-unistall, которая по идее должна удалить *все* упоминания про
RHS> nvidia, включая эти. Буду думать дальше.

Я не был бы так категоричен по поводу должна ли nvidia-uninstall удалять модули
из initramfs.
Rinat H. Sadretdinow
2021-12-25 08:18:42 UTC
Permalink
Hello Zhenja!

25 Dec 21 09:15, you wrote to me:

RHS>> Вот откуда, *ОТКУДА* он упорно продолжает показывать всё те же
RHS>> самые модули от 28 октября? Откуда он их достаёт? Где они лежат?
RHS>> Если в /boot/initramfs$(uname -r).img кроме микрокода
RHS>> GenuineIntel.bin нет больше вообще ничего!

ZK> Hет, он содержит гораздо больше и lsinitrd это показывает. Пример (из
ZK> гугля) --
ZK> https://ahelpme.com/linux/tips/unpack-centos-7-initramfs-file-with-and
ZK> -without-dracut-skipcpio/

Меня сбил с толку вывод `file`:

~~~
[***@sys3175 ~]$ sudo file /boot/initramfs-$(uname -r).img
/boot/initramfs-5.15.10-200.fc35.x86_64.img: ASCII cpio archive (SVR4 with no
CRC)
[***@sys3175 ~]$
~~~

"ASCII cpio archive", и поэтому я использовал для него `cat` пайпом в `cpio` и
он мне показывал только первый архив, в котором кроме микрокода ничего нет. Кто
же знал что за первым там лежит второй. Теперь вот lsinitrd рассмотрел и знаю
(это оказался просто скрипт на bash, так что понять что там к чему не составило
особого труда).

Bye!
Rinat H. Sadretdinow
2021-12-25 08:02:52 UTC
Permalink
Hello All!

Траблема решена.

1) перезагрузка в 'init 3'
2) удаление всей нвидии посредством `nvidia-uninstall`
3) удаление /boot/initramfs-$(uname -r).img
4) создание нового ininramfs посредством `dracut /boot/initramfs-$(uname
-r).img`
4a) получается /boot/initramfs-$(uname -r).img вообще *без* упоминаний про
nvidia
5) установка последних драйверов nvidia 470.94 посредством запуска
`NVIDIA-Linux-x86_64-470.94.run`
6) перезагрузка и всё прекрасно работает, ничто ни с кем более не конфликтует

Версия драйвера как надо, последняя:

~~~
[***@sys3175 ~]$ nvidia-installer -v

nvidia-installer: version 470.94
The NVIDIA Software Installer for Unix/Linux.

This program is used to install, upgrade and uninstall The NVIDIA Accelerated
Graphics Driver Set for Linux-x86_64.

[***@sys3175 ~]$
~~~

В initrd никаких конфликтующих версий нет, вообще nvidia нет:

~~~
[***@sys3175 ~]$ sudo lsinitrd | grep -i extra/nvidia
[***@sys3175 ~]$
~~~

Кто, как и когда мне в initrd *жёстко* внёс драйвера именно версии 470.82,
которые изгадили мне весь мозг за последние полтора дня -- ума не приложу. Hо
это точно был не я сам по собственному желанию. Может быть софт какой
"постарался", а я не заметил, но по собственному желанию я это не делал.

Во всяком случае теперь знаю как с подобным бороться.

Bye!
Alexey Vissarionov
2021-12-27 05:34:34 UTC
Permalink
Доброго времени суток, Rinat!
25 Dec 2021 08:16:30, ты -> Zhenja Kaliuta:

RHS>>> Попробовал. Это не спасло смертельно раненного кота, модули
RHS>>> nvidia как были от 28 октября, так и остались такими же, а
RHS>>> свежие от 24 декабря нифига не подключились:
ZK>> Как-то очень странно звучит, если новые модули установлены как
ZK>> и раньше и поверх старых, то при перегенерации старым взяться
ZK>> неоткуда.
RHS> Hу вот откуда-то берутся! В /usr/lib/modules/$(uname -r)/extra
RHS> лежат новые, только что собранные, а lsinitrd показывает старые.

А ну стоять, Зорька... ты после обновления этот свой initrd пересобирал?

Если уж пользуешься этим атавизмом - хотя бы мануал на него вкури.


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Открытая душа уже сама по себе является поводом насрать в нее
Rinat H. Sadretdinow
2021-12-27 05:52:26 UTC
Permalink
Hello Alexey!

27 Dec 21 08:34, you wrote to me:

RHS>> Hу вот откуда-то берутся! В /usr/lib/modules/$(uname -r)/extra
RHS>> лежат новые, только что собранные, а lsinitrd показывает старые.

AV> А ну стоять, Зорька... ты после обновления этот свой initrd
AV> пересобирал?

Я нет. Hо кто-то видать его пересобрал когда 470.82 были установлены и их туда
*hardcoded* прописал. Hо я это уже вылечил.

AV> Если уж пользуешься этим атавизмом - хотя бы мануал на него вкури.

А что нынче не атавизм? Что вместо initramfs ныне используют новомодные
хипстеры и метросексуалы?

Bye!

Zhenja Kaliuta
2021-12-25 03:11:10 UTC
Permalink
Hi, Rinat!

On Sat, 25 Dec 2021 06:04:18 +0300 Rinat H. Sadretdinow writes:

RHS> Или мои netmail'ы до тебя почему-то не доходят, или ты их игнорируешь.

Не дошли. Ответил в нетмейл, посмотрим.
Loading...