ハイバネーションとは、ノートパソコンやデスクトップパソコンの現在の状態をハードドライブ(あるいはおそらく高性能SSD)に保存する省電力機能です。電源を入れると、ハイバネーションが起動し、作業に戻ります。編集長のAvram Piltch氏も、Linuxを1週間使ってみて問題に遭遇した経験があるはずです。
問題は?
休止状態はデフォルトで有効になっていないようです。ノートパソコンの蓋を閉じることはできますが、電源は切れず、Avramが作業を再開するために蓋を開けるか、数時間または数日間のスリープ後にバッテリーがゼロになるまで待つだけです。Avramの場合は後者の問題が発生し、それがこのハウツーを作成するきっかけとなりました。
今回解決する問題は、Ubuntu 搭載のノートパソコンでハイバネーション(休止状態)を起動することです。これは、電源メニューから、またはノートパソコンのカバーを閉じることで実行できます。そのためには、まずスワップイメージを作成し、マシンをハイバネーションできることをテストする必要があります。
先に進む前に、最新のバックアップがあることを確認してください。このようなプロジェクトでは、データ損失のリスクが常に存在するため、実行する前に必要な予防措置をすべて講じる必要があります。
スワップイメージの作成と休止状態のテスト
スワップイメージは、OSがシステムの現在の状態を保存する場所です。OSはRAMの内容をこのイメージにダンプし、ラップトップの電源を入れるまでそのイメージを使用して状態を保存します。スワップイメージのサイズは、搭載されているRAMの容量と同じになります。
それでは始めましょう!
1. ターミナルを開き、「free」コマンドを使ってマシンのRAM容量を確認します。既に容量は分かっているはずですが、念のため念のため確認しておきましょう。デフォルトでは、freeコマンドはRAMの容量をキロバイト単位で表示しますが、「-m」オプションを指定するとメガバイト単位で表示されます。また、使用中のスワップファイルやイメージファイルも表示されます。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
free
2. このコマンドを実行して、アクティブなスワップ ファイルまたはイメージを表示します。
swapon --show
3. 最初にスワップをオフにしてからファイルを削除して、スワップ イメージ/ファイルを削除します。
swapoff -a
rm /swap.img
rm swapfile
4. 「free」コマンドを実行し、スワップがゼロと報告されていることを確認します。
free
5. ユーザーを昇格させてsudo権限を使えるようにします。この権限を使用するコマンドには特に注意してください。
sudo su
6. dd を使用して、ルートディレクトリに swap.img ファイルを作成します。ここでは 8GB のスワップイメージ(count=8192)を作成していますが、これはマシンに搭載されている RAM に合わせて変更する必要があります。つまり、16GB の場合は 16384、32GB の場合は 32768 となります。
dd if=/dev/zero of=/swap.img count=8192 bs=1MiB
7. swap.img ファイルの権限を、所有者 (6) が読み取りおよび書き込み可能で、グループ (0) またはその他 (0) が読み取りおよび書き込みできないように設定します。
chmod 600 /swap.img
8. 新しく作成した swap.img ファイルを使用して Linux スワップ領域を設定します。
mkswap /swap.img
9. スワップを有効にします。
swapon /swap.img
10. free を使用して、スワップが有効になっていることを確認します。
free
11. Linuxのブートコマンドラインの指示を確認してください。これはブートプロセスを開始するために使用するコマンドです。
cat /proc/cmdline
12. テキストエディタを開き、コマンドラインの出力からUUIDをコピーしてテキストファイルに貼り付けます。ファイルをhibernation_details.txtとして保存します。UUID= //IMAGE// を忘れないようにしてください。
13. ターミナルで、物理オフセット(パーティション上のファイルが物理メモリ内で配置されている特定の位置)を探します。必要な数値は、返されたテーブルの4列目の先頭にあります。
filefrag -v /swap.img
14. 番号をテキスト ファイルにコピーして保存します。
15. Nano で grub ファイルを編集します。
nano /etc/default/grub
16. GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” で始まる行に移動し、splash の後の “ “ の中にスペースを入れます。
17. スプラッシュの後、「」内に次のテキストを入力します。UUIDとオフセットは、テキストファイルに保存されているご自身の値に合わせて変更してください。この手順の画像のようになります。
resume=UUID=YOUR UUID HERE resume_offset=YOUR OFFSET HERE”
18. CTRL+X、Y、Enter の順に押して、grub ファイルを閉じます。
19. 変更を有効にするために grub ファイルを更新します。
update-grub
20. コンピュータを再起動します。
reboot
21. コンピューターに再度ログインし、新しいターミナルでコマンドラインの変更が反映されていることを確認します。
cat /proc/cmdline
22. ターミナルで、システムで休止状態が有効になっていることを確認してください。有効になっている場合は、システムが電源をオフにします。この操作を試す前に、作業中のデータはすべて保存してください。
sudo systemctl hibernate
ターミナルからシステムを休止状態にできるようになりましたが、これはあまり便利ではないので、次は電源メニューから、およびラップトップの蓋が閉じられたときに休止状態をトリガーする方法に進みます。
標準の電源メニュー(デスクトップの右上)からは、ノートパソコンの電源を切ったり、再起動したり、ログアウトしたりすることはできますが、休止状態のオプションはありません。このセクションでは、休止状態の機能を追加し、動作をテストします。
1. ターミナルを開き、次のコマンドを実行して、休止状態ルールを含む新しいファイルを作成します。
sudo nano /etc/polkit-1/rules.d/10-enable-hibernate.rules
2. 次のテキストをコピーし、SHIFT + CTRL + V を押して nano に貼り付けます。
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.login1.hibernate" || action.id == "org.freedesktop.login1.hibernate-multiple-sessions" || action.id == "org.freedesktop.upower.hibernate" || action.id == "org.freedesktop.login1.handle-hibernate-key" || action.id == "org.freedesktop.login1.hibernate-ignore-inhibit") { return polkit.Result.YES; }
});
3. CTRL + X 、 Y 、 Enter の順に押してファイルを保存し、終了します。
4. Ubuntu(GNOME)をご利用の場合は、GNOME Shell拡張機能をインストールする必要があるため、GNOME Shellをインストールする必要があります。ターミナルを開き、次のコマンドを入力してください。
sudo apt update
sudo apt install chrome-gnome-shell
5.ブラウザでこのページを開き、GNOME Shell 拡張機能をインストールします。
6. 変更を有効にするためにラップトップを再起動します。
7. 再度ログインし、いくつかのアプリケーションを開いてみます。これで、休止状態が期待通りに機能していることを確認します。
8. 右上のメニューに移動し、アイコンをクリックしてから電源アイコンをクリックします。リストから「休止状態」を選択します。ノートパソコンは休止状態になり、電源ボタン/LEDが点滅してシステムの電源が切れていることを示します。
9. 電源ボタンを押して、ノートパソコンを休止状態から復帰させます。
10. 再度ログインすると、すべてのアプリケーションが元の状態になっていることがわかります。
サスペンドしてから休止状態にする方法
電源メニューには次のようなオプションがあることに気づいたかもしれません。
サスペンド:システムを低電力モードにして、現在の状態を RAM に保存します。
サスペンドしてから休止状態:システムは低電力モードに移行し、現在の状態を一定時間RAMに保存します。その後、システムは休止状態になり、状態がディスクに保存されます。
休止状態:現在の状態をディスクに保存します。
ハイブリッドスリープ:コンピューターはディスクとRAMの両方に同時にサスペンドします。高速な復帰速度(RAMサスペンド)を提供しながら、電源が切れた場合でもセッションは保護されます。
再起動:コンピュータを再起動します。
電源オフ:コンピューターの電源をオフにします。
ログアウト:現在のユーザーをログアウトし、ログイン画面に戻ります。
このリストで最も興味深いのは、「サスペンドしてからハイバネートする」です。前述の通り、サスペンド後にRAMにデータを保存するため、処理速度が向上しますが、しばらくするとシステムがハイバネート状態になり、状態がディスクに保存されます。会議室からオフィスへ移動する時や、一日の終わりに片付ける時などに便利です。
興味がない場合は、次のセクションに進んでください。もし興味があれば、以下の手順で設定できます。
サスペンドしてから休止状態を使用するには、設定ファイルを編集する必要があります。
1. ターミナルを開き、sudo を使用して設定ファイルを編集します。
sudo nano /etc/systemd/sleep.conf
2. リストを下にスクロールし、AllowSuspendThenHibernate から # を削除します。
3. リストを下にスクロールし、HibernateDelaySec= から # を削除し、= の後に値を追加します。テスト目的で1分を選択しましたが、必要に応じて60分などに変更してください。
4. CTRL + X 、 Y 、 Enter の順に押してファイルを保存し、終了します。
5. コンピュータを再起動して再度ログインします。
6. いくつかのアプリケーションを開き、電源メニューに移動して、「サスペンド」を選択し、「休止状態」を選択します。
7. 手順3で1分に設定した場合、コンピューターはRAMにサスペンドし、1分後に休止状態に移行します。この値は、必要に応じて適切な値に変更してください。
ノートパソコンの蓋を閉じると休止状態になる
休止状態を起動する最も簡単な方法は、ノートパソコンの蓋を閉じることです。仕事を終えて次の会議に向かう時、ふたを閉めて次の作業に移りたいですよね。先ほど設定したドロップダウンメニューのオプションは便利ですが、ノートパソコンの蓋を閉じるのは反射的な動作です。さあ、実際にやってみましょう!
1. ターミナルを開き、このコマンドを使用して新しいディレクトリを作成します。
sudo mkdir -p /etc/systemd/logind.conf.d
2. nano を使用して設定ファイルを作成します。
sudo nano /etc/systemd/logind.conf.d/lid-close-action.conf
3. 以下のテキストをコピーしてnanoに貼り付けます。nanoへの貼り付けはSHIFT + CTRL + Vキーで行えます。
[Login]
HandleLidSwitch=hibernate
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
4. CTRL + X 、 Y 、 Enter の順に押してファイルを保存し、終了します。
5. 変更を適用するには再起動します。
6. ログインし、いくつかのアプリケーションを開いてから蓋を閉じます。私のLenovo X390では、Thinkpadの「i」LEDが点滅し、ノートパソコンが状態を保存しているのが確認できます。その後、LEDは消灯し、ノートパソコンの電源が切れたことを示します。
7. 数秒待ってからノートパソコンのカバーを開けます。Ubuntuの起動プロセスが表示され、数秒後にログインできます。
8. デスクトップは終了した時点と同じ状態になっているはずです。