Ubuntu 16.04で休止状態にするにはどうすればよいですか?


86

Ubuntu 16.04を正常に休止状態にするにはどうすればよいですか?

私はウェブ上のほとんどすべてのソリューションを試しましたが、それらのどれも実際には役に立ちませんでした。私はと私の問題は、ほぼ完全に類似した、この1



sudo pm-hibernate動作しますか?
-Pilot6

2
systemdで状況は変わりませんか?今、私たちはsystemctl hibernateおそらくだまされないように使用することを意図しています...または古い質問をだまして有効にするために少なくとも更新された回答が必要になる場合があります
-Zanna

実行しているカーネルのバージョンは何ですか?uname -r端末に入力します(これを既に知っている場合は謝罪します)。
WinEunuuchs2Unix

質問を編集しての出力を追加してください free 。これにより、正常に休止状態にするのに十分なスワップ設定があるかどうかを判断できます。
オタク長老

回答:


62

systemctlタフなケースで休止状態を使用して動作させる

私にとっては、pm-hibernate常に失敗します。いくつかの微調整の後、systemdのインターフェイス(16.04以降の初期システム)を使用して休止状態にすることができました。また、17.04でスワップファイルを使用して動作させることもできました。このケーススタディは、問題のある他の人に役立つ場合があります。

初挑戦:

sudo systemctl hibernate

それが失敗した場合は、トラブルシューティングを開始します。休止状態(HTDまたはACPI S4)では、マシンの状態がディスクに書き込まれるため、保存するために電力は必要ありません。状態は、スワップパーティションまたはスワップファイルのいずれかに書き込まれます。注:BTRFSを使用する場合は、ファイルシステムの破損を引き起こす可能性があるため、スワップファイルを使用しないでください。

スワップパーティションまたはスワップファイルは、休止状態を許可するためにRAMと同じサイズである必要がありますがArch wikiページによると RAMのサイズの少なくとも2/5であれば休止状態にできる可能性があります。、スワップサイズを増やす前に、まず他の手順を試してください。

問題が、予想される再開ではなくクリーンブートを取得することである場合、少なくともディスクイメージを見つけるためにブートパラメーターを設定する必要があります。

スワップパーティションを見つけます。

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状態のデバッグに関する詳細な情報を見つけることができ、このブログにしても、この1

ブートパラメータをさらに設定して、より多くの情報を取得します。削除quietおよびsplash追加initcall_debugno_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


更新:17.04のスワップファイルを使用した休止状態。

再び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ます。これはうまく機能します。


TL; DR

systemdを使用し、スワップから再開するためのブートパラメータを設定し、バグのあるドライバを特定して、休止状態を開始する前にそれらをアンロードします。これらのモジュールがないとシステムが長時間動作しない場合、またはいくつかのモジュールをアンロードする必要がある場合、単純なスクリプトを使用して休止状態を開始する方が簡単な場合があります。


その情報はどこから来て、RAMサイズの2/5で十分かもしれません。どのような状況ですか?Gnomeには「Hibernate」というユーザーオプションがあり、休止状態になっているようですが、目覚めると正しく動作しません。8GBと32GB RAMのスワップパーティションがあります。これは2/5ではありませんが、32GBのスワップファイル(またはパーティション)を作成する前に知っておくとよいでしょう。
cslotty 16

@cslotty私はアーチウィキIIRCからその情報を得た-あなたはそれをしてください管理しないなら、私に知らせて
Zanna

ありがとう、@ Zanna。私はそれが実際には休止状態ではなく、私が望むものであることがわかりましたが、サスペンド(S3 / STR)-sry。
cslotty 16

@cslottyはまったく心配ありません。その場合、スワップは関係ないので問題ではありません。
ザンナ

1
おかげで、私はこの答えを統合し、最後にSecureBootを機能させるためのヒントを必要としていました。
オリゴフレン

62

使用できます

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の公式ドキュメント。

それがうまくいくことを願っています。他のすべてのオプションを試した後、これは私のために働いた。


「電源オプション」にHibernateを表示するには、ファイルの編集後に再起動が必要です。
Jus12

21
「sudo pm-hibernate」は、警告なしにシステムをすぐに強制終了しました。何が起こるかを人々に伝える必要があります。
ヤールダオン

ベストアンサー。これは17.4と17.10でも機能します。
Saurabhバンダリ

1
この答えは、GRUB_CMDLINE_LINUX_DEFAULTに「resume =」を追加するように指示するものと組み合わせて、私にとっては解決しました-thx!
クリストフ

スワップパーティションに17GBと16GBのRAMがありますが、なぜ機能しないのですか?コンピューターをオフにするには永遠に時間がかかるのに対し、「シャットダウン」するとほとんどすぐにオフになるため、冬眠しているようです。しかし、コンピューターの電源を入れると、すべてが閉じられ、最初からやり直す必要があります。それはまったく冬眠していません。なぜWindowsほど簡単にできないのですか?誰かが適切に休止状態にする方法についてのアイデアをお持ちの方がいらっしゃいました。
-user1271772

