Все об Arch Linux

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

Legacy NVIDIA 340/390 на новом ядре: три пути

Если в твоём ноутбуке или настольном ПК стоит GeForce из серий 8, 9, 200, 300, 400, 500, 600 или 700, то проприетарный драйвер для неё закончился в 2018 году и на ядре 6.x не собирается без патчей. Дальше остаются три дороги: закрепить старое ядро, перейти на nouveau или собирать legacy-модуль через DKMS. Разбираемся, что ломается в модуле, чем заканчивается каждая попытка и какой выбор разумный в 2026 году.

Почему ветки 340xx и 390xx перестали собираться?

Сначала определи, какая у тебя ветка. Ветка 340xx (последняя сборка 340.108, начало 2018) обслуживала GeForce 8, 9, 200 и 300 серии. Ветка 390xx (последняя сборка 390.157, конец 2018) брала на себя GeForce 400–700. Точный Device ID покажет команда:

lspci -nn -d 10de:
lspci -nnk -d 10de:

Строка 10de:1b80 и рядом указывают на карту ветки 390, а не 470. Идентификатор нужно сверить с таблицей на странице NVIDIA в ArchWiki.

Причина поломки простая и не лечится настройками. Модуль nvidia.ko — не пользовательская программа, а кусок ядра, и он обращается к внутренностям ядра напрямую: подсистеме DRM и KMS, таймерам, памяти, структурам драйверов устройств. Стабильного ABI тут нет: каждое крупное внутреннее изменение ломает сборку. Официально ветка 340xx собиралась на ядрах старой линейки, а 390xx — примерно до 5.4; ядро 5.9, а затем и вся ветка 6.x убрали несколько нужных модулю механизмов. Дальше каждое обновление ядра означает новый патч, а патчи сообщества живут в репозиториях и быстро устаревают.

Вторая причина — просто политика: поддержку этих карт NVIDIA закрыла, новых сборок нет, дыр в старых модулях никто не латает. Для современной карты путь один и он описан в статье про драйвер NVIDIA на Arch Linux. Для GeForce 400–700 этот путь в 2026 году закрыт.

Что реально умеет nouveau?

Nouveau — свободный драйвер, входящий в ядро и в Mesa. Он умеет базово показывать картинку, работать с рабочим столом, воспроизводить видео через XVideo и декодировать H.264 в аппаратном режиме на части карт. Чего он не умеет:

  • Vulkan нет вообще. У Mesa нет драйвера Vulkan для nouveau, поэтому любая игра на Vulkan, включая Proton, не запустится. Практически весь современный игровой каталог — это Vulkan.
  • Нет VA-API и NVDEC, поэтому ускоренное декодирование в браузере и в mpv придётся включать руками, если карта его вообще тянет.
  • Нет CUDA и прочих проприетарных дополнений.
  • 3D медленнее, чем на проприетарном драйвере, и сильнее проседает на тяжёлых сценах.
  • Управление питанием и вентиляторами хуже: частоты не поднимаются автоматически, а вентилятор часто не управляется вовсе. Отсюда перегрев под нагрузкой и громкий шум ноутбука — подробности о троттлинге, Boost и Coolbits в статье про перегрев NVIDIA и Coolbits.

Итог простой: nouveau годится как временная мера, чтобы машина работала, но не как замена игры. Открытый драйвер NVK из Mesa работает начиная с поколения Turing, а Maxwell и Pascal (серии 400–700) он пока не поддерживает, так что этот путь тоже закрыт.

Оговорка про новые карты: если на руках не legacy, а современная плата с GSP-прошивкой, для nouveau иногда нужно отключить её через параметр драйвера. Иначе nouveau может не стартовать вовсе.

Как остаться на старом ядре и не ловить проблем?

Классический путь: поставить LTS-дистрибутив ядра и запретить pacman обновлять ядра. Логика выбора версии и роли hardened-варианта разобрана в статье о том, какое ядро выбрать — Linux, LTS или Zen Hardened. Сам запрет делается в /etc/pacman.conf:

IgnorePkg = linux linux-lts linux-zen linux-hardened nvidia nvidia-dkms

Проверить, что система действительно держит нужную версию:

pacman -Q linux linux-lts nvidia
uname -r

Здесь есть честная оговорка: LTS-линейка в 2026 году — это ядра 6.x, а модуль 390xx на них без патчей не собирается. Поэтому «поставить linux-lts» работает только вместе с патченным модулем из следующего раздела либо с более старым LTS-снимком из архива. Удерживать систему на ядре пятилетней давности — значит не получать обновлений безопасности ядра, и это осознанный размен, а не бесплатное решение.

