Обновление Ubuntu 17.10: Несоответствие API NVRM 384.11 с ядром 384.90

Вопрос или проблема

Сегодня я установил обновление программного обеспечения для Ubuntu. Затем, при перезагрузке, я никогда не попал на экран входа. На экране что-то мигало, но было слишком быстро, чтобы увидеть, что именно оно говорит.

Удалось подключиться по SSH с другого компьютера, dmesg говорит: “Несоответствие API: клиент имеет версию 384.111, но этот модуль ядра имеет версию 384.90. Пожалуйста, убедитесь, что этот модуль ядра и все компоненты драйвера NVIDIA имеют одинаковую версию.”

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

Как мне это исправить?

Спасибо.

Мне удалось исправить эту проблему.

Как оказалось, хотя я обновлял свою систему через ‘обновление программного обеспечения’, я все еще использовал старую бета-версию ядра 4.8. Команда uname -r показала версию, на которой я работал. После установки нового ядра 4.13 и перезагрузки, оно проигнорировало новую версию, продолжив загрузку под 4.8. Обновил grub, затем перезагрузил и увидел версию 4.13 в меню grub, поэтому я выбрал её. После загрузки я применил обновления безопасности NVIDIA, как и раньше, и на этот раз все сработало.

Это довольно распространенная проблема, особенно когда вы сталкиваетесь с ошибками при установке новых драйверов Nvidia.

Основная причина в том, что каждый раз, когда вы устанавливаете новые драйверы nvidia (через “sudo apt-get install nvidia-xxxx”), должен вступить в силу DKMS и обновить файл initrd. И он обновит только последнюю версию “uname -r”. Если возникнет ошибка, initrd не будет обновлен, и вам придется сделать это вручную.

Вы можете это проверить, заглянув в /lib/modules и поискав свои новоустановленные драйверы nvidia, а также старые, которые все еще существуют во файле initrd (через команду lsinitramfs), и вы заметите разницу в версиях.

Для получения дополнительных деталей смотрите эту статью:

https://tthtlc.wordpress.com/2019/03/02/how-to-upgrade-nvidia-drivers-version-and-overcome-a-bug-in-the-dkms-process-itself/

Я столкнулся с такой же проблемой и делюсь здесь своим решением.

В моем случае версия NVRM была 440.100, а версия драйвера была 460.32.03. Мой драйвер был обновлен с помощью sudo apt install caffe-cuda, и я не заметил этого в то время, но я проверил это в /var/log/apt/history.log.
Следуя своей версии NVRM, я просто использовал sudo apt install nvidia-driver-440, но он установил 450.102, я не знаю, почему была установлена другая версия, и nvidia-smi показывает 450.102.04.

Тем не менее, после перезагрузки моего ПК все, включая cuda, теперь работает нормально.

Я не удалял/очищал ничего, связанного с драйвером nvidia. Версия 460.32.03 была удалена автоматически при выполнении sudo apt install nvidia-driver-440

Ответ или решение

Решение проблемы несовместимости API NVRM на Ubuntu 17.10

Введение

Ваша проблема, связанная с несовместимостью API NVRM после обновления Ubuntu 17.10, является распространенной среди пользователей, использующих видеокарты NVIDIA. Она возникает из-за различий в версиях графических драйверов и модулей ядра, что может затруднить доступ к графическому интерфейсу после загрузки системы. В этом ответе я детально расскажу о причинах данной проблемы и предложу эффективное решение.

Причины несовместимости API

Несовместимость API возникает, когда установленный модуль драйвера NVIDIA (в вашем случае версия 384.90) не соответствует версии драйвера, установленного в системе (384.111). Эта ситуация часто происходит в результате:

  1. Обновлений через пакетный менеджер: При обновлении системы возможна ситуация, когда ядро не обновляется одновременно с драйверами NVIDIA.
  2. Ошибок в процессе установки: При установке новых драйверов с помощью DKMS могут возникать ошибки, что предотвращает обновление initrd (initramfs) файла, что приводит к несоответствию версий.
  3. Использования устаревшего ядра: Если система использует старую версию ядра (например, 4.8), это может привести к несовместимости с новыми драйверами.

Решение проблемы

Для устранения проблемы несовместимости API выполните следующие шаги:

  1. Проверьте используемую версию ядра:
    Откройте терминал и выполните команду:

    uname -r

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

  2. Обновите ядро:
    Если вы находитесь на старой версии ядра, обновите его:

    sudo apt update
    sudo apt upgrade linux-generic

    После завершения установки обновите GRUB:

    sudo update-grub
  3. Выбор нового ядра при загрузке:
    Перезагрузите систему и на экране GRUB выберите новое ядро (например, 4.13). Это обеспечит, чтобы вы использовали соответствующее ядро для новых драйверов.

  4. Установка драйверов NVIDIA:
    Убедитесь, что у вас установлены правильные версии драйверов NVIDIA:

    sudo apt install nvidia-driver-xxx

    Замените xxx на актуальную версию драйвера, совместимую с вашим графическим адаптером и ядром.

  5. Проверка версий:
    Убедитесь, что версии драйверов совпадают. Вы можете проверить установленную версию драйвера с помощью команды:

    nvidia-smi
  6. Проверка и обновление initrd:
    Убедитесь, что initrd был обновлен после установки драйвера:

    sudo update-initramfs -u

Заключение

Несоответствие версий драйверов NVIDIA и модулей ядра может вызвать серьезные проблемы при загрузке системы. Следуя вышеуказанным шагам, вы сможете устранить данную проблему и восстановить доступ к графическому интерфейсу Ubuntu 17.10. Регулярные обновления и проверка установленных версий помогут избежать подобных ситуаций в будущем.

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

Оцените материал
Добавить комментарий

Капча загружается...