- Вопрос или проблема
- Чтобы включить гибернацию в 20.04:
- Использование устройства раздела вместо UUID
- Ответ или решение
- Предварительные требования
- Шаги по включению гибернации
- 1. Установка необходимых пакетов
- 2. Проверка состояния системы
- 3. Поиск UUID swap раздела
- 4. Редактирование конфигурационного файла GRUB
- 5. Обновление GRUB
- 6. Проверка работы гибернации
- Рекомендации
- Использование swap файла
- Заключение
Вопрос или проблема
Я попробовал различные способы включить режим гибернации в Ubuntu 20.04, но ничего не работает. Как мне включить опцию гибернации в Ubuntu 20.04?
Предполагаю, что у вас есть раздел подкачки, готовый к использованию (если у вас есть файл подкачки, вы не сможете использовать этот метод для гибернации). Следуйте этим шагам:
-
Установите
pm-utils
иhibernate
:sudo apt install pm-utils hibernate
-
Затем:
cat /sys/power/state
Вы должны увидеть:
freeze mem disk
-
Затем выполните одну из следующих команд:
grep swap /etc/fstab blkid | grep swap
И скопируйте значение
UUID
. Оно вам потребуется позже. -
Затем выполните (используйте ваш любимый текстовый редактор, если это не
nano
):sudo nano /etc/default/grub
-
Измените строку, которая выглядит так:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
так, чтобы она выглядела так:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<ВАШ_СКОПИРОВАННЫЙ_UUID>"
Будьте осторожны, не пропустите часть
UUID=
. -
Затем, после сохранения файла и выхода из текстового редактора, выполните:
sudo update-grub
-
Чтобы протестировать это, выполните:
sudo systemctl hibernate
Это расширение, похоже, позволяет отображать пункт меню “Гибернация”, но изменяет общий вид этого подменю: https://extensions.gnome.org/extension/3070/simpler-off-menu/ .
Проверено на Ubuntu 20.04 с использованием версии ядра 5.4.0-31 на моем Lenovo ThinkPad X1 Carbon.
Если вы хотите использовать /swapfile для гибернации вместо раздела подкачки:
Топ-соответствующий ответ работает хорошо, но вам не нужно использовать раздел, вы также можете использовать файл подкачки по умолчанию /swapfile
.
Прежде всего, вам следует увеличить размер /swapfile как минимум до размера вашей оперативной памяти.
-
Установите зависимости:
sudo apt install pm-utils hibernate uswsusp
-
Найдите ваш UUID и смещение подкачки:
findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
Вы увидите что-то вроде этого:
371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume offset = 23888916
-
Отредактируйте
/etc/default/grub
и замените строку:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
на ваш UUID и смещение:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume_offset=23888916"
-
Обновите GRUB:
sudo update-grub
-
Проверьте вашу гибернацию:
sudo systemctl hibernate
Вероятно, вам не следует изменять размер вашего раздела подкачки после включения гибернации (по крайней мере, без изменения swap-offset
в GRUB).
Смотрите вики для получения более подробной информации.
ДОПОЛНИТЕЛЬНЫЙ БОНУС: Если вы хотите гибернировать при закрытой крышке ноутбука (см. это):
-
Отключите любые параметры в настройках, которые касаются крышки ноутбука, установите их на “ничего не делать”.
-
Выполните:
sudo mkdir -p /etc/acpi/events/ && sudo nano /etc/acpi/events/laptop-lid
и вставьте:
event=button/lid.* action=/etc/acpi/laptop-lid.sh
-
Выполните:
sudo touch /etc/acpi/laptop-lid.sh && sudo chmod +x /etc/acpi/laptop-lid.sh && sudo nano /etc/acpi/laptop-lid.sh
и вставьте:
#!/bin/bash LOG_FILE='/var/log/laptop-lid.log' touch $LOG_FILE && chmod 0666 $LOG_FILE grep -q closed /proc/acpi/button/lid/LID/state if [ $? = 0 ] then # действие закрытия echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): закрыта" >> $LOG_FILE systemctl hibernate else # действие открытия echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): открыта" >> $LOG_FILE fi
-
Выполните:
sudo /etc/init.d/acpid restart
И если вы хотите включить гибернацию в вашем Ubuntu 20.04*,
следуйте этим шагам:
-
Сначала убедитесь, что вы выделили память подкачки на вашем компьютере, чтобы проверить:
swapon --show
-
Затем проверьте, является ли выделенная вами память подкачки больше или хотя бы равной физической памяти (ОП).
-
Используйте следующую команду, чтобы найти раздел подкачки:
grep swap /etc/fstab
-
Скопируйте UUID из вывода, например (
UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY
). -
Добавьте параметр загрузки с помощью следующей команды:
sudoedit /etc/default/grub
-
В строке, начинающейся с
GRUB_CMDLINE_LINUX_DEFAULT
, добавьте:resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY
Примечание: Во всех остальных ветках они обычно просят добавить раздел подкачки, но здесь мы добавляем значение UUID.
Последняя строка будет выглядеть так:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY"
-
Обновите файл:
sudo update-grub
-
sudo systemctl hibernate
и теперь гибернация будет работать в вашем Ubuntu 20.04.
Решение eldwist сработало для меня, за исключением…
…не сразу, потому что я получил следующую ошибку:
$ sudo systemctl hibernate
Не удалось включить гибернацию системы через logind: Глагол сна не поддерживается
Если вы получили эту ошибку, вам, вероятно, нужно отключить безопасную загрузку в меню безопасности UEFI/BIOS (см. аналогичную проблему с 16.04). Затем это сработало для меня (тестировалось на Ubuntu 20.04; ядро 5.4.0-33, настроенное для двойной загрузки с Win10).
Чтобы включить гибернацию в 20.04:
Все примеры на этой странице, похоже, пропускают resume-offset
, он необходим при использовании файла подкачки вместо раздела подкачки.
Увеличьте размер swapfile
, чтобы он соответствовал размеру ОП до 8ГБ.
-
Проверьте используемую память подкачки:
sudo swapon -s
-
Если найдены разделы подкачки:
sudo swapoff -a sudo nano -Bw /etc/fstab
-
Добавьте
#
передUUID
разделов подкачки:# UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap sw 0 0
-
Добавьте строку для
swapfile
, если таковой нет:/swapfile none swap sw 0 0
-
Создайте
swapfile
:sudo fallocate -l XG /swapfile*
где
X
– это размерswapfile
в ГБ:sudo mkswap /swapfile sudo chmod 0600 /swapfile sudo swapon /swapfile
-
Перезагрузите:
sudo reboot
Добавьте местоположение и смещение resume
в grub.cfg
:
-
Отредактируйте
/etc/default/grub
:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
-
Используйте
UUID
из корневого раздела. -
Используйте смещение из:
sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'
-
Обновите GRUB:
sudo update-grub
-
Проверьте гибернацию:
sudo systemctl hibernate
Кнопку гибернации можно добавить с помощью расширений GNOME.
Обратите внимание, что существует небольшая вероятность появления “дыр” в swapfile
при его создании с помощью fallocate
. В /var/log/syslog
можно поискать фразу swapon: swapfile has holes
, чтобы убедиться, что не будет потери данных.
Файл подкачки можно также создать с помощью dd
:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
Ошибка при использовании dd
может перезаписать ваш HDD.
Я только что добавил сочетание клавиш. Я отключил Super+H, так как он мне не нужен (по умолчанию это действие – скрыть окно) и создал новое сочетание с командой:
systemctl hibernate
Ответ SuRa вверху работает отлично, однако, если ваш ноутбук поставляется с файлом подкачки вместо раздела подкачки , вам придется выполнить несколько шагов вначале, чтобы все это работало. В общем:
- Загрузитесь с живого CD/USB-накопителя, уменьшите ваш основной раздел на объем памяти, который у вас есть, плюс 1-2 ГБ на запас. Например, у меня 16 ГБ, поэтому я уменьшил свой раздел на 18 ГБ для надежности. Это оставит свободное/незанятое пространство на вашем диске.
- Создайте новый раздел типа swap в свободном/незанятом пространстве на вашем диске.
- Перезагрузитесь в установленную операционную систему (т.е. без живого CD/USB).
- Перейдите в “разделы” или “gparted”, чтобы получить UUID вашего нового раздела подкачки.
- Добавьте новый раздел подкачки к
/etc/fstab
и удалите (или закомментируйте) старый файл подкачки . - Используйте команды
swapoff
иswapon
, чтобы перейти с файла подкачки на раздел подкачки . - Не забудьте удалить файл подкачки , чтобы вернуть это пространство.
- Теперь вы можете следовать инструкциям SuRa.
Использование устройства раздела вместо UUID
Мне пришлось немного отклониться от “как сделать” выше, вероятно, так как я зашифровал свой жесткий диск. Мой файл /etc/fstab
не содержит UUID для раздела подкачки, а содержит устройство раздела.
Если ваш /etc/fstab
содержит <partition_device>
вместо UUID для раздела подкачки, отредактируйте строку, начинающуюся с GRUB_CMDLINE_LINUX_DEFAULT
в файле /etc/default/grub
, чтобы она содержала resume=<partition_device>
Пример:
если /etc/fstab
содержит это
# <файловая система> <точка монтирования> <тип> <параметры> <дамп> <проход>
/dev/mapper/ubuntu--vg-swap_1 none swap sw 0 0
то /etc/default/grub
должно содержать строку
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/ubuntu--vg-swap_1"
Затем выполните sudo update-grub
и протестируйте, выполнив sudo systemctl hibernate
Ответ или решение
Как включить опцию гибернации в Ubuntu 20.04: Подробная Инструкция
Гибернация — это функция управления питанием, которая позволяет сохранить состояние вашей операционной системы на жестком диске перед выключением компьютера, чтобы вы могли быстро вернуться к работе позже. В данном руководстве мы подробно разберем, как активировать гибернацию в Ubuntu 20.04, а также уберем возможные преграды на этом пути.
Предварительные требования
Прежде чем начать, убедитесь, что у вас:
- Есть swap раздел: Для успешной гибернации требуется swap пространство, размер которого должен быть не менее равен объему оперативной памяти (RAM) вашего устройства.
- Понимание командной строки: Данный процесс подразумевает использование терминала.
Шаги по включению гибернации
1. Установка необходимых пакетов
Для начала установим несколько утилит, которые помогут управлять гибернацией:
sudo apt update
sudo apt install pm-utils hibernate
2. Проверка состояния системы
Следующим шагом проверьте доступные состояния управления энергией:
cat /sys/power/state
В выводе вы должны увидеть следующую строку: freeze mem disk
.
3. Поиск UUID swap раздела
Для поиска UUID вашего swap раздела выполните следующее:
grep swap /etc/fstab
или
blkid | grep swap
Скопируйте значение UUID, так как оно потребуется позже.
4. Редактирование конфигурационного файла GRUB
Откройте файл конфигурации GRUB:
sudo nano /etc/default/grub
Найдите строку:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Измените её на следующую:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<Ваш_UUID>"
Не забудьте заменить <Ваш_UUID>
на полученное ранее значение.
5. Обновление GRUB
После внесения изменений сохраните файл и выполните команду для обновления настройки GRUB:
sudo update-grub
6. Проверка работы гибернации
Теперь вы можете протестировать вашу настройку, выполнив следующую команду:
sudo systemctl hibernate
Если всё выполнено правильно, система должна перейти в режим гибернации.
Рекомендации
Если у вас не прокладывается путь через дальнейшие действия (например, при возникновении ошибки), проверьте:
- Режим безопасной загрузки: Убедитесь, что у вас отключен режим Secure Boot в UEFI/BIOS.
- Размер swap: Если вы используете swap файл вместо swap раздела, вам потребуется выполнить дополнительные шаги, чтобы настроить UUID и offset.
Использование swap файла
Если вы хотите использовать swap файл вместо swap раздела, убедитесь, что его размер соответствует размеру RAM. Затем вам необходимо будет выполнить следующие действия:
- Найдите UUID и смещение swap файла:
findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
- Обновите строку в
GRUB
, как и в предыдущем шаге, но добавьтеresume_offset
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<Ваш_UUID> resume_offset=<Ваш_сдвиг>"
Заключение
Теперь в вашей Ubuntu 20.04 должен быть доступен режим гибернации. Если вы хотите добавить кнопку для быстрого перехода в режим гибернации, вы можете воспользоваться расширениями GNOME. Если у вас возникли проблемы или дополнительные вопросы, не стесняйтесь обращаться за помощью к сообществу.