Рейтинг:3

Драйвер Nvidia сломан при обновлении - невозможно переустановить

флаг in

Я запускаю Ubuntu 20.04, и после последней перезагрузки у меня возникли проблемы с графическим драйвером — система в низком разрешении, работает только один монитор.

Отладочный вывод

$ sudo lshw -C отображение
  *-показать UNCLAIMED       
       описание: VGA-совместимый контроллер
       продукт: TU104 [GeForce RTX 2070 SUPER]
       производитель: корпорация NVIDIA
       физический идентификатор: 0
       информация о шине: pci@0000:31:00.0
       версия: а1
       ширина: 64 бита
       часы: 33 МГц
       возможности: pm msi pciexpress vga_controller cap_list
       конфигурация: задержка=0
       ресурсы: память: f5000000-f5ffffff память: e0000000-effffffff память: f0000000-f1ffffff ioport: f000 (размер = 128) память: f6000000-f607ffff
$ статус sudo dkms
nvidia, 510.47.03: добавлено

Такой статус кажется немного экзотическим, по крайней мере, я не нашел много подобных случаев, когда гуглил.

$ nvidia-smi
Сбой NVIDIA-SMI, поскольку ему не удалось установить связь с драйвером NVIDIA. Убедитесь, что установлена ​​и запущена последняя версия драйвера NVIDIA.
$ модинфо нвидиа
modinfo: ОШИБКА: модуль nvidia не найден.

В системной информации я вижу "llvmpipe (LLVM 12.0.0, 256 бит)" как свою графику.

Что я пробовал

Я пробовал несколько способов установки драйверов Nvidia, я использовал apt sudo apt autoremove --purge nvidia* && sudo apt установить nvidia-driver-510, интерфейс «Дополнительные драйверы» и ubuntu-драйверы, пробовал последнюю на данный момент версию 510 и старую, которая работала до этого - 470. Так же пробовал выбирать nvidia sudo Prime-выберите nvidia а также выбор Intel и переключение обратно на nvidia - тот же результат.

Задний план

Я использовал драйвер Nvidia 470 и ядро ​​5.13.0.26, затем после перезагрузки я получил ядро ​​​​.27 и нет Wi-Fi. Недавно у меня была эта проблема из-за драйвера Nvidia (необходимо установить linux-modules-extra для нового ядра), поэтому я решил обновите драйвера, надеюсь все исправится. Это привело к текущей ситуации: установка Linux-модули-экстра-5.13.0-27-общий а затем после переключения на 510 - то же самое для .28 исправлена ​​​​проблема с Wi-Fi, но видеодрайвер сломан. При использовании 5.13.0.27 я смог загрузить 5.13.0.26, и там у меня было рабочее видео, теперь это не так, потому что .27 является самым старым из последних ядер в меню Grub.

Я чувствую, что мне не хватает какого-то шага, который это исправит, буду признателен за любую помощь.

УПД

sudo dkms установить -m nvidia -v 510.47.03 -k 5.13.0-28-универсальный --force
Ошибка! Заголовки вашего ядра для ядра 5.13.0-28-generic не найдены.
Пожалуйста, установите пакет linux-headers-5.13.0-28-generic,
или используйте параметр --kernelsourcedir, чтобы сообщить DKMS, где он находится.
$ sudo dkms build -m nvidia -v 510.47.03
Ошибка! Заголовки вашего ядра для ядра 5.13.0-28-generic не найдены.
Пожалуйста, установите пакет linux-headers-5.13.0-28-generic,
или используйте параметр --kernelsourcedir, чтобы сообщить DKMS, где он находится.

Похоже, dkms почему-то не знает о моем ядре. Я использовал приведенную выше рекомендацию сообщения об ошибке и установил заголовки sudo apt установить linux-headers-5.13.0-28-generic, после этого вывод выглядит лучше:

sudo dkms build -m nvidia -v 510.47.03
Модуль nvidia/510.47.03 уже собран для ядра 5.13.0-28-generic/4
статус sudo dkms
nvidia, 510.47.03, 5.13.0-28-универсальная, x86_64: установлена

Я попробую перезагрузить компьютер, а затем установить драйвер в соответствии с рекомендациями в комментариях.

UPD2

Вот и все, теперь вроде все работает. С драйверами ничего делать не надо, похоже проблема была с отсутствующими заголовками.

