Решаем проблему с невозможностью входа в Fedora 25

Несколько дней назад пользователи дистрибутива Fedora 25 получили обновление пакета xorg-x11-drv-nouveau, который вызвал на свободных драйверах NVIDIA проблемы с мерцающим чёрным экраном. Здесь мы рассмотрим два способа её решения.

Введение

Проблема заключается в регрессии и уходе свободного драйвера nouveau 1:1.0.14-1 в dead-loop из-за линковки с библиотекой libdrm версии 2.4.78 или выше.

Пользователи Fedora 25 видят сразу после завершения загрузки мерцающий чёрный экран, полностью блокирующий работу любых логин-менеджеров, включая SDDM, GDM, LightDM и прочих. Войти в систему становится невозможно.

Исправление уже доступно в репозиториях Fedora 25 в виде пакета xorg-x11-drv-nouveau версии 1.0.14-2.fc25, но установить его на подверженной ошибке системе не так-то просто.

Способ 1. Локальный

Если блокировка не полная, то нажмём на клавиатуре комбинацию Ctrl + Alt + F2 и переключимся в другую виртуальную консоль, выполним там вход в систему от имени пользователя с доступом к sudo, либо как root (если вход осуществлён как root, то sudo перед командами писать не нужно).

Загрузим RPM пакет с исправлением:

wget http://mirror.yandex.ru/fedora/linux/updates/25/x86_64/x/xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm

Установим данный пакет:

sudo dnf --disablerepo="\*" install xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm

Перезагрузим ОС:

sudo systemctl reboot

Способ 2. Chroot в установленную ОС

Если блокировка настолько полная, что переключение в другие виртуальные консоли не работает, нам потребуется войти в установленную систему с LiveCD или LiveUSB соответствующей архитектуры (это важно). Инструкции по созданию загрузочной флешки можно найти здесь.

Итак, загружаемся с LiveCD/USB и запускаем эмулятор терминала или переходим в виртуальную консоль (особой разницы не имеет).

Для начала создадим каталог для точки монтирования:

sudo mkdir /media/fedora

Смонтируем корневой раздел установленной ОС:

sudo mount -t ext4 /dev/sda1 /media/fedora

Здесь /dev/sda1 — раздел, на котором установлена ОС, а ext4 — его файловая система. Внесём соответствующие правки если это не так.

Переходим в каталог с корневой ФС и монтируем ряд необходимых для работы окружения виртуальных ФС:

cd /media/fedora
sudo mount -t proc /proc proc
sudo mount --rbind /sys sys
sudo mount --make-rslave sys
sudo mount --rbind /dev dev
sudo mount --make-rslave dev
sudo mount -t tmpfs tmpfs tmp

Теперь выполняем вход в chroot:

sudo chroot /media/fedora

Загружаем обновлённый пакет:

wget http://mirror.yandex.ru/fedora/linux/updates/25/x86_64/x/xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm -O /root/xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm

Устанавливаем его:

dnf --disablerepo="\*" install /root/xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm

Удаляем ненужный более файл обновления:

rm -f /root/xorg-x11-drv-nouveau-1.0.14-2.fc25.x86_64.rpm

Завершаем работу chroot окружения:

logout

Перезагружаемся в основную ОС:

sudo systemctl reboot