Вопрос или проблема
У меня проблема с гибернацией моего компьютера. Всё работало до обновления. Обновление установило 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 или форумам поддержки для получения более специализированной помощи. Помните, что детальное описание вашей проблемы (например, вывод журналов и состояние службы) поможет другим быстрее предложить решение.