Terrance avatar
флаг id
`sudo dkms install -m nvidia -v 510.47.03 -k 5.13.0-28-generic --force` должен иметь возможность установить драйвер в это ядро.
heynnema avatar
флаг ru
@Terrance Сборка / установка dkms, вероятно, завершилась неудачно во время установки Nvidia 510, потому что включена безопасная загрузка ... или отсутствует библиотека / дополнительные компоненты ядра.
Terrance avatar
флаг id
@heynnema Я думаю, возможно, включена безопасная загрузка. Обычно, когда вы видите, что драйвер dkms показывает «добавлено», это означает, что выполнены 2 из 3 шагов, где выполняются «dkms add» и «dkms build». Просто шаг `dkms install` не был выполнен или завершился неудачей. Или, возможно, сборка dkms тоже не удалась.
Terrance avatar
флаг id
Какой вывод вы получаете, когда запускаете `sudo dkms build -m nvidia -v 510.47.03`?
heynnema avatar
флаг ru
@Terrance Да, я подозреваю, что сборка dkms не удалась, либо из-за того, что была включена безопасная загрузка, либо из-за отсутствия некоторых библиотек. Состояние dkms не показывало предыдущие сборки для более старых ядер, что, вероятно, означало, что OP никогда раньше не устанавливала Nivdia. Мы посмотрим, работает ли ваша команда сборки dkms или нет ошибок. Затем следует установка dkms.
heik avatar
флаг in
@Terrance @heynnema извините, я забыл упомянуть, что проверил безопасную загрузку, она отключена. Но возможно, что некоторые библиотеки отсутствуют - некоторое время назад я использовал aptitude, но потом вспомнил, что он может испортить зависимости, поэтому я подозреваю, что это было основной причиной. ``` $ sudo dkms build -m nvidia -v 510.47.03 Ошибка! Заголовки вашего ядра для ядра 5.13.0-28-generic не найдены. Пожалуйста, установите пакет linux-headers-5.13.0-28-generic, или используйте параметр --kernelsourcedir, чтобы сообщить DKMS, где он находится. ```
heik avatar
флаг in
Комменты уже очень помогли, по крайней мере видно что чего-то не хватает, а что было, обновил пост.
heik avatar
флаг in
@Terrance, пожалуйста, оставьте свои комментарии и рекомендации по установке linux-headers-5.13.0-28-generic (см. обновленный пост), поэтому я приму это как ответ. Ваши комментарии привели меня к решению. Большое спасибо!
Terrance avatar
флаг id
@heik Если вы хотите, вы можете написать ответ, и я проголосую за него. Я без проблем зайду и помогу, где смогу, и я рад, что вы смогли решить проблему. ;)
Someone avatar
флаг my
Привет! Извините за неясность ... При написании моего ответа я ошибочно предположил, что у вас установлены все необходимые компоненты.Конечно, заголовки Linux нужны! Я обновил свой ответ и улучшил ясность. Кроме того, вы установили заголовки ядра вашего текущего ядра... Вам придется повторять этот процесс каждый раз, когда ваше ядро ​​​​обновляется. Рассмотрите возможность установки пакета `sudo apt install linux-headers-generic`, чтобы вам не пришлось повторять этот процесс. Поскольку я уточнил свой ответ, вы можете принять его или опубликовать новый ответ...
heik avatar
флаг in
@Terrance Я бы хотел, чтобы в мире было больше таких людей, как ты :)
Рейтинг:1
флаг my

Предполагая, что у вас установлены все необходимые компоненты (sudo apt установить linux-headers-generic), вы можете выполнить следующие действия, чтобы устранить проблему:

  1. (По желанию) Загрузитесь в корневая оболочка для безопасного выполнения команд.

  2. Удалите свой дкм файл для драйверов NVIDIA:

    sudo rm -r /var/lib/dkms/nvidia
    
  3. Очистите драйверы NVIDIA:

    sudo dpkg -P --force-all $(dpkg -l | grep "nvidia-" | grep -v lib | awk '{print $2}')
    
  4. Переустановите драйверы NVIDIA:

    автоустановка драйверов sudo ubuntu
    
  5. Перезагрузить!

Теперь ваши драйверы NVIDIA должны работать правильно!

heynnema avatar
флаг ru
Я бы сделал это немного по-другому. Неправильный способ удаления dkms/nvidia с помощью rm. Не нужно переустанавливать dkms. Я бы сначала проверил, что безопасная загрузка отключена. nvidia dkms добавляется, но не создается и не устанавливается. Сборка dkms и установка dkms. Перезагрузить. Проверьте статус dkms и nvidia-smi.
heik avatar
флаг in
Я пробовал так, но в итоге получил тот же результат.
Someone avatar
флаг my
@heik Привет! Извините за неясность ... При написании моего ответа я ошибочно предположил, что у вас установлены все необходимые компоненты. Конечно, заголовки Linux нужны! Я обновил свой ответ и улучшил ясность. Кроме того, вы установили заголовки ядра вашего текущего ядра... Вам придется повторять этот процесс каждый раз, когда ваше ядро ​​​​обновляется. Рассмотрите возможность установки пакета `sudo apt install linux-headers-generic`, чтобы вам не пришлось повторять этот процесс. Поскольку я уточнил свой ответ, вы можете принять его или опубликовать новый ответ...
heik avatar
флаг in
@Someone, спасибо за ваш отзыв! Честно говоря, я также предполагал, что у меня установлены все предварительные условия, я думаю, что попытка использовать apritide в прошлом испортила мои зависимости больше, чем я думал. У меня есть последняя версия linux-headers-generic, несмотря на то, что я установил конкретную версию, как указано в моем обновлении: «linux-headers-generic уже является самой новой версией (5.4.0.99.103)». Я принял ваш ответ, потому что вместе с моими обновлениями он должен охватывать все, что может понадобиться гугле в подобной ситуации.

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

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.