Вопрос или проблема
Сегодня я установил обновление программного обеспечения для 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), и вы заметите разницу в версиях.
Для получения дополнительных деталей смотрите эту статью:
Я столкнулся с такой же проблемой и делюсь здесь своим решением.
В моем случае версия 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). Эта ситуация часто происходит в результате:
- Обновлений через пакетный менеджер: При обновлении системы возможна ситуация, когда ядро не обновляется одновременно с драйверами NVIDIA.
- Ошибок в процессе установки: При установке новых драйверов с помощью DKMS могут возникать ошибки, что предотвращает обновление initrd (initramfs) файла, что приводит к несоответствию версий.
- Использования устаревшего ядра: Если система использует старую версию ядра (например, 4.8), это может привести к несовместимости с новыми драйверами.
Решение проблемы
Для устранения проблемы несовместимости API выполните следующие шаги:
-
Проверьте используемую версию ядра:
Откройте терминал и выполните команду:uname -r
Убедитесь, что работаете на актуальной версии ядра, такой как 4.13 или выше.
-
Обновите ядро:
Если вы находитесь на старой версии ядра, обновите его:sudo apt update sudo apt upgrade linux-generic
После завершения установки обновите GRUB:
sudo update-grub
-
Выбор нового ядра при загрузке:
Перезагрузите систему и на экране GRUB выберите новое ядро (например, 4.13). Это обеспечит, чтобы вы использовали соответствующее ядро для новых драйверов. -
Установка драйверов NVIDIA:
Убедитесь, что у вас установлены правильные версии драйверов NVIDIA:sudo apt install nvidia-driver-xxx
Замените
xxx
на актуальную версию драйвера, совместимую с вашим графическим адаптером и ядром. -
Проверка версий:
Убедитесь, что версии драйверов совпадают. Вы можете проверить установленную версию драйвера с помощью команды:nvidia-smi
-
Проверка и обновление initrd:
Убедитесь, что initrd был обновлен после установки драйвера:sudo update-initramfs -u
Заключение
Несоответствие версий драйверов NVIDIA и модулей ядра может вызвать серьезные проблемы при загрузке системы. Следуя вышеуказанным шагам, вы сможете устранить данную проблему и восстановить доступ к графическому интерфейсу Ubuntu 17.10. Регулярные обновления и проверка установленных версий помогут избежать подобных ситуаций в будущем.
Если у вас возникли дополнительные вопросы или проблемы, не стесняйтесь задать их, и я с радостью помогу!