Все об Arch Linux

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

Ошибки Xorg с NVIDIA: где искать лог

Когда с NVIDIA что-то идёт не так, экран чаще всего говорит «ничего»: чёрный кадр, окно без графики, сессия, которая не стартует. Единственный нормальный источник диагностики — лог Xorg, и в нём почти всегда видно, на каком именно шаге всё сломалось. Разбираемся, где файл лежит в 2026 году, как вытащить из тысячи строк нужные и что делать с каждой типовой ошибкой.

Где лежит лог Xorg и что делать, если его нет

По умолчанию сервер пишет файл прямо в /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

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 extension

Xorg запустился, но 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

Почему GLX и EGL ломаются из-за libglvnd

Современный Xorg не общается с драйверами напрямую. Посередине стоит glvnd — прослойка, которая выбирает вендора по списку в /usr/share/glvnd/egl_vendor.d/ и подгружает нужную реализацию GLX или EGL. Отсюда два правила, которые стоит запомнить:

  • Логика выбора GPU живёт в glvnd, а не в настройках Xorg. Если игра или Qt-приложение цепляется не к тому вендору, лечится это переменными окружения и составом файлов в каталоге, а разбор случаев с hybrid-графикой, prime-run и EGL — в статье о гибридной графике и выборе GPU для Steam.
  • Предупреждения вида 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, чтобы увидеть, просыпается ли дискретная карта по запросу.

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

Файла лога нет, а Xorg не запускается

Переключись на текстовую консоль и читай журнал: 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 и сравни с ожидаемой картой.

Есть ли смысл редактировать xorg.conf

Почти всегда нет. Файл конфигурации выключает автоопределение видеокарты, ломает переключение в гибридной схеме и мешает Wayland. Создавай его только ради диагностики — выводом Xorg -configure — и убирай, как только причина найдена.

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

  • ArchWiki: NVIDIA — установка, параметры модулей, разбор ошибок и несовместимости.
  • ArchWiki: Xorg — конфигурация сервера, журналы, диагностика проблем с запуском.

Заключение

Лог Xorg — единственное место, где видно настоящую причину сбоя, а экран почти всегда молчит. Научись читать строки (EE) и (WW), сверяй версии пакетов nvidia* и пересобирай initramfs после каждого обновления ядра, и большинство проблем с NVIDIA перестанет быть загадкой.



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

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

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

Комментарии

Загрузка…

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

Telegram Max