Цикл входа после обновления ядра 3.13.0-143-generic Ubuntu 14.04

Цикл входа после обновления ядра 3.13.0-143-generic Ubuntu 14.04

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

Nvidia: версия magic '3.13.0-143-genric SMP mod_unload modversions' должна быть '3.13.0.143-generic SMP mod_unload modversions retpoline'

Я знаю, что здесь решаются похожие проблемы (например,Невозможно войти в систему после установки драйвера Nvidia версии 14.04)

Но я не очень хорошо понимаю, как изменить команду, чтобы она работала в моей системе.

У меня Ubuntu 14.04...


Я попробовал загрузить старое ядро. Оно работает хорошо. Я проверил инструменты конфигурации графического интерфейса. В обновлениях и драйверах я могу выбрать обновление драйверов nvidia до последней версии (384.111). Я попробовал, и все по-прежнему работает.

Затем я вернулся к последней версии ядра.

Теперь я проверяю modinfo, и nvidia там не было. Я попробовал "sudo modprobe nvidia" (dkms видит, что nvidia 384.111 установлена).

Ответ: modprobe: ОШИБКА не удалось вставить «nvidia_384»: Ошибка формата Exec

Я проверил nvidiafb.ko в /lib/modules/.../drivers/video/nivdia, и этот файл находится в режиме -rw-r--r--... Я не знаю, должен ли он быть в режиме exec???

Я застрял сейчас

решение1

Это потому, что в новых ядрах есть смягчение Spectre retpoline. Вам нужно будет пересобрать модуль ядра nvidia.ko с пропатченной версией стандартного дистрибутива gcc.

Вот ошибка и более подробная информация:https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937

решение2

Я решил проблему следующим образомэта почтаиз bugs launchpad. Вкратце:

Выполните следующую команду и найдите vermagicстроку:

modinfo nvidia-384 -k 4.4.0-116-generic

Вероятно, он скажет: vermagic: 4.4.0-116-generic SMP mod_unload modversions. Здесь отсутствует строка retpoline. Вы можете исправить это, удалив и пересобрав модуль с помощью DKMS

sudo dkms remove nvidia-384/384.111 -k 4.4.0-116-generic
sudo dkms install nvidia-384/384.111 -k 4.4.0-116-generic

После этого команда modinfo покажетvermagic: 4.4.0-116-generic SMP mod_unload modversions retpoline

Если вы используете пользовательскую версию gccэта почтатакже актуально:

Если вы используете версию gcc для Ubuntu, то gcc, вероятно, обновился, когда вы получили новое ядро. Изменения в gcc, необходимые для поддержки retpoline, должны были быть перенесены в большинство активных версий gcc. Однако, если вы установили пользовательскую версию gcc, то ваш модуль ядра, вероятно, не будет собран правильно.

Поэтому, если описанная выше процедура не работает, вам, возможно, придется проверить, какую версию gcc вы используете.

Связанный контент