Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

NVIDIA: чёрный экран после обновления и nomodeset

Если после обновления ядра или драйвера экран остаётся чёрным, добавь nomodeset в параметры загрузки: временный режим нередко возвращает доступ к консоли. Он отключает Kernel Mode Setting и оставляет базовый framebuffer, но не чинит драйвер сам. Через tty восстановишь совпадение модуля NVIDIA с ядром, а потом сможешь убрать параметр.

Почему после обновления появляется чёрный экран?

Обычная загрузка проходит через модуль NVIDIA, менеджер дисплея и графический стек Xorg или Wayland. После pacman -Syu ядро, модуль NVIDIA, firmware и userspace-библиотеки могут оказаться в разных состояниях. Если модуль не подходит новому ядру или не попал в initramfs, графическая подсистема не запускает рабочий стол, а экран остаётся пустым.

Проверить это без случайных переустановок можно через журнал предыдущей загрузки:

sudo journalctl -b -1 -k | grep -Ei 'nvidia|nouveau|amdgpu|i915|drm|firmware|version mismatch|api mismatch'

Ищи сообщения о неизвестном символе, несовпадении версий, отсутствии firmware или ошибке инициализации DRM. Проблема может затронуть не только проприетарный модуль: при обновлении меняются такжеядро, параметры загрузки и порядок запуска graphical.target.

Проверка связки «драйвер — ядро» подробно разобрана в статье про ядро драйвера NVIDIA. Если система зависла на этапе ramdisk или не находит корневой раздел, nomodeset не поможет: сначала проверяй ядро, параметры root и initramfs.

Что именно делает nomodeset?

Параметр nomodeset просит ядро не включать Kernel Mode Setting для графических устройств. KMS отвечает за переключение разрешений, видеорежимов и передачу изображения через DRM; простой framebuffer не требует такой полноценной инициализации. Поэтому при проблеме с DRM или модулем NVIDIA система иногда продолжает загрузку и показывает текстовый терминал.

Это диагностический режим, а не выбор другого драйвера. Он не заменяет nvidia, nvidia-open, Nouveau или встроенный framebuffer в конфигурации Xorg. При nomodeset графическая сессия может не запуститься вообще, зато tty обычно остаётся доступным. Номер переключения зависит от настроек серве: попробуй Ctrl+Alt+F2, Ctrl+Alt+F3 или нажми нужную комбинацию несколько раз.

Если с nomodeset доходит лишь экран входа, а после обычной загрузки снова чёрный экран, причина почти наверняка в графическом стеке, initramfs или драйвере. Такой симптом полезнее полного отсутствия картинки: система позволяет безопасно добраться до ремонта.

Когда nomodeset помогает и как закончить восстановление?

Сначала используй параметр только для одной загрузки. В меню загрузчика выбери текущий пункт, нажми e, допиши nomodeset после quiet и запусти систему. Не сохраняй правку: постоянный параметр нужен лишь тогда, когда графический стек не восстановлен.

Зайди в tty и проверь окружение:

uname -r
pacman -Q | grep -E '^(nvidia|linux)'
lspci -nnk | grep -A3 -Ei 'VGA|3D|Display'

Затем найди ошибку в предыдущей загрузке и переустанови пакет драйвера, соответствующий активному ядру. После изменений пересобери initramfs:

# открытая ветка:
sudo pacman -Syu nvidia-open
# закрытая ветка — выполни вместо предыдущей строки:
# sudo pacman -Syu nvidia
sudo mkinitcpio -P

Для проприетарного модуля замени nvidia-open на nvidia; для DKMS-варианта используй соответствующий -dkms и убедись, что установлены заголовки ядра. После пересборки перезагрузись без nomodeset. Если графический стек поднялся, удали параметр из постоянной конфигурации.

nomodeset особенно полезен при несовпадении версий после обновления, ошибке early KMS или отсутствии нужного модуля в initramfs. Он не исправляет отсутствующий firmware, неверный root= и сломанный ключ GPG, поэтому всегда сверяй журнал, а не только внешний симптом.

Как добавить nomodeset в GRUB или systemd-boot?

В GRUB временный режим включается клавишей e на начальном экране. В строке, начинающейся с linux или linuxefi, добавь отдельный пробел и nomodeset, затем нажми Ctrl+X. Для постоянного параметра открой /etc/default/grub через sudoedit, сохрани остальные ключевые слова и измени строку:

GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3 nomodeset"

После сохранения пересобери конфигурацию:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Не заменяй GRUB_CMDLINE_LINUX_DEFAULT, если там есть параметры вроде rd.lvm.lvmroot или loglevel: они помогают загрузке, а nomodeset добавляется к ним. Сам принцип настройки загрузчика разобран в материале про чёрный экран и GRUB после обновления.

В systemd-boot также нажми e в меню, исправь строку linux и запусти через Ctrl+X. Постоянный параметр проще добавить к options нужной записи в /boot/loader/entries/*.conf либо задать глобально строкой в /boot/loader/loader.conf:

options nomodeset

Путь к ESP может отличаться при монтировании /boot или /efi; редактируй фактический файл загрузчика. После проверки обычной загрузки верни исходное значение options.

Когда переходить с nvidia на nvidia-open?

nvidia использует закрытый модуль ядра, а nvidia-open — открытый модуль NVIDIA. Пользовательские компоненты, интерфейс CUDA и работа приложений при этом не превращаются в полностью открытый стек. Разница сосредоточена в модуле ядра и его совместимости с новыми архитектурами GPU и ядрами.

Для современных видеокарт открытый модуль часто становится практичным выбором, особенно когда производитель активнее развивает его вместе с новым железом. Но точная поддержка зависит от поколения GPU, версии драйвера и ядра. Перед переходом проверь release notes и системные сообщения: если конкретная плата, ноутбукская Optimus-конфигурация или нужная функция пока не поддерживаются, продолжай использовать закрытый nvidia.

Не меняй ветку во время аварийного восстановления без причины. Сначала верни текущий драйвер в рабочее состояние; переход на nvidia-open лучше планировать отдельно. Перед удалением старого пакета посмотри фактическую привязку модуля:

modinfo -n nvidia
pacman -Qo "$(modinfo -n nvidia)"
dkms status

Типичная замена для штатного ядра выглядит так:

sudo pacman -Rns nvidia
sudo pacman -S nvidia-open
sudo mkinitcpio -P

Для DKMS нужны nvidia-open-dkms и заголовки текущего ядра. Не устанавливай обе ветки одновременно и не удаляй nvidia-utils, если он нужен обеим: сначала посмотри вывод pacman -Q | grep '^nvidia'. Архитектурные различия Wayland и памяти GPU отдельно разобраны в статье про асинхронную работу с VRAM.

Как проверить драйвер и откатить его при необходимости?

Главная проверка после обычной загрузки или прямо из tty:

nvidia-smi

Команда показывает модель GPU, драйвер и состояние связи ядра с userspace. Успех означает, что модуль загрузился и nvidia-smi общается с ним; чёрный экран после этого может идти от display manager, compositor или конфигурации графической сессии. Ошибка Failed to initialize NVML, version mismatch или No kernel module указывает на сам драйвер. Если tty доступен только с nomodeset, повторить nvidia-smi стоит после восстановления обычного KMS-режима.

Для отката начни с журнала и сохрани версию, которая работала раньше. В кэше пакетов часто остаётся предыдущий файл:

ls -1 /var/cache/pacman/pkg/nvidia*.pkg.tar.zst

Удобный интерактивный помощник Arch умеет выбрать старый релиз из архива:

sudo pacman -S downgrade
downgrade nvidia

Для открытой ветки укажи downgrade nvidia-open, затем снова выполни sudo mkinitcpio -P и перезагрузись без nomodeset. Старый модуль может перестать работать с новым ядром, поэтому временный откат драйвера иногда приходится совмещать с переходом на совместимое ядро. Не задерживайся на слишком старой версии и отмечай задержку в IgnorePkg, если она нужна для загрузки.

Если графический стек исправен, но рабочий стол не стартует только в Wayland, сначала проверь его журнал и параметры сессии. Разница между включением Wayland и переходом на Xorg разобрана в статье про включение Wayland.

Частые вопросы

Поможет ли nomodeset, если система не доходит до tty?

Нет. Параметр влияет на графический KMS, а не на монтирование /, шифрование диска или поиск ядра. Проверь initramfs, параметр root=, UUID и права на /boot; без работающего tty или rescue-системы временный режим не создаёт отдельную консоль.

Нужно ли добавлять nvidia_drm.modeset=0?

Это отдельный параметр модуля NVIDIA и не равнозначен nomodeset. Сначала временно загрузись с nomodeset: это быстро покажет, связана ли авария с KMS. Постоянные параметры модуля добавляй только после чтения журнала и проверки версии драйвера.

Можно ли оставить nomodeset навсегда?

Технически консоль может работать, но постоянный nomodeset ухудшает запуск display manager и ограничивает графические возможности. Используй его как временный доступ к tty, восстанови драйвер, проверь nvidia-smi и только затем возвращай обычные параметры загрузки.

Что делать, если nvidia-smi работает, а чёрный экран остаётся?

Проблема находится между драйвером и рабочим столом. Проверь journalctl -b -u display-manager, активный сервер графики, конфигурацию Xorg или Wayland compositor. При смене драйвера также удали оставшийся кэш compositor, когда это уместно для твоего рабочего стола.

Полезные ресурсы

Заключение

nomodeset — твой вход в tty, когда обычная графическая загрузка сломалась. Используй его временно, чини несовпадение драйвера и ядра через журнал и пакеты, а затем возвращай обычный KMS-режим. К nvidia-open переходи только после проверки поддержки GPU и функций, а не как случайное средство от чёрного экрана.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max