Когда с NVIDIA что-то идёт не так, экран чаще всего говорит «ничего»: чёрный кадр, окно без графики, сессия, которая не стартует. Единственный нормальный источник диагностики — лог Xorg, и в нём почти всегда видно, на каком именно шаге всё сломалось. Разбираемся, где файл лежит в 2026 году, как вытащить из тысячи строк нужные и что делать с каждой типовой ошибкой.
По умолчанию сервер пишет файл прямо в /var/log/Xorg.0.log, рядом лежит предыдущий запуск — Xorg.0.log.old. На части новых систем лог уезжает в домашний каталог, в ~/.local/share/xorg/, там же обнаруживается Xwayland.0.log для сессии Wayland. Проверь оба места и журнал системы:
ls -l /var/log/Xorg.*.log ~/.local/share/xorg/ 2>/dev/null
journalctl -b | grep -iA5 "xorg\|drm\|nvidia"
journalctl -b -1 | grep -i "xorg" # предыдущая загрузка
Если Xorg не стартует вообще и файлов нет, подключись к текстовой консоли и запусти сервер вручную с подробным журналированием — ключ -verbose поднимает уровень детализации:
sudo Xorg -verbose :1
Отдельный случай — автогенерация конфигурации. Команда Xorg -configure создаёт xorg.conf по найденному оборудованию, и сравнение сгенерированного файла с работающей системой многое объясняет. Сам xorg.conf при этом не нужен: он ломает гибридную схему и Wayland, а помогает лишь в диагностике.
Сервер помечает уровень сообщений прямо в строке. (EE) — ошибка, из-за которой он уходит в аварийный режим, (WW) — предупреждение, часто безобидное. Полезные команды:
# только ошибки и предупреждения
grep -E "\(EE\)|\(WW\)" /var/log/Xorg.0.log
# всё, что связано с видео
grep -iE "nvidia|glx|egl|drm|glamor" /var/log/Xorg.0.log | tail -40
# сколько строк всего и сколько ошибок — быстрый срез
wc -l /var/log/Xorg.0.log
grep -cE "\(EE\)" /var/log/Xorg.0.log
Читай с конца: сервер логирует по мере загрузки, поэтому первая ошибка находится ближе к началу, а последние строки показывают итог. Дальше фильтруй по имени модуля: nvidia, glx, egl, drm. Полезно сверить весь список ошибок с одной командой, а не перечитывать файл глазами.
NVIDIA(0): Failed to initialize the NVIDIA kernel moduleСервер не смог получить доступ к модулю ядра. Обычных причин две: модуль не загружен вообще или он собран под другое ядро. Проверяй так:
uname -r
modprobe nvidia && lsmod | grep nvidia
dmesg | grep -iE "nvidia|api mismatch" | tail -20
Строка API mismatch в журнале ядра означает, что модуль собран под другую версию ядра — нужно пересобрать initramfs или драйвер. Если система вообще не грузится с картинкой, сначала выручайся через параметр nomodeset, о нём я писал в статье про чёрный экран и nomodeset.
Failed to load module "nvidia" (modules/nvidia/nvidia_drv.so)Xorg не нашёл пользовательскую часть драйвера. Это уже не про ядро, а про файлы библиотек: nvidia_drv.so ставится пакетом nvidia-utils. Проверь, что пакет на месте, и что его версия совпадает с версией ядерного модуля:
pacman -Q nvidia nvidia-utils
pacman -Ql nvidia-utils | grep -E "nvidia_drv|libGLX_nvidia|libEGL_nvidia"
Расхождение версий между пакетами nvidia* — самая частая причина всех бед после частичного обновления.
Failed to initialize GLX extensionXorg запустился, но 3D-ускорение не поднялось. Механизм GLX в современной системе раздаёт не сам драйвер, а прослойка glvnd, и если она или её библиотеки повреждены, сервер честно сообщает об отказе. Лечится переустановкой пакета:
sudo pacman -S libglvnd nvidia-utils
ldconfig -p | grep -E "libGLX_nvidia|libEGL_nvidia|libGLdispatch"
Отдельно проверь, что загружен нужный драйвер, а не nouveau: строка Kernel driver in use в выводе lspci -nnk должна содержать nvidia.
No devices detectedСервер не нашёл ни одного пригодного устройства. Обычно виноват режим питания карты, отсутствие modesetting или не тот драйвер:
lspci -nnk | grep -A3 -E "VGA|3D controller"
cat /sys/bus/pci/devices/0000:01:00.0/power/control
Современный Xorg не общается с драйверами напрямую. Посередине стоит glvnd — прослойка, которая выбирает вендора по списку в /usr/share/glvnd/egl_vendor.d/ и подгружает нужную реализацию GLX или EGL. Отсюда два правила, которые стоит запомнить:
EGL_EXT_platform_base или Unable to load libEGL_nvidia почти никогда не означают поломку. Это сообщения о том, что запросили расширение, которого нет, или что библиотека вендора не участвует в разыменовании. Проверяй, что приложение вообще рисует, а не ищи причину в этих строках.Ещё один нюанс: в сессии Wayland строки про GLX относятся к Xwayland, а не к твоему сессии. Тогда лог лежит в ~/.local/share/xorg/Xwayland.0.log, и читать /var/log/Xorg.0.log бесполезно.
Порядок действий почти всегда один и тот же. Сначала доводи обновление до конца — частичное обновление ломает нумерацию библиотек:
sudo pacman -Syu
sudo pacman -S nvidia nvidia-utils libglvnd
sudo mkinitcpio -P
sudo modprobe nvidia
Дальше проверь initramfs. Модуль NVIDIA должен попасть в образ ядра, а его параметры — в конфиг. В новых драйверах параметры переехали из командной строки в /etc/modprobe.d/nvidia.conf:
cat /etc/modprobe.d/nvidia.conf
grep -n "nvidia" /etc/mkinitcpio.conf /etc/mkinitcpio.d/*.conf
Если после pacman -Syu ядро обновилось, а initramfs почему-то не пересобрался, система не загрузится с картинкой, и починить это сможет только ручной mkinitcpio -P. Смежная история с невидимыми ядрами в меню загрузчика разобрана в статье о том, что GRUB не видит ядро после обновления. Полный порядок установки драйвера с нуля я собирал в материале про драйвер NVIDIA на Arch Linux — проще пройти его целиком, чем собирать конструктор из отдельных шагов.
Отдельно про конфликт с nouveau: если оба модуля грузятся, Xorg может выбрать не тот. Гасится это записью в blacklist, а выгрузкой в текущей сессии:
sudo modprobe -r nouveau
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/nvidia-blacklist.conf
sudo mkinitcpio -P
Финальная проверка состоит из трёх коротких команд, и все три должны дать ожидаемый результат:
grep -cE "\(EE\)" /var/log/Xorg.0.log # 0 — ошибок нет
glxinfo -B | grep -E "OpenGL vendor|OpenGL renderer"
xrandr | head -20
В строке OpenGL renderer string должно быть имя твоей карты с «NVIDIA Corporation», а не «llvmpipe» и не «AMD Radeon». Если счётчик (EE) больше нуля, а картинка есть, скорее всего, ошибка безобидная и связана с второстепенным устройством вроде ТВ-выхода — но проверить стоит. Добавь к проверке nvidia-smi и prime-run glxinfo -B, чтобы увидеть, просыпается ли дискретная карта по запросу.
Переключись на текстовую консоль и читай журнал: journalctl -b | grep -iA5 xorg. Если и там пусто, запусти sudo Xorg -verbose :1 — вывод пойдёт прямо в терминал. Статус дисплей-менеджера покажет, до какого момента дошла загрузка.
pacman -Syu появился Failed to initialize GLXНедообновлённая система. Доустанови обновления до конца, затем sudo pacman -S libglvnd nvidia-utils и sudo mkinitcpio -P. Проверь, что все пакеты nvidia* стоят одной версии, — расхождение версий и есть корень ошибки.
Это уже не проблема Xorg: сервер запустился штатно. Смотри окружение приложения и выбор GPU через переменные окружения, а не журнал сервера. Проверь фактический рендерер через glxinfo -B | grep renderer и сравни с ожидаемой картой.
Почти всегда нет. Файл конфигурации выключает автоопределение видеокарты, ломает переключение в гибридной схеме и мешает Wayland. Создавай его только ради диагностики — выводом Xorg -configure — и убирай, как только причина найдена.
Лог Xorg — единственное место, где видно настоящую причину сбоя, а экран почти всегда молчит. Научись читать строки (EE) и (WW), сверяй версии пакетов nvidia* и пересобирай initramfs после каждого обновления ядра, и большинство проблем с NVIDIA перестанет быть загадкой.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии