Полное руководство по удалению драйверов NVIDIA в Arch Linux

Работа с графическими драйверами в дистрибутивах на базе Arch Linux требует высокой точности, так как система практически лишена автоматических механизмов защиты от конфликтов пакетов. Часто пользователи сталкиваются с необходимостью удалить проприетарный драйвер NVIDIA, чтобы установить открытый драйвер Nouveau, или наоборот — для корректной работы современных игр и программ рендеринга. Неправильное удаление может привести к невозможности загрузки графического интерфейса, оставляя систему в режиме консольного доступа.

В отличие от других дистрибутивов, в Arch Linux управление пакетами осуществляется вручную через pacman и pacman-key, а конфигурация ядра требует вмешательства в mkinitcpio. Процесс удаления не ограничивается простой командой удаления пакета; необходимо также очистить конфигурационные файлы, удалить модули ядра и убедиться, что blacklist-файлы не блокируют загрузку альтернативных драйверов. Если вы планируете обновить видеокарту или сменить стратегию графического стека, следование четкому протоколу очистки критически важно.

Часто проблема усугубляется тем, что пользователи устанавливают драйверы через AUR или DKMS, что создает зависимости, которые стандартный менеджер пакетов не всегда видит при простом удалении. В этой статье мы разберем все этапы полной деинсталляции, от проверки установленных модулей до восстановления загрузчика, чтобы ваша система оставалась стабильной и работоспособной после манипуляций с видеоподсистемой.

Подготовка системы и диагностика текущего состояния

Прежде чем приступать к удалению, необходимо точно определить, какие именно компоненты NVIDIA установлены в вашей системе. В Arch Linux драйверы могут быть представлены в виде пакетов из официальных репозиториев или из AUR (Arch User Repository). Отличие между ними критично, так как пакеты из AUR часто не имеют автоматических зависимостей, которые можно удалить одной командой.

Для начала откройте терминал и выполните команду для поиска всех установленных пакетов с именем nvidia. Это позволит увидеть весь спектр установленных библиотек и модулей ядра.

pacman -Qs nvidia

Обратите внимание на префиксы пакетов: nvidia (общий), nvidia-dkms (для динамической сборки модулей), nvidia-utils (утилиты) и nvidia-settings (конфигуратор). Также важно проверить наличие пакета lib32-nvidia-utils, если вы используете 64-битную систему и запускаете 32-битные приложения, например, через Proton в играх. Их удаление без понимания последствий может сломать запуск некоторых программ.

Дополнительно стоит проверить, какие модули ядра загружены в данный момент. Это даст понимание того, находится ли драйвер в активной памяти, что может усложнить его удаление без перезагрузки.

lsmod | grep nvidia

Если вы видите список модулей (например, nvidia_uvm, nvidia_drm, nvidia_modeset), это означает, что драйвер активен. В некоторых случаях Arch Linux позволяет удалить пакеты, даже если модули загружены, но система предупредит о зависимостях. Рекомендуется перезагрузить компьютер в режим восстановления или использовать live-USB, если система не запускается корректно, однако для большинства случаев достаточно просто остановить графический сервер.

⚠️ Внимание: Перед началом любых манипуляций создайте точку восстановления или резервную копию конфигурационных файлов в /etc, особенно mkinitcpio.conf и файлов в /etc/modprobe.d/. Сбой в прошивке ядра может сделать систему незагружаемой.
📊 Как вы устанавливали драйверы NVIDIA?
Через официальный репозиторий Arch
Из AUR (yaourt/yay)
Через DKMS вручную
Использую opennvidia (nouveau)

Если вы используете DKMS (Dynamic Kernel Module Support), убедитесь, что у вас есть исходный код ядра (linux-headers), если планируете переустанавливать драйверы позже. Удаление заголовков ядра вместе с драйвером может потребовать их повторной установки для корректной работы будущих обновлений.

Остановка графического сервера и отключение автозагрузки

Процесс удаления драйверов NVIDIA требует, чтобы графический сервер (X11 или Wayland) был остановлен, так как файлы драйверов находятся в активной памяти. Попытка удалить пакеты, пока они используются, приведет к ошибкам целостности или отказу в доступе. В зависимости от вашего окружения рабочего стола, команда остановки может различаться.

Для большинства современных систем с systemd достаточно переключиться в мульти-пользовательский режим без графического интерфейса (runlevel 3). Это безопасно остановит дисплейный менеджер.

sudo systemctl set-default multi-user.target

После ввода этой команды система предложит перезагрузиться. Если вы не хотите перезагружать прямо сейчас, можно просто остановить текущий дисплейный менеджер, например gdm, sddm или lightdm, в зависимости от того, что установлено.

sudo systemctl stop gdm

Важно убедиться, что процесс действительно остановлен. Попробуйте перейти в консоль (Ctrl+Alt+F3) и войти под своим пользователем. Если графический интерфейс пропадает и остается только черный экран с приглашением входа, значит, операция прошла успешно. Теперь можно приступать к удалению пакетов, не боясь блокировки файлов.

Если вы используете Nvidia-Prime или гибридную графику с процессорами AMD или Intel, убедитесь, что вы отключили специфические скрипты, которые могут автоматически пересобирать конфигурацию Xorg при каждом запуске. Это часто делается через файлы в /etc/X11/xorg.conf.d/.

☑️ Подготовка к удалению

Выполнено: 0 / 4

Процесс удаления пакетов из репозиториев и AUR

Основной этап удаления драйверов осуществляется через пакетный менеджер pacman. В Arch Linux важно использовать флаг -Rns (или --remove --recursive --nosave), чтобы удалить пакет, его зависимости, которые не нужны другим программам, и файлы конфигурации. Это гарантирует "чистое" удаление.

Список пакетов для удаления зависит от того, что именно вы установили. Обычно это базовый набор:

  • 🔹 nvidia или nvidia-dkms — сам драйвер ядра
  • 🔹 nvidia-utils — утилиты и библиотеки OpenGL/Vulkan
  • 🔹 nvidia-settings — графическая утилита настройки
  • 🔹 lib32-nvidia-utils — 32-битные библиотеки (если установлены)

Для удаления всех основных пакетов выполните следующую команду в терминале.

sudo pacman -Rns nvidia nvidia-utils nvidia-settings lib32-nvidia-utils nvidia-dkms

Если вы устанавливали драйвер через AUR (например, с помощью yay или paru), процесс схож, но пакетный менеджер AUR должен быть указан явно, так как pacman не видит пакеты из пользовательского репозитория.

yay -Rns nvidia-dkms nvidia-utils

Важно следить за выводами терминала. Если система сообщает, что удаление пакета приведет к удалению других критических зависимостей (например, всей среды рабочего стола), остановитесь и проверьте, не является ли пакет частью группы multilib или graphics. В таких случаях лучше удалять пакеты по одному, чтобы избежать поломки системы.

Если у вас установлены пакеты, которые не удаляются из-за зависимостей, можно использовать флаг --nodeps, но это крайне не рекомендуется без глубокого понимания структуры системы, так как это может привести к "битому" состоянию установки.

⚠️ Внимание: При удалении пакетов через AUR убедитесь, что вы удаляете именно версию драйвера, а не пакеты-обертки (wrapper), которые могут содержать другие необходимые библиотеки. Всегда проверяйте список удаляемых файлов перед подтверждением.
Что делать, если pacman отказывается удалять пакет?

Если система блокирует удаление из-за зависимостей, попробуйте сначала удалить пользовательские пакеты, которые зависят от драйвера, например, игры или специфическое ПО для рендеринга. Команда `pacman -Qi <пакет>` покажет обратные зависимости.

После успешного выполнения команд вы увидите подтверждение удаления. Теперь необходимо убедиться, что в системе не осталось "хвостов" от пакетов. Иногда библиотеки остаются в кэше или в системных директориях.

Очистка модулей ядра и конфигурационных файлов

Удаление пакетов не всегда автоматически очищает модули ядра, которые были скомпилированы и скопированы в директории /lib/modules. Если вы использовали DKMS, модули могли остаться на диске, и при следующей загрузке ядро может попытаться их загрузить, вызвав конфликты.

Для ручной очистки модулей перейдите в директорию модулей текущего ядра и удалите все файлы, связанные с NVIDIA.

sudo rm -rf /lib/modules/$(uname -r)/kernel/drivers/video/nvidia*

Также необходимо проверить папку /var/lib/dkms/nvidia, если она существует. Эта папка содержит исходный код и скомпилированные модули для версий ядра, которые были установлены в прошлом. Оставшиеся там файлы могут помешать правильной установке драйверов в будущем.

sudo rm -rf /var/lib/dkms/nvidia

Далее нужно проверить конфигурационные файлы, которые могли быть созданы для принудительной загрузки драйвера. Часто это файлы в директории /etc/modprobe.d/. Найдите файлы с именем, содержащим nvidia, и удалите их или переименуйте, если планируете вернуть драйвер позже.

ls /etc/modprobe.d/ | grep nvidia

Если вы нашли файлы вроде nvidia.conf или nvidia-blacklist.conf, удаляйте их только после того, как убедитесь, что они не содержат важных настроек для других устройств. Обычно это файлы, которые запрещают загрузку модулей Nouveau при установке проприетарного драйвера.

  • 🔹 Удалите /etc/modprobe.d/nvidia.conf (или аналогичный)
  • 🔹 Проверьте /etc/modprobe.d/blacklist.conf на наличие строк blacklist nouveau
  • 🔹 Удалите /etc/X11/xorg.conf, если он был создан автоматически драйвером NVIDIA

Особое внимание уделите файлу mkinitcpio.conf. В нем могут быть прописаны модули, которые нужно загружать на этапе инициализации ядра (initramfs). Если там есть строки, содержащие nvidia, nvidia_modeset, nvidia_uvm или nvidia_drm, их обязательно нужно удалить.

sudo nano /etc/mkinitcpio.conf

Найдите строку, начинающуюся с MODULES=() или MODULES=(...), и удалите оттуда упоминания драйверов NVIDIA. Сохраните файл и пересоберите образ initramfs, чтобы изменения вступили в силу.

sudo mkinitcpio -P

Эта команда пересоберет образы для всех установленных ядер. Без этого шага система может продолжить пытаться загрузить удаленные драйверы, что приведет к ошибке "Kernel panic" или зависанию при загрузке.

Восстановление системы и переход на Nouveau

После того как все пакеты удалены, модули очищены, а конфигурационные файлы отредактированы, система готова к перезагрузке. При следующей загрузке Arch Linux должен автоматически подхватить открытый драйвер Nouveau, если он не заблокирован. Если вы хотите убедиться, что драйвер NVIDIA полностью исчез, проверьте вывод команды lspci.

lspci -k | grep -A 2 -i "vga"

В выводе вы должны увидеть строку Kernel driver in use: nouveau. Если вы видите nvidia или Kernel driver in use: (none), значит, что-то пошло не так. Отсутствие драйвера приведет к низкому разрешению экрана и отсутствию аппаратного ускорения.

Для полной уверенности можно проверить, какие модули загружены в текущий момент.

lsmod | grep -E "nvidia|nouveau"

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

Иногда после удаления драйвера графический сервер (X11/Wayland) может не запуститься автоматически, если конфигурация была жестко привязана к NVIDIA. В этом случае система может предложить альтернативный дисплейный менеджер или загрузиться в консоль. Не паникуйте — это нормальное поведение при смене графического стека.

