Вернулся в режим гибернации, но не может выйти из спящего режима


10

В моем Ubuntu 12.04 опция гибернации работала хорошо и нормально. Однако недавно я установил Debian на другой раздел, и когда я снова попытался загрузиться в Ubuntu, на заставке загрузки появилось сообщение:

Дисковод для / еще не готов или отсутствует. Продолжать ждать; или нажмите s, чтобы пропустить монтаж, или M, чтобы восстановить вручную.

После входа в Ubuntu я обнаружил, что моя опция гибернации пропала.

Есть ли вообще способ восстановления режима гибернации?

РЕДАКТИРОВАТЬ: я решил проблему с дисководом, и я вернул вариант гибернации. Когда я сделал «sudo pm-hibernate», моя система перешла в режим гибернации. Однако при повторном включении он загружался нормально и, следовательно, не находился в состоянии гибернации.

Как это можно исправить?

РЕДАКТИРОВАТЬ1: Система - Lenovo IdeaPad S10-2.

введите описание изображения здесь

РЕДАКТИРОВАТЬ 2: / etc / fstab

введите описание изображения здесь

EDIT3: Скриншот моего жесткого диска.

введите описание изображения здесь

Ответы:


12

Я предполагаю, что вы установили Debian таким образом, чтобы он использовал свой отдельный раздел подкачки. Если у вас нет, я бы предложил сделать это (создать другой раздел подкачки и соответственно изменить /etc/fstabфайлы), поскольку слишком разные операционные системы, выполняющие запись в один и тот же раздел подкачки, могут отбрасывать данные гибернации, хранящиеся в разделе другой ОС.

Затем вы должны убедиться, что ОС, в которой вы хотите использовать спящий режим (обычно обе), записывает данные в правильный раздел. Это настраивается в /etc/initramfs-tools/conf.d/resumeфайле. Вы должны поместить туда UUID правильного раздела подкачки (используйте sudo blkid /dev/$device_nameдля получения UUID). Наконец, вам необходимо обновить начальный виртуальный диск:

sudo update-initramfs -u -k all

Это должно исправить это.


1
Это работало отлично. Спасибо, я вернул свою зимнюю спячку. :)
harisibrahimkv

1
У меня тоже были проблемы с выходом из спящего режима. После того, как я каким-то образом изменил UUID моего раздела подкачки, моя система не возобновляла работу, что бы я ни делал. Исправление моего /etc/initramfs-tools/conf.d/resume путем вставки копии UUID из, sudo blkidпохоже, решило проблему.
TSJNachos117

2

К сожалению, во многих случаях hibernate не работает, что может привести к потере данных, если вы ожидаете, что ваши документы и приложения будут открываться заново при включении компьютера. Поэтому режим гибернации по умолчанию отключен.

Проверьте, работает ли спящий режим

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

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

  1. Откройте Терминал, нажав Ctrl+ Alt+ Tили ища терминал в Черте.

  2. Введите sudo pm-hibernateв терминал и нажмите Enter.
    Введите ваш пароль при появлении запроса.

  3. После выключения компьютера включите его снова. Ваши открытые приложения повторно открылись?

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

Включить спящий режим

Если тест гибернации работает, вы можете продолжать использовать sudo pm-hibernateкоманду, когда хотите перейти в спящий режим.

Вы также можете включить режим гибернации в меню. Для этого используйте ваш любимый текстовый редактор для создания /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla. Добавьте следующее в файл и сохраните:

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate; org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes

Перезагрузка и гибернация возвращается!

Или запустить, killall unity-panel-serviceчтобы просто сбросить меню.

Некоторым пользователям потребуется запустить, sudo update-grubчтобы получить доступ к опции гибернации в меню питания. Некоторым пользователям также может потребоваться, по крайней мере, выйти из системы, а затем войти в нее, чтобы она появилась в (верхнем правом) меню питания.

Источник : Ubuntu Docs - Power Hibernate

Источник : Ubuntu Wiki - Отладка ядра Hibernate


0

Попробуйте добавить nobootwaitопцию к /etc/fstab, что-то вроде этого:

/dev/sda1 / ext4 rw,nobootwait 0 1


Не могли бы вы уточнить это? В моем / etc / fstab есть следующая запись для раздела подкачки: # swap был включен / dev / sda8 во время установки UUID = 08a07061-165b-4f0a-87c3-470a02d1ea4c none swap sw 0 0 Должен ли я изменить «sw» на «rw, nobootwait "?
harisibrahimkv

Вам нужно добавить его в корневую точку монтирования, а не в своп. Опубликуйте свой полный fstab, и я выложу вам обновленную версию.
Frantique

Я добавил это к вопросу.
harisibrahimkv

1
ошибки = remount-ro, nobootwait
Frantique

0

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

Вам нужно как минимум столько же подкачки, сколько у вас есть оперативной памяти. Если у вас много оперативной памяти, установите swappiness = 0 . Поэтому, если у вас 8 ГБ ОЗУ, используйте 8,5 или 9 ГБ подкачки. Если у вас 4 ГБ ОЗУ, то 6 ГБ подкачки - это хорошее число.


У меня 1 ГБ ОЗУ и 1,95 ГБ подкачки. Обновленный вопрос со скриншотом моего жесткого диска.
harisibrahimkv

0

Насколько я знаю, в Linux, включая Ubuntu, должно быть установлено пространство подкачки 2x RAM.

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

Если вы думаете, что своп замедляет вас, вы можете использовать этот скрипт, который я нашел в интернете. Чистит своп.

#!/bin/bash

free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    swapoff -a
    swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi

У меня есть 2x место подкачки. Спасибо за предложение.
harisibrahimkv
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.