Ubuntu 16.04を正常に休止状態にするにはどうすればよいですか?
私はウェブ上のほとんどすべてのソリューションを試しましたが、それらのどれも実際には役に立ちませんでした。私の問題は this one とほぼ完全に似ていることがわかりました
使用できます
Sudo pm-hibernate
システムで休止状態が機能するかどうかを確認するには(これにより、コンピュータが休止状態になります)。
動作しない場合は、スワップサイズが少なくともRAMと同じかどうかを確認してください。
設定メニューにオプションを追加するには、構成ファイルを作成できます。ターミナルウィンドウを開き、次のコマンドを実行します。
Sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
空のファイルでnanoを開きます。以下の行をコピーして、nanoウィンドウに貼り付けます。
[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.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
次に、変更を保存してnanoを閉じ、システムを再起動して、「電源オプション」にHibernateを使用可能にします。
参照: コンピューターを休止状態にする方法は? Ubuntu 16.04の公式ドキュメント。
それがうまくいくことを願っています。他のすべてのオプションを試した後、これは私のために働いた。
systemctl
を使用して休止状態にし、困難な場合に機能させる私にとって、pm-hibernate
は常に失敗します。いくつかの微調整の後、systemdのインターフェイス(16.04以降の初期システム)を使用して休止状態にすることができました。また、17.04でスワップファイルを使用して動作させることもできました。このケーススタディは、問題を抱えている他の人に役立つかもしれません。
初挑戦:
Sudo systemctl hibernate
それが失敗した場合は、トラブルシューティングを開始します。休止状態(HTDまたはACPI S4)では、マシンの状態がディスクに書き込まれるため、保存するために電力は必要ありません。状態は、スワップパーティションまたはスワップファイルのいずれかに書き込まれます。 注:BTRFSを使用している場合、ファイルシステムの破損を引き起こす可能性があるため、スワップファイルを使用しないでください
休止状態を許可するには、スワップパーティションまたはスワップファイルをRAMと同じサイズにする必要がありますが、少なくともRAMのサイズの2/5であれば休止状態にできる可能性が高くなります。 Arch wikiページ に従って、スワップサイズを増やす前に他の手順を最初に試してください。
問題が、予想される再開ではなくクリーンブートを取得することである場合、少なくともディスクイメージを見つけるためにブートパラメーターを設定する必要があります
スワップパーティションを見つけます。
grep swap /etc/fstab
私にとっては、これは(部分的な出力)を返します
# swap was on /dev/mmcblk0p3 during installation
ここで、/dev/mmcblk0p3
は指定するパーティションです
ブートパラメータを追加します。
sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT
で始まる行に、resume=/dev/YourSwapPartition
を引用符で囲んだセクションに追加します(前に特定したパーティションに置き換えます)。私の例を使用して:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mmcblk0p3"
このファイルを変更するたびに、Sudo update-grub
を実行する必要があります。そうしないと、変更は効果がありません。
次に、再起動する必要があります。次に、次のコマンドを発行して、休止状態を試みることができます。
Sudo systemctl hibernate
再開するには、電源ボタンを押すとシステムが起動します。
それでも問題が解決しない場合は、デバッグを開始してください。
例として以下のケースを含めますが、S状態のデバッグに関する詳細情報は このブログで および これも にあります。
より多くの情報を収集するには、さらにいくつかのブートパラメータを設定します。 quiet
とsplash
を削除し、initcall_debug
とno_console_suspend
を追加します。これにより、initシステムコールがコンソールに出力され、何が問題なのかを確認できます。私はこれを設定しました:
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mmcblk0p3 no_console_suspend initcall_debug"
これにより、休止状態からの再開時に何が問題になっていたかがわかりました。
私の場合、レジューム後にWiFiを失い、ほとんどのコマンド(たとえば、/sys
からの読み取り、モジュールまたはsystemctl
コマンドの再読み込み)が機能しないため、カーネルが明らかに動揺しました-プロセスが表示されます開始してハングするだけです(もちろん、これはすべて再起動後に通常に戻ります)。システムが非常にゆっくりとシャットダウンし、すべてのデバッグメッセージが表示されるのを見て、「brcm」に多くの問題があることに気づいたので、Broadcomワイヤレスドライバーモジュールのせいだと思いました。案の定、休止状態の手順を調整して、最初にモジュールをアンロードします。
Sudo modprobe -r brcmfmac
Sudo systemctl hibernate
再開時にモジュールを再挿入します
Sudo modprobe brcmfmac
そして、すべてが完璧に機能しました。また、btsdio
と互換性がないと思われるbrcmfmac
モジュールをブラックリストに登録する必要があります。
再びArch wikiページの助けといくつかの追加の調整により、17.04でスワップファイルを使用してハイバネーションを動作させることができました。これには追加のブートパラメータresume_offset=n
が必要でした。nはphysical_offset
の出力のSudo filefrag -v /swapfile
の下の最初の数字です。
$ Sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
....
したがって、私の場合の追加のブートパラメーターはresume_offset=34816
です。再開するパーティションのブートパラメータを設定する必要があります。これがルートパーティション(またはスワップファイルが置かれているパーティション)になります。私のパラメーターは次のとおりです。
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=/dev/mmcblk1p2 resume_offset=34816"
ここで、/dev/mmcblk1p2
はルートパーティションです(あなたのパーティションは/dev/sda2
のようなものである可能性が高くなります)。
再開中にイメージが正常に読み込まれましたが、私の場合(例-YMMVAPD)、さらにいくつかのドライバー(i2c_designware
)がエラーをスローし、再開時にシステムが完全にフリーズしました。 brcmfmac
に加えてこれらのモジュールをアンロードするとハイバネーションは機能しますが、システムはそれらのモジュールなしではすぐに使用できなくなります。したがって、バグのあるモジュールをアンロードして、再開時にすぐに再挿入するためのスクリプトを作成しました。
# remove buggy modules
modprobe -r brcmfmac i2c_designware_platform i2c_designware_core &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe i2c_designware_core i2c_designware_platform brcmfmac
休止状態にしたいときは、Sudo bash script
を実行します。これはうまく機能します。
Systemdを使用し、スワップから再開するためのブートパラメーターを設定し、バギードライバーを特定し、休止状態を開始する前にそれらをアンロードします。これらのモジュールがないとシステムが長時間動作しない場合、またはいくつかのモジュールをアンロードする必要がある場合、単純なスクリプトを使用して休止状態を開始する方が簡単な場合があります。
buntu Wiki (手順が必要な場合は以下を参照してください)で説明されているように、16.04回答でhibernateを有効にする方法はすべて知られていると思います。しかし、チェックが必要なことは徹底的ではないと思います。少なくとも、それは私が見つけたものです。
私自身のテストから、少なくとも1つの余分なチェックを実行する必要があります。私はそれをインターネットのどこにも見つけませんでした。
ここにいくつかのチェックがあります-
btrfsパーティションを使用していないことを確認してください。 はい。私のテストから、btrfsパーティションがある場合、休止状態は機能しないことがわかりました。パーティションタイプをext4
に削除または変更しても、役に立ちませんでした。 btrfs-tools
パッケージを削除する必要がありました。
Sudo apt-get purge btrfs-tools
十分にテストされていない他の新しいパーティションタイプを確認することをお勧めします。パッケージを削除せずに、ドライバーのブラックリストを作成しても機能する場合がありますが、私はそれをテストしていません。
また、RAMの内容を保持するのに十分な大きさのスワップパーティションがあることを確認する必要があります。 RAMが4 GBの場合、スワップは少なくとも4 GBの大きさにする必要があります(安全のために、さらにいくつかのMBを割り当てる必要があります)。
これらの手順が含まれます
/etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
にルートとしてファイルを作成します
Sudo -i nano /etc/polkit-1/localauthority/50-local.d/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.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
を押してファイルを保存します Ctrl-O。で終了 Ctrl-X
polkitd
デーモンを再起動します
Sudo systemctl restart polkitd.service
休止状態を有効にする必要があります。
(私は 同様の質問 systemdベースの返信に焦点を当てて、この質問をフォローしている人々のために私のソリューションをここで共有しました)
このソリューションは、 Fedora トピックに基づいています(以前にsystemdに切り替えたため、より多くの資料があります)。
私の場合(常に休止状態をサポートするマシンに新しい16.04.1をインストールする)、廃止されたSudo pm-hibernate
を呼び出しても何も行われず、最新のシステム化されたアプローチsystemctl hibernate
が返されます。
Failed to hibernate system via logind: Sleep verb not supported
セキュアブートが原因であることが判明しました。16.04をインストールすると、それで何をしたいのかを尋ねられます(思い出す限り、これは新しいことです)。
セキュアブートをオンにしたマシンで、cat /sys/power/disk
が答えました:
[disabled]
再起動し、BIOS設定でセキュアブートを無効にした後(これらはマシン固有ですが、通常は非常に簡単です)、私はcat /sys/power/disk
を試してみました:
[platform] shutdown reboot suspend
良く見えます。そして実際にsystemctl hibernate
を呼び出すと、休止状態/解凍シーケンスが成功します。
さらに、その後、グラフィカルインターフェイスのさまざまな場所で、polkit
ハックを必要とせずに、休止状態をオプションとして使用できるようになりました。したがって、systemd
は実際に/sys/power/disk
からシステムが休止状態にできなかったことを推測していたようです。
この指示は、Ubuntu 18.04のインストールで機能しました。
Sudo apt install hibernate
hibernateおよびhibernateに必要な他の依存関係をインストールしますgrep swap /etc/fstab
(fuid UUID)sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash"行にスワップのUUIDを追加します。行は次のようになりますGRUB_CMDLINE_LINUX_DEFAULT = "quiet splash resume = UUID of swap"Sudo update-grub
Sudo systemctl hibernate
。すべてが正常に機能する場合は、メニューエントリを追加します。Sudo gedit /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.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
https://askubuntu.com/a/819891/7122 からコピー
私にとっては、hibernate
パッケージをインストールし、再起動してSudo hibernate-disk
を実行します。メニューに追加することは可能ですが、時間をかける価値はありません。
私自身のコメントをkelvineloveの答えに拡大すると、編集者が提案したファイルは私のシステムには存在しませんでした(Ubuntu 16.04が新鮮です)。代わりに、私はこれをしました:
Sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
これらのセクションを探します(それらはお互いに正しいです):
[upowerでデフォルトで休止状態を無効にする] Identity = unix-user:* Action = org.freedesktop.upower.hibernate ResultActive = no
[logindでデフォルトでhibernateを無効にする] Identity = unix-user:* Action = org.freedesktop.login1.hibernate; org.freedesktop.login1.handle-hibernate-key; ResultActive = no
両方のResultActive = noをResultActive = yesに変更します。
編集:Gunnarは、特定のパッケージが更新されるとこのファイルが上書きされることを指摘したので、意図によっては最善の解決策ではない可能性が高いです。
出典: http://www.zedt.eu/tech/linux/enable-hibernation-xubuntu-16-04/
Ubuntuでのより一般的な休止状態の問題を整理するのに役立つ非常に優れたリソースがここにあります。
私の場合、Lenovo u300でUbuntu 16.10を実行し、休止状態が正しく機能するためには、次のことをしなければなりませんでした。
/etc/default/grub
を編集して、次の行を含めます。
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet pci=nomsi RESUME=UUID=92781adb-f2a6-4f15-88fc-e1ce801291dd"
RESUMEは、特定のスワップファイルUUIDを指します。特に、私のマシンではpci=nomsi
設定がキーでした。
幸運を祈ります!
まず、マシンが休止状態をサポートしているかどうかをテストすることをお勧めします。休止状態がデフォルトで無効になっている理由は、マシンによっては不快な結果になることがあるためです。ターミナルを開いてマシンをテストします(Ctrl+Alt+T)そしてSudo pm-hibernate
と入力します
マシンは休止状態になります。休止状態の後にマシンを起動し、正常に動作しないか、正常に動作するかを確認します。冬眠後に何らかの異常が発生した場合は、次の手順を続行しないことをお勧めします。ただし、正常に動作する場合は、これを実行して休止状態をアクティブにし続けます。
Sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
開いたファイルを編集して、次の行を追加します。
[Re-enable hibernation]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
この後、マシンを再起動し、ログイン後、電源設定メニューの右上の設定コーナーに休止状態オプションが追加されます。
少し手間をかけて手動で有効にする必要があります。デフォルトでは無効になっています。
http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/
それが機能しない場合は、4.4.0カーネルの問題である可能性があり、カーネルのアップグレードが必要になる場合があります。