Вопрос или проблема
Здесь Lubuntu 18.04 (lxde) на базе AMD Epyc 7282. Ядро 4.15.
Система стабильна и работает безупречно, но отказывается переходить в режим ожидания.
Если я пытаюсь перевести систему в режим ожидания, экран гаснет, но система не выключается.
На этом этапе, если нажать клавишу или переместить мышь, ничего не происходит. Если нажать кнопку питания, система “просыпается”, показывая экран входа, а затем все приложения в том состоянии, в котором они были оставлены.
Гибернация полностью отсутствует.
Обратите внимание, что Epyc Rome не поражена печально известной ошибкой RDRAND, которая затрагивает Ryzen 3000 и вызывает проблемы с переходом в режим ожидания.
EDIT: Я использовал систему несколько дней с высокой нагрузкой и могу подтвердить её стабильность, но если оставить её гасить монитор, невозможно её разбудить… Нужно подключиться по ssh и сбросить систему.
EDIT(II): Пример вывода для journalctl -u systemd-suspend.service
:
gen 25 04:33:52 epyc systemd[1]: Starting Suspend...
gen 25 04:33:52 epyc systemd-sleep[1743]: Suspending system...
gen 25 04:34:36 epyc systemd-sleep[1743]: System resumed.
gen 25 04:34:36 epyc systemd-sleep[1743]: /dev/sda:
gen 25 04:34:36 epyc systemd-sleep[1743]: устанавливается уровень Advanced Power Management до 0xfe (254)
gen 25 04:34:36 epyc systemd-sleep[1743]: APM_level = 254
EDIT (III): Мне удастся перевести систему в гибернацию с помощью uswsusp
, явно указав устройство восстановления, то есть раздел подкачки:
sudo s2disk -r /dev/sda1
В таком состоянии система выключается, показывая SNAPSHOTTING THE SYSTEM...
Если я включу питание, система загружается, говоря RESUMING FROM HIBERNATION...
но затем просто отображает рабочий стол, без каких-либо следов оставленных приложений. Я изучу логи и сообщу об этом.
Известно, что некоторые ACPI BIOS могут быть проблемными в Linux, и это может не работать на всех системах. Я полагаю, что гибернация отключена по умолчанию в версиях Ubuntu. Проверьте и убедитесь, что файл /etc/default/grub
содержит параметр resume
в строке GRUB_CMDLINE_LINUX_DEFAULT=
в начале файла. Чтобы быстро проверить, введите в терминале:
head -n 15 /etc/default/grub
Строка должна выглядеть примерно так:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=26623446-028a-415d-e685-8adc53740282"
Если значение resume содержит resume=/dev/sda1
, я бы предложил изменить его на UUID. Идентификатор устройства “/dev/sda1” не всегда является постоянным и может измениться при добавлении нового диска в систему. UUID останется уникальным. Чтобы найти номер UUID# вашего раздела подкачки:
lsblk -o +uuid | grep -i swap
Как хорошая практика, создайте резервную копию оригинального файла перед изменениями.
sudo cp /etc/default/grub /etc/default/~grub.bak.`date '+%Y-%m-%d'`
Если вы внесли изменения в файл /etc/default/grub
, необходимо обновить конфигурацию grub:
sudo update-initramfs -u
Прочитайте вывод и убедитесь, что initramfs resume hook указывает на правильный раздел.
Затем
sudo update-grub
Затем попробуйте перевести систему в гибернацию:
sudo systemctl hibernate
Если система немедленно выходит из этого состояния, войдите в систему и прочитайте dmesg
, чтобы увидеть последние ошибки [PM] и просмотрите логи, чтобы найти возможную проблему.
У меня была точно такая же проблема.
Я не мог заставить работать “systemctl suspend”,
однако есть другое решение:
$ sudo pm-suspend
Оно просто работает без дополнительных ручных настроек.
.
Ответ или решение
Теория
Проблемы с переходом в режим сна и гибернации на серверных платформах, таких как AMD Epyc 7282, встречаются достаточно часто, особенно на более старых версиях ядра Linux и менее распространённых дистрибутивах. Любуне 18.04 с ядром 4.15 может сталкиваться с проблемами особенного характера, связанными как с совместимостью драйверов, так и с конфигурацией системы управления питанием на уровне BIOS и ACPI.
Технологии управления питанием
-
Suspend (S3/Suspend-to-RAM): Режим, при котором большинство компонентов системы переводятся в режим энергосбережения, но оперативная память продолжает питаться, что позволяет быстро восстановить состояние системы.
-
Hibernate (S4/Suspend-to-Disk): Данные оперативной памяти записываются на жесткий диск или SSD, и система полностью выключается. При старте система восстанавливает своё состояние, считывая данные из файла гибернации.
-
ACPI (Advanced Configuration and Power Interface): Интерфейс для управления питанием, именно его неправильная работа часто становится источником проблем с режимами сна и гибернации.
Пример
В предоставленной проблеме пользователь сталкивается с тем, что система не переходит в режим сна, не реагируя на движения мыши и нажатия клавиш. Единственный способ "разбудить" систему – нажатие кнопки питания. Это может быть результатом неправильной обработки ACPI событий на уровне BIOS или конфликта в ядре системы.
Выводы из journalctl -u systemd-suspend.service
показывают, что система действительно пытается перейти в спящий режим, но сразу же "просыпается", не завершая этот процесс корректно. Это указывает на возможное несоответствие между ожиданием программного обеспечения и поддерживаемыми режимами оборудования.
Применение
-
Операционная система и ядро:
- Рассмотрите возможность обновления ОС и ядра. Любуне 18.04 и ядро 4.15 устарели. Более новые версии ядра могут включать исправления и улучшения управления питанием, которые решат вашу проблему.
-
Настройки GRUB:
- Проверьте файл
/etc/default/grub
на наличие строкиresume=UUID=...
. Если используется указание на/dev/sda1
, это следует заменить на UUID, чтобы избежать проблем с идентификатором устройства, который может изменяться. - Не забудьте выполнить команды
sudo update-initramfs -u
иsudo update-grub
после изменений.
- Проверьте файл
-
Инструменты востребования гибернации и сна:
- Попробуйте использовать
pm-suspend
, это альтернативный способ перевода системы в режим сна, который может обойти ограниченияsystemctl suspend
. - Также, попробуйте гибернацию с помощью
uswsusp
с определением устройства восстановления:sudo s2disk -r /dev/sda1
.
- Попробуйте использовать
-
Проверка ACPI и BIOS:
- Обновите BIOS до последней версии, так как возможно исправление ошибок ACPI.
- Проверьте и установите настройки ACPI в BIOS, убедитесь, что поддерживаются все необходимые режимы сна.
-
Логирование и диагностика:
- Используйте команды
dmesg
иjournalctl
для детального анализа ошибок при переходе в спящий режим, обращая внимание на метки [PM] (Power Management). - Проверьте журналы системы на наличие ошибок ACPI и других параметров конфигурации.
- Используйте команды
-
Совместимость оборудования:
- Убедитесь, что все компоненты системы, особенно периферийные устройства и драйверы, совместимы с текущими версиями ядра и поддерживают S3/S4.
-
Конфигурация Swap:
- Удостоверьтесь, что размер swap-раздела достаточен для хранения содержимого оперативной памяти (рекомендовано иметь размер swap равный или больше оперативной памяти).
Если данные рекомендации не приведут к успешному решению проблемы, также можно рассмотреть возможность обращения за помощью в специализированные форумы или поддержке дистрибутива, с предоставлением всех собранных логов и деталей конфигурации системы.