20

16.04の回答でhibernateを有効にする方法は、Ubuntu Wikiで説明されているようにすべて知られています(手順が必要な場合は以下を参照してください)。しかし、チェックが必要なことは徹底的ではないと思います。少なくとも、それは私が見つけたものです。

確認事項

私自身のテストから、少なくとも1つの余分なチェックを実行する必要があります。私はそれをインターネットのどこにも見つけませんでした。

ここにいくつかのチェックがあります-

  1. btrfsパーティションを使用していないことを確認してください。はい。私のテストから、btrfsパーティションがある場合、休止状態が機能しないことがわかりました。パーティションタイプを削除または変更してext4も解決しませんでした。btrfs-toolsパッケージを削除する必要がありました。

    sudo apt-get purge btrfs-tools
    

    十分にテストされていない他の新しいパーティションタイプを確認することをお勧めします。パッケージを削除せずに、ドライバーのブラックリストを作成することもできますが、私はそれをテストしていません。

  2. また、RAMの内容を保持するのに十分な大きさのスワップパーティションがあることを確認する必要があります。RAMが4 GBの場合、スワップは少なくとも4 GBの大きさである必要があります(安全のためにさらに数MBを割り当てる必要があります)。

休止状態を有効にする手順

これらの手順が含まれます

  1. ルートとしてファイルを作成します /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla

    sudo -i nano /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
    
  2. これらのコンテンツをそのファイルに入れます

    [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
    
  3. Ctrl- を押してファイルを保存しますOCtrl-で終了X

  4. polkitdデーモンを再起動します

    sudo systemctl restart polkitd.service
    

休止状態を有効にする必要があります。


2
ありがとう、アンワール。バグ#1619846を提出し、上記の回答を紹介しました。公式ドキュメントでそのページに、より正確な変更/追加を提案できる可能性はありますか?
グンナルハルマルソン16

1
@GunnarHjalmarssonこの警告を提案します。しかし、これを検証するテスターがもっと必要です。後でお知らせします
アンワー

それでは、もう少し話しましょう。
グンナルハルマルソン16

btrfsパーティションにインストールし、btrfs-tools指示に従って削除しました。まだ休止状態にできません。
-Oxwivi

1
ディスクにvfatはUEFI のみがあり、およびがbtrfsありswapます。実際、ハードウェア(AMDラップトップ)が原因だと考えています。btrfsを使用して別のシステムでこれをテストし、戻ってきます。
-Oxwivi

7

セキュアブート

(systemdベースの返信に焦点を当てる同様の質問をし、この質問をフォローしている人々のために私のソリューションをここで共有しました)

このソリューションはFedoraのトピックに基づいています(以前にsystemdに切り替えたため、より多くの資料があります)。

私の場合(常に休止状態をサポートするマシンに新しい16.04.1をインストールする)、廃止されsudo pm-hibernateたものを呼び出すことは何もしないようでsystemctl hibernate、最新のsystemdアプローチが返されます:

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ていたようです。


あなたがここで説明したとおりにした。しかし、「systemctl hibernate」コマンドを実行した後、画面が3秒間黒くなり、コマンドを実行する前と同じように、開いているすべてのプログラムがデスクトップに戻りました。コマンド "cat / sys / power / disk"を実行したとき、次のテキストが表示されました。 "[platform] shutdown reboot suspend test_resume" :「test_resume」。私の問題を解決するために私ができることは何ですか?
フォックスハード

あまり確かではありませんが、休止状態はハードウェアですぐに機能しないようです。他の人が指摘しているように、デフォルトでは無効になっています。特定の問題について別の質問を開始することもできます。
マーク

私にとっては半分しか働いていません。休止状態になりますが、休止状態から目覚める代わりに、通常のブートに移行し、ハードシャットダウンが完了するまで永久に停止します。
マット

6

この指示は、Ubuntu 18.04のインストールで機能しました。

  1. sudo apt install hibernate 休止状態および休止状態に必要な他の依存関係をインストールします
  2. grep swap /etc/fstab (fuid UUID)
  3. sudoedit /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash"行にスワップのUUIDを追加します。行は次のようになりますGRUB_CMDLINE_LINUX_DEFAULT = "quiet splash resume = UUID of swap"
  4. sudo update-grub
  5. 再起動し、再起動後sudo systemctl hibernate。すべてが正常に機能する場合、メニューエントリを追加します。
  6. 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/712203からコピー

  1. コンピューターを再起動します
  2. https://extensions.gnome.org/extension/755/hibernate-status-button/をインストールします

1
固定値を追加する代わりに、を/etc/default/grub使用update-initramfs -u -k allしてinitramfsの更新を検討し、のようなメッセージを探しますThe initramfs will attempt to resume from /dev/dm-0。これにより、再開デバイスが自動的に設定されます。
ukos

ありがとう、Ubuntu 18.04で完璧に動作します!gnome拡張機能を初めて使用する場合は、ブラウザー拡張機能とコネクタをインストールする必要があることに注意してください。これは、上部の拡張リンクで説明されています。
カリムソンボル

4

私自身のコメントをkelvineloveの答えに拡張すると、彼が編集を示唆するファイルは私のシステムには存在しませんでした(Ubuntu 16.04が新しくなりました)。代わりに、私はこれをしました:

  1. sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

  2. これらのセクションを探します(それらはお互いに正しいです):

    [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

  3. 両方のResultActive = noResultActive = yesに変更します。

  4. Ctrl + Oを押してファイルを保存します。
  5. コンピューターを再起動します
  6. Hibernateのオプションは、あなたのパワー・メニューで使用できるようになりました。

編集:特定のパッケージが更新されると、このファイルは上書きされるとGunnarは指摘したので、あなたの意図に応じて、それはおそらく最良の解決策ではないでしょう。

ソース:http : //www.zedt.eu/tech/linux/enable-hibernation-xubuntu-16-04/


のファイルは/etcデフォルトでは存在しないことになっています。作成する構成ファイルです。上記で提案したように、パッケージが所有するファイルを編集することは、次のパッケージ更新時に上書きされるため、悪いアドバイスです。
グンナルハルマルソン16

@GunnarHjalmarssonもしそうなら、私はそれが存在しないかもしれないと述べるべきだと主張するでしょう。「このコマンドをコピー/貼り付け」->「これを入力」よりも、評価の高いUbuntuの回答よりも期待しています。 。誰かが数年後にその答えを見つけたが、ファイルが空であり、指示がファイルに追加するように明確に述べているので、それが存在することを暗示して、それを試すことを恐れている場合はどうでしょうか?それにもかかわらず、私は情報に感謝し、完成のために答えにそれを追加します。
fgblomqvist

1
公正なポイント; NirajWの回答をその明確化で編集しました。このページの元の情報源が創造について話していることに注意されるべきです。
グンナルHjalmarsson

これは、あなたが私の弟:)保存に最適です
アザムALVI

4

私にとっては、hibernateパッケージをインストールし、再起動してから実行しsudo hibernate-diskます。メニューに追加することは可能ですが、時間をかける価値はありません。


3

まず、お使いのマシンが休止状態をサポートしているかどうかをテストすることをお勧めします。休止状態がデフォルトで無効になっている理由は、マシンによっては不快な結果になることがあるためです。ターミナル(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

この後、マシンを再起動し、ログイン後、電源設定メニューの右上の設定コーナーに休止状態オプションが追加されます。


thinkpad -E550を使用していますが、OSがubuntu 15.1またはwindows8.1の場合、休止状態に問題はありません。しかし、ubuntu 16.04を使用して、コマンド "sudo pm-hibernate"を使用すると、完全に休止状態にならず、画面が真っ暗になり、マシンはオンのままです。
マイヤー

私の場合、コマンドは何もしません。端末は改行に移動し、次のコマンド、つまり前のコマンドが実行されるのを待ちます。しかし、それは何もしませんat all
Aalok

これは私にはうまくいきません。Ubuntu 16.04。Hibernateオプションは表示されず、[設定]-> [電源]で無効のままになりますか?
ダニエルセガト

既存のポリシーを編集する方が良い:zedt.eu/tech/linux/enable-hibernation-xubuntu-16-04
fgblomqvist

の不完全なコンテンツcom.ubuntu.enable-hibernate.pkla。NirajWの回答を参照してください。
グンナルハルマルソン16

3

ここには、Ubuntuでの一般的な休止状態の問題を整理するのに役立つ非常に優れたリソースがあります。

私の場合、Lenovo u300でUbuntu 16.10を実行し、休止状態が正常に機能するためには、以下を実行する必要がありました。

  • 適切なサイズのスワップファイルを作成します(通常、サイズを1倍に設定しますが、最大で1.6倍と2倍に聞こえます)
  • 編集/etc/default/grubして次の行を含めます。

    GRUB_CMDLINE_LINUX_DEFAULT="splash quiet pci=nomsi RESUME=UUID=92781adb-f2a6-4f15-88fc-e1ce801291dd"
    

RESUMEは、特定のスワップファイルUUIDを指します。特に、私のマシンでは設定pci=nomsiが重要でした。

幸運を祈ります!


GRUBの大文字と小文字は区別されませんか?RESUMEを使用する理由
NelsonGon

1

少し手間をかけて手動で有効にする必要があります。デフォルトでは無効になっています。

http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/

それが機能しない場合は、4.4.0カーネルの問題である可能性があり、カーネルのアップグレードが必要になる場合があります。


2
答えは14.04を参照していますが、質問は16.04についてです。
グンナルハルマルソン16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.