Ноутбук на Linux уходит в сон, но при пробуждении показывает чёрный экран — типичный признак того, что стандартный режим приостановки ядра не подходит вашему железу, и его поведение нужно переопределить через параметры ядра или настройки systemd. Чаще всего проблема связана с выбором состояния сна: современные платформы Intel и AMD используют s2idle, тогда как многие дистрибутивы по умолчанию ориентируются на классический режим deep (suspend-to-RAM).

В этой статье разберём, как определить текущий режим приостановки, переопределить его через параметры ядра и конфигурацию systemd-sleep, а также как отладить зависания при входе в сон и выходе из него. Все шаги обратимы и не требуют перепрошивки или модификации оборудования.

Как ядро Linux реализует приостановку

Ядро Linux поддерживает несколько состояний сна, которые перечислены в файле /sys/power/state. Основные из них: freeze (минимальное энергосбережение без отключения устройств), mem (suspend-to-RAM, содержимое памяти сохраняется, питание большинства компонентов отключается) и disk (гибернация, образ памяти записывается на диск).

Режим mem сам по себе имеет внутренние варианты, перечисленные в /sys/power/mem_sleep. Текущий активный вариант выделен квадратными скобками. Именно здесь чаще всего и требуется переопределение: если прошивка материнской платы некорректно поддерживает S3 (режим deep), система может зависать или мгновенно просыпаться.

  • 🔍 s2idle — лёгкий сон, процессор остаётся в состоянии низкого энергопотребления, пробуждение почти мгновенное.
  • 💤 shallow — промежуточный вариант, зависит от поддержки платформы.
  • 🛌 deep — классический suspend-to-RAM через ACPI S3, максимальная экономия заряда.
  • 💾 disk — гибернация, требует настроенного swap достаточного объёма.

Диагностика: определяем текущий режим

Прежде чем что-то переопределять, проверьте, какие режимы доступны на вашей машине и какой активен сейчас. Для этого достаточно двух команд в терминале:

cat /sys/power/state

cat /sys/power/mem_sleep

Вывод второй команды покажет список вариантов, например s2idle [deep] — это означает, что система использует deep. Если в квадратных скобках стоит s2idle, а ноутбук быстро разряжается в закрытом состоянии, возможная причина — слишком «лёгкий» сон. Обратная ситуация: при deep машина не просыпается — тогда стоит попробовать переключиться на s2idle.

Дополнительно полезно посмотреть журнал последнего цикла сна. Команда journalctl -b -u systemd-suspend.service покажет, на каком этапе произошёл сбой — при входе в сон или при пробуждении. Если журнал обрывается на этапе входа, подозрение падает на конкретный драйвер устройства.

💡

Перед любыми изменениями сохраните вывод команд cat /sys/power/state и cat /sys/power/mem_sleep в текстовый файл — так вы всегда сможете вернуться к исходной конфигурации.