スワップパーティションを使用する代わりに、スワップファイルを使用するようにノートブックで新しいUbuntuインストールを構成しました。
デフォルトでは、スワップファイルを使用してUbuntuを休止状態にすることはできないため、 このチュートリアル を試しましたが、これはgrub1、Ubuntuはgrub2を使用するようになりました。
誰もこれを行う方法を知っていますか?
ただし、ファイルをスワップするために休止状態にすることは可能ですが、カーネルパラメータを設定することでsystemdの休止状態で動作するはずです。ただし、再開することができなかったため、代わりにuswsusp(ユーザースペースソフトウェアサスペンド)を使用するように切り替えました。 Ubuntu 17.04/17.10で使用した手順は次のとおりです。
マウントされ、/etc/fstab
に追加され、フォーマットされた4GiBスワップファイルを作成するコマンド:
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 /mnt/4GiB.swap
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Sudo apt install uswsusp
/etc/uswsusp.conf
を作成し、initramfs
を再作成するには:
Sudo dpkg-reconfigure -pmedium uswsusp
Yes
to '有効なスワップスペースなしで続行しますか?'(ウィザードはまだスワップファイルを設定していません。)findmnt
の詳細と相互参照します。 (注:notスワップファイル自体)注:/etc/uswsusp.conf
に手動で加えられた変更は、このコマンドで後でinitramfs
を再作成する必要があります:
Sudo update-initramfs -u
Sudo s2disk
休止状態および再開時に画面にsnapshot
メッセージが表示されます。
デフォルトでは、systemdは独自のhibernateコマンドを使用するため、systemd-hibernate.service
をオーバーライドしてuswuspコマンドに置き換えます。
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
参照:
これが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
/swapfile
を含むパーティションのUUIDに注意してください。
$ 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"
Sudo systemctl edit systemd-hibernate.service
を使用してSystemD hibernateサービスを編集し、次のコンテンツを入力します。
[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を設定し、次の行を変更します。
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"
Grubの更新:
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
を実行できる必要があります。
たとえば、powerdev
グループを作成し、現在のユーザーをそのグループに追加して、次のsudoers構成を構成します(Sudo visudo -f /etc/sudoers.d/powerdev
で編集します)。
%powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram, /bin/systemctl hibernate
使用したドキュメント:
チュートリアルを簡単に読みましたが、正しく理解できた場合は、Linuxコマンドラインにresume
オプションを指定するだけで済みます。 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
の出力が役立つ場合があります。