Компонент Действие Путь к файлу / Команда
Пакеты Удаление pacman -Rns nvidia*
Модули ядра Очистка rm -rf /lib/modules/.../nvidia*
Initramfs Пересборка mkinitcpio -P
Конфигурация X11 Удаление rm /etc/X11/xorg.conf
DKMS Очистка rm -rf /var/lib/dkms/nvidia

Если вы планируете использовать систему без графического интерфейса (например, как сервер), убедитесь, что сетевой сервер и SSH работают корректно. Удаление драйверов видеокарты не должно влиять на сетевую подсистему, но иногда конфликты могут возникать на уровне PCIe-шины, если драйвер не был корректно отключен.

Частые ошибки и их решение

В процессе удаления пользователи часто сталкиваются с ошибкой "Error: target not found" или "Dependencies not satisfied". Это может происходить, если пакет был установлен вручную из архива .pkg.tar.xz и не зарегистрирован в базе данных pacman. В таком случае pacman не сможет удалить его стандартным способом.

Для удаления таких "фантомных" пакетов необходимо использовать опцию --nodeps или вручную удалить файлы, которые были скопированы в систему при установке. Однако, если вы не знаете точного пути, лучше восстановить систему из резервной копии.

Еще одна распространенная проблема — черный экран или "зависший" курсор после перезагрузки. Это часто означает, что модули ядра все еще загружаются, но конфигурация X11 не может их найти. Проверьте логи ядра (journalctl -b | grep nvidia) и логи дисплейного менеджера (/var/log/Xorg.0.log).

Если вы видите ошибку "No matching modules", значит, модуль удален, но драйвер пытается его загрузить. В этом случае необходимо добавить черный список модуля в конфигурацию ядра.

echo "blacklist nvidia" | sudo tee /etc/modprobe.d/blacklist-nvidia.conf

После этого обязательно пересоберите initramfs и перезагрузите систему.

⚠️ Внимание: Если после всех манипуляций система не загружается, используйте Live USB с Arch Linux, смонтируйте корневой раздел и вручную удалите проблемные файлы из /etc и /lib/modules. Это единственный способ спасти систему без полной переустановки.

Иногда проблема кроется в конфликте версий ядра. Если вы используете несколько ядер (например, linux и linux-lts), убедитесь, что драйверы удалены для всех установленных ядер. Модули могут остаться в папках старых версий ядра, которые не используются, но это может сбивать с толку при отладке.

FAQ: Часто задаваемые вопросы

Можно ли удалить драйвер NVIDIA, не перезагружая систему?

Теоретически можно удалить пакеты, но загруженные модули ядра останутся в памяти до перезагрузки. Для полной очистки необходимо перезагрузить компьютер или вручную выгрузить модули через rmmod, что часто вызывает ошибки, если модули используются другими процессами.

Что делать, если система не видит видеокарту после удаления драйверов?

Это означает, что драйвер Nouveau не загрузился. Проверьте, не заблокирован ли он в blacklist, и убедитесь, что у вас установлены пакеты nouveau (обычно они входят в состав ядра, но могут требовать установки в виде xorg-video-nouveau для корректной работы X11).

Нужно ли удалять nvidia-utils отдельно?

Да, пакет nvidia-utils содержит библиотеки OpenGL и Vulkan. Если вы не удалите его, некоторые приложения могут пытаться использовать удаленный драйвер и падать с ошибками. Лучше удалять все пакеты из группы nvidia сразу.

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

Выполните команду pacman -Qs nvidia. Если результат пустой, и lspci -k показывает использование nouveau, значит, удаление прошло успешно. Также проверьте отсутствие файлов в /lib/modules/.../nvidia/.

Влияет ли удаление драйвера на работу других программ?

Программы, зависящие от CUDA или специфических библиотек OpenGL/Vulkan от NVIDIA, перестанут работать. Удаление драйвера не влияет на операционную систему в целом, но может сломать специализированное ПО для рендеринга и игр.