Я настроил новую установку Ubuntu в Notebook для использования файла подкачки вместо раздела подкачки.
По умолчанию невозможно перевести Ubuntu в спящий режим с помощью файла подкачки, поэтому я попробовал это руководство , но оно относится к grub1 , и теперь Ubuntu использует Grub2 .
Кто-нибудь знает, как это сделать?
Хотя возможно быть в спящем режиме к файлу подкачки, и это, предположительно, работает с systemd, в спящем режиме путем установки параметров ядра. Однако я не мог заставить это возобновляться так вместо этого переключенный на использование uswsusp (программное обеспечение пространства пользователя приостанавливают). Вот шаги, которые я использовал на Ubuntu 17.04/17.10.
Команды для создания отформатированного файла подкачки на 4 ГиБ, смонтированного и добавленного к /etc/fstab
:
sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
sudo apt install uswsusp
Создать /etc/uswsusp.conf
и воссоздайте initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
'Продолжаться без допустимой области подкачки?' (Мастер не файл подкачки набора все же.)findmnt
выше. (Note:not сам своп-файл) Примечание: Любые изменения, вручную внесенные в /etc/uswsusp.conf
потребует воссоздания initramfs
впоследствии с этой командой:
sudo update-initramfs -u
sudo s2disk
Должен быть snapshot
сообщения на экране на в спящем режиме и возобновляются.
По умолчанию systemd будет использовать свой собственный, в спящем режиме команды, так замените их командами uswusp путем переопределения systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
В текстовом редакторе, который открывается, помещает следующий текст (пустой ExecStart требуется). Затем сохраните и выйдите:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Это создаст /etc/systemd/system/systemd-hibernate.service.d/override.conf
файл с деталями переопределения.
systemctl hibernate
Примечание: Проверять что systemd override.conf
был создан, загружен и никакие ошибки, выполнен:
systemctl status systemd-hibernate.service
Ссылки:
Я быстро прочитал руководство и, если я правильно понял, вам просто нужно указать опции resume
в командной строке Linux. С Grub2 это действительно просто, и ваши изменения всегда будут сохранены. Вам нужно отредактировать файл /etc/default/grub
, а именно эту строку:
GRUB_CMDLINE_LINUX="resume=... resume_offset=..."
После этого запустите sudo update-grub
, чтобы изменения вступили в силу.
Изменение GRUB_CMDLINE_LINUX
не повлияет на другие ваши установки Linux (поскольку /etc/grub.d/30_os-prober
не использует эту переменную).
О проблеме, с которой вы столкнулись: зашифрован ли раздел файла подкачки? Если это так, гибернация не будет работать. Если нет, то вывод filefrag -v /swapfile
может оказаться полезным.
Вот то, что я сделал, чтобы заставить его работать с Ubuntu 18.04.
Сделайте Ваш /swapfile
имейте, по крайней мере, размер своей RAM
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | grep MemTotal | grep -oh '[0-9]*') count=1024 conv=notrun
sudo mkswap /swapfile
sudo swapon /swapfile
Отметьте UUID раздела, содержащего Ваш /swapfile
:
$ sudo findmnt -no SOURCE,UUID -T /swapfile
/dev/nvme0n1p5 20562a02-cfa6-42e0-bb9f-5e936ea763d0
Реконфигурируйте пакет uswsusp
для корректного использования своп-файла:
sudo dpkg-reconfigure -pmedium uswsusp
# Answer "Yes" to continue without swap space
# Select "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" replace the UUID with the result from the previous findmnt command
# Encrypt: "No"
Редактирование SystemD в спящем режиме сервисное использование sudo systemctl edit systemd-hibernate.service
и заполните его следующим содержанием:
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
Отметьте смещение резюме Вашего /swapfile
:
$ sudo swap-offset /swapfile
resume offset = 34818
Настройте Личинку для возобновления от своп-файла путем редактирования /etc/default/grub
и измените следующую строку:
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"
Личинка обновления:
sudo update-grub
Создайте следующее /etc/initramfs-tools/conf.d/resume
:
RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816
# Resume from /swapfile
Обновление initramfs:
sudo update-initramfs -u -k all
Теперь можно быть в спящем режиме с sudo systemctl hibernate
.
Можно также создать те сценарии:
sudo tee /usr/local/bin/gotosleep <<EOF
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
sleep 2
sudo /usr/sbin/s2both
EOF
sudo chmod +x /usr/local/bin/gotosleep
sudo tee /usr/local/bin/gotohibernation <<EOF
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
sleep 2
sudo systemctl hibernate
EOF
sudo chmod +x /usr/local/bin/gotohibernation
Таким образом, можно спать с gotosleep
или будьте в спящем режиме с gotohibernation
.
Необходимо смочь выполниться sudo s2both
, sudo s2ram
и sudo systemctl hibernate
не имея необходимость вводить Ваш пароль для предыдущих сценариев для работы.
Вы могли сделать это, например, путем создания a powerdev
группа, добавляет Ваш текущий пользователь к нему и настраивает следующую конфигурацию sudoers (отредактируйте его с sudo visudo -f /etc/sudoers.d/powerdev
):
%powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram, /bin/systemctl hibernate
Документация использовала: