Ми}{@лbI4

Блог хеллоуворлдщика

Arch Linux + Nvidia + Suspend / Hibernation

04.06.2023 arch, linux, nvidia, suspend, hibernation

С появлением 6-ой версии Linux ядра, а возможно даже раньше, появилась проблема у пользователей Linux с проприетарными драйверами видеокарт Nvidia после ухода системы в suspend или hibernation. Как правило, пользователи наблюдают загруженную систему с черным экраном. Подозрение ложиться на то, что карточка не стартует после выхода из режима suspend или hibernation.

В инструкции по установке в wiki Arch Linux данная проблема не затрагивается. Возможно она решается настройкой Early loading модулей видеокарты. Я данный метод не пробовал и не тестировал, т.к. сначала нашел рабочее решение на форуме openSUSE, где подсказали о наличии служб, которые идут в комплекте с пакетом дров, но не активированы по умолчанию, т.к. являются экспериментальными. Скорее всего данные службы были добавлены из-за возникновения подобных проблем у части пользователей как временное решение. Поэтому они не активированы и поэтому экспериментальные.

UPD: "Early loading" не решает проблему.

Я включил три службы, которые мне необходимы для работы: nvidia-suspend, nvidia-hibernate и nvidia-resume. Если драйвера для видеокарты были установлены из репозиторий Arch Linux, то данные службы уже есть в системе и их нужно просто включить:

sudo systemctl enable nvidia-suspend
sudo systemctl enable nvidia-hibernate
sudo systemctl enable nvidia-resume

После этого все работает так, как и должно работать. И так все работало чуть больше года без каких-либо проблем, пока я не обновился в очередной раз 02 июля 2024 года.

После обновления и выхода из гибернации я стал наблюдать ошибку с Nvidia, и невозможность загрузить систему без перезагрузки. Ошибка выглядела как-то так: BUG: scheduling while atomic: irq/148-nvidia.... Долго рыскав по интернету в поисках ответов и где-то прочитав, что с драйверами Nvidia версий 535 таких проблем быть не должно, я решился на откат некоторых пакетов, что и решило проблему. Был выполнен откат пакетов nvidia до 550.90.07-4, nvidia-settings до 550.78-1, nvidia-utils до 550.90.07-3 и linux до 6.9.6. Я не стал откываться так далеко до 535-ой, а всего-лишь откатился до того дня, как выполнил злаполучное обновление пакетов. Хочу заметить, что ядро Linux также необходимо откатить до той версии, с которой будут работать двайвера nvidia. К сожалению, со свежим ядром старые драйвера не работают.

О том, как выполнить downgrade, можно прочитать в официальной дакументации к Arch Linux - https://wiki.archlinux.org/title/downgrading_packages

Спустя месяц я так и не дождался правок по драйверам Nvidia. Пакет linux уже имел вверсию 6.10.2 и я рисковал остаться без должной стабильной работы системы, если какие-то пакеты будут тоже завязаны на конкретной версии ядра. Поэтому было принято решение купить и установить видеокарту с графическим процессором от Amd, и не страдать. Это нужно было сделать изначально, но я почему-то по старой памяти отдал предпочтение Nvidia. В добавок с видеокартой от Amd я получил прекрасную возможность перейти c i3 на Hyprland, о чем уже не раз задумывался, но не мог осуществить из-за проблем с видеокартами от Nvidia.

Остальным же, кто набрел на эту статью, советую заменить видеокарту на Amd или не использовать проприетарные драйвера. Без проприетарных драйверов вполне можно жить. Мне они нужны были для более стабильного рендера изображения на экране монитора и для работы в Lightworks. Если для вас это не критично, то можете смело от них избавиться.