Как собрать legacy-модуль через DKMS?

Схема: взять исходники модуля, наложить патчи сообщества и пересобирать модуль автоматически при каждой установке ядра. В AUR есть пакеты nvidia-340xx-dkms и nvidia-390xx-dkms, часть патчей лежит в отдельных пакетах-патчсетах.

sudo pacman -S base-devel dkms git
git clone https://aur.archlinux.org/nvidia-390xx-dkms.git
cd nvidia-390xx-dkms && makepkg -si
sudo mkinitcpio -P
dkms status
sudo modprobe nvidia
nvidia-smi

Если модуль не собрался или не загрузился, ошибка всегда видна в журнале ядра:

dmesg | grep -iE "nvidia|nouveau" | tail -30
journalctl -k -b | grep -i nvidia

Ограничения у этого пути самые жёсткие. С каждой новой LTS-версией ядра шанс собрать модуль падает, и через год пакет может просто перестать обновляться. Модуль 340xx собирается хуже, чем 390xx, потому что там больше устаревших внутренних вызовов. Нужен ручной труд: каждое обновление системы превращается в проверку, а не в одну команду.

Второе ограничение функциональное, и его многие пропускают: на 340xx и 390xx нет поддержки GBM, а композиторы Wayland требуют именно её. То есть полноценный Wayland с этими драйверами не заработает, только X11. Плюс гибридная схема PRIME там не поддерживается в том виде, как она описана в статье о prime-run и выборе GPU для Steam: офлоад с дискретной карты на встроеную эти ветки не умеют, переключение живёт в BIOS или в утилите вендора.

Как проверить, что драйвер действительно работает?

Первая проверка — привязка драйвера к карте. В строке Kernel driver in use должно стоять nvidia, а не nouveau:

lspci -nnk -d 10de:
glxinfo -B | grep -E "OpenGL vendor|OpenGL renderer"
dmesg | grep -i nvidia

glxinfo покажет, создаётся ли контекст вообще, а dmesg — предупреждения о том, что модуль загрузился, но что-то с ним не так (например, отказ в доступе к аппаратным функциям). Если в dmesg мелькает NVIDIA GPU not supported или жалобы на API mismatch, патчи не помогли, и дальше стоит пробовать только LTS-снимок.

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

Как понять, какая ветка мне нужна — 340 или 390?

Запусти lspci -nn -d 10de: и возьми Device ID после двоеточия. Серии 8, 9, 200 и 300 — это 340xx, серии 400–700 — 390xx. Если сомневаешься, попробуй поставить 390xx: модуль более новый, часто собирается без патчей на большем числе ядер.

Nouveau установился, но всё тормозит и Vulkan нет

Это ожидаемо. Проверь, что загрузился именно nouveau, а не устаревший Vesa: строка в lspci -k и вывод dmesg | grep -i nouveau. Дальше стоит принять ограничения — тяжёлые игры на такой карте в 2026 году не запускаются в любом случае.

Как вернуть nouveau после неудачной установки legacy-драйвера?

sudo pacman -Rns nvidia nvidia-dkms
sudo mkinitcpio -P
sudo modprobe -r nvidia
sudo modprobe nouveau

Если модуль продолжает мешать загрузке, проверь, что в списке модулей blacklist нет записи nvidia, и пересобери initramfs заново. Возврат на nouveau почти всегда удаётся, потому что он живёт в ядре.

Стоит ли связываться или проще поменять карту?

Если нужны игры, видеомонтаж или CUDA — проще поменять карту. Минимально разумный уровень для 2026 года — Maxwell и выше, а на практике комфорт начинается с поколения Turing, под которое написан NVK. Если карта нужна для текста, браузера и видео, разумно оставить систему на LTS-ядре с nouveau. Третий вариант, который многие недооценивают: поставить на этой машине Windows, где legacy-драйвер работает без единого патча.

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

  • ArchWiki: Nouveau — загрузка, настройки, ограничения, отключение проприетарного драйвера.
  • ArchWiki: NVIDIA — ветки драйверов, таблицы Device ID, DKMS, GSP-прошивка.

Заключение

Драйверы 340xx и 390xx остались в 2018 году, а ядро ушло вперёд на восемь лет, поэтому модуль без патчей не собирается в принципе. Для рабочей машины хватит LTS-ядра и nouveau, для игр честный выбор один — менять карту или оставаться на Windows, а DKMS оставить тем, кому интересно чинить модуль под каждое обновление ядра.



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

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

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

Комментарии

Загрузка…

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

Telegram Max