Где NVIDIA прячет свои модули или как же мне проапгрейдить драйвер?
От Rinat H. Sadretdinow (2:5020/620.1) к Zhenja Kaliuta
В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)
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 он показывает то же самое, уж поверь.
Ядро вот такое:
~~~
[rhs@sys3175 ~]$ uname -r
5.15.10-200.fc35.x86_64
[rhs@sys3175 ~]$
~~~
depmod -v | grep nvidia показывает так:
~~~
[rhs@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
[rhs@sys3175 ~]$
~~~
Это для текущего 470.82.
RHS>> Так и есть, модули старые, 28 октября, от 470.82.
RHS>> Изучаю /boot/initramfs$(uname -r).img, там кроме
RHS>> microcode/GenuineIntel.bin больше нифига ничего нет.
ZK> Звучит странно.
Я не вру. Кроме микрокода в initramfs больше нет ничего:
~~~
[rhs@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)
[rhs@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
[rhs@sys3175 ~]$
~~~
RHS>> 1) где, чёрт возьми, хранится инфа о том, что ведро хочет
RHS>> 470.82, хотя уже установлено 470.94?
ZK> У тебя установлены библиотеки и драйвер X новые, но ядерный модуль
ZK> старый.
Вот! В initrd почему-то именно *старые* драйвера/модули:
~~~
[rhs@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
[rhs@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 декабря уже:
~~~
[rhs@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
[rhs@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!
--- GoldED+/LNX 1.1.5-b20180707
* Origin: -= Thunder Bird @ home =- (2:5020/620.1)
Ответы на это письмо:
From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку
From: Username
Или коротким