Ми}{@л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, где подсказали о наличии служб, которые идут в комплекте с пакетом дров, но не активированы по умолчанию, т.к. являются экспериментальными. Скорее всего данные службы были добавлены из-за возникновения подобных проблем у части пользователей как временное решение. Поэтому они не активированы и поэтому экспериментальные.

Я включил три службы, которые мне необходимы для работы: 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