Сегодня я установил обновление программного обеспечения из 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), и ясно, что будет разница в версии.
Подробнее см. В этой статье: