Гибернация Gentoo после обновления не работает

Вопрос или проблема

У меня проблема с гибернацией моего компьютера. Всё работало до обновления. Обновление установило Plasma 6 и драйверы nvidia.

После обновления следующая команда ничего не делает:

$ loginctl hibernate

Когда я отслеживаю это с помощью ltrace, я получаю следующий вывод:

$ ltrace loginctl hibernate
setlocale(LC_ALL, "")                                                                                                = "C"
elogind_set_program_name(0x7fffb8445a2d, 0x7f266b11bde0, 1, 0)                                                       = 0x7f266b135e08
log_setup(0x7fffb8445a2d, 0x7f266b11bde0, 1, 0)                                                                      = 0
rlimit_nofile_bump(0x80000, 0x7fffb84452c0, 11, 0x7f266b0a9874)                                                      = 0
sigbus_install(0, 7, 0, 0x8000000000000000)                                                                          = 0
getopt_long(2, 0x7fffb8445538, "hp:P:als:H:M:n:o:ci", 0x55aa2480b200, nil)                                           = -1
bus_connect_transport(0, 0, 0, 0x7fffb84453e0)                                                                       = 0
sd_bus_set_allow_interactive_authorization(0x55aa2482a2a0, 1, 128, 0x7f266b0a928b)                                   = 0
dispatch_verb(2, 0x7fffb8445538, 0x55aa2480b560, 0x55aa2482a2a0 <unfinished ...>
strcmp("halt", "hibernate")                                                                                          = -8
strcmp("poweroff", "hibernate")                                                                                      = 8
strcmp("reboot", "hibernate")                                                                                        = 10
strcmp("kexec", "hibernate")                                                                                         = 3
strcmp("suspend", "hibernate")                                                                                       = 11
strcmp("hibernate", "hibernate")                                                                                     = 0
geteuid()                                                                                                            = 1000
on_tty(0x55aa248068c5, 0x7fffb8445a36, 0x55aa2482a2a0, 0x7f266b07986b)                                               = 1
sd_bus_call_method(0x55aa2482a2a0, 0x55aa24806046, 0x55aa2480602e, 0x55aa24807968)                                   = 0xffffff92
polkit_agent_open_if_enabled(0, 1, 0x55aa24808270, 785)                                                              = 0
log_get_max_level(5, 0, 0, 0x7f266b096094)                                                                           = 6
sd_bus_call_method(0x55aa2482a2a0, 0x55aa24806046, 0x55aa2480602e, 0x55aa24807968)                                   = 0xffffff92
log_get_max_level(0x55aa2482a010, 0x55aa2482cd40, 0, 785)                                                            = 6
memset(0x7fffb8444f90, '\0', 1024)                                                                                   = 0x7fffb8444f90
_bus_error_message(0x7fffb8444f70, 0xffffff92, 0x7fffb8444f90, 0x7fffb8444f90)                                       = 0x7f266b13520d
log_internal(3, 0xffffff92, 0x55aa24807b89, 366)                                                                     = 0xffffff92
sd_bus_error_free(0x7fffb8444f70, 0x7fffb84443c0, 0, 0x7fffb8444f68)                                                 = 0
<... dispatch_verb resumed> )                                                                                        = 0xffffff92
polkit_agent_close(0x7fffb8444f70, 0x7fffb84443c0, 0, 0x7fffb8444f68 <no return ...>
--- SIGCHLD (Child exited) ---
<... polkit_agent_close resumed> )                                                                                   = 0
strv_free(0, 0xfd6b, 0, 0x7f266b091343)                                                                              = 0
sd_bus_flush_close_unref(0x55aa2482a2a0, 0xfd6b, 0, 0x7f266b091343)                                                  = 0
sd_notifyf(0, 0x55aa24806720, 110, 0x7f266b172b20)                                                                   = 0
polkit_agent_close(0x55aa2482a010, 0x55aa2482bf80, 0x55af7e20817b, 33)                                               = 0
pager_close(0, 0x55aa2482bf80, 0x55af7e20817b, 33)                                                                   = 0
mac_selinux_finish(0, 0x55aa2482bf80, 0x55af7e20817b, 33)                                                            = 0
+++ exited (status 1) +++

Есть ли идеи, где может быть проблема? Всё работало до этого обновления. Гибернация из меню “Пуск” тоже не работает.

Syslog выводит следующее:

# grep loginctl /var/log/everything/current 
17 ноя 09:47:44 [loginctl] Не удалось ввести систему в режим гибернации через elogind: Время соединения истекло

Что сейчас идет не так? Компьютер не переходит в режим гибернации.

ИЗМЕНИТЬ:

Команда echo disk > /sys/power/state также не включает гибернацию, хотя cat /sys/power/state выводит freeze mem disk.

Ответ или решение

Проблема с гибернацией в вашей системе, после обновления, связанного с установкой Plasma 6 и драйверов NVIDIA, может быть вызвана несколькими факторами. Давайте подробно рассмотрим возможные причины и методы их устранения.

1. Проверка конфигурации драйвера NVIDIA

Одной из наиболее частых причин, по которой гибернация не работает на системах с поддержкой видеокарт NVIDIA, является несовместимость драйвера. Убедитесь, что драйвера NVIDIA были корректно установлены и настроены:

  • Проверьте, что у вас установлены последние версии драйверов NVIDIA, совместимые с вашей версией ядра Linux. Используйте команду:
    emerge nvidia-drivers
  • Изучите dmesg на наличие сообщений об ошибках связанных с видеокартой:
    dmesg | grep nvidia

2. Проверка параметров конфигурации системы

Убедитесь, что ваша конфигурация для гибернации корректна:

  • Проверьте файл /etc/default/grub на наличие нужных параметров. Например, вам может потребоваться указать resume с UUID раздела свопа:

    GRUB_CMDLINE_LINUX="... resume=UUID=<uuid вашего свопа> ..."

    Не забудьте выполнить обновление конфигурации grub:

    grub-mkconfig -o /boot/grub/grub.cfg
  • Убедитесь, что раздел обмена (SWAP) активен и достаточно велик, чтобы содержать данные из оперативной памяти. Для этого выполните:

    swapon --show

    Для проверки объема свопа используйте:

    free -h

3. Проверьте настройки elogind

Согласно выводу ltrace, основная проблема связана с взаимодействием с elogind. Сообщение о тайм-ауте указывает на потенциальные проблемы с соединением:

  • Проверьте состояние службы elogind:
    systemctl status elogind
  • Если служба не запущена, попробуйте перезапустить её:
    systemctl restart elogind

4. Тестирование других методов гибернации

Вы упомянули, что команда echo disk > /sys/power/state также не работает. Убедитесь, что ваша система поддерживает гибернацию на уровне ядра. Проверьте доступные состояния:

cat /sys/power/state

Если вывод содержит только freeze и mem, это указывает на то, что гибернация не поддерживается текущим конфигом.

5. Работа с системным журналом

Чтобы получить больше информации о том, почему гибернация не срабатывает, проверьте системные журналы:

journalctl -xe | grep hibernate

Ищите сообщения, указывающие на ошибки или предупреждения, которые могут помочь в диагностике проблемы.

Заключение

Проблемы с гибернацией после обновлений могут быть довольно сложными и могут зависеть от множества аспектов. Следуя вышеуказанным шагам, вы сможете локализовать проблему и, возможно, решить её. Если ни одно из решений не помогло, рекомендуется обратиться к сообществу Gentoo или форумам поддержки для получения более специализированной помощи. Помните, что детальное описание вашей проблемы (например, вывод журналов и состояние службы) поможет другим быстрее предложить решение.

Оцените материал
Добавить комментарий

Капча загружается...