Ubuntu 18.04は休止状態の後に再開できません


17

Ubuntu 17.04を使用していたとき、Hibernateは正しく機能しました。17.10にアップグレードした後、再開後に黒い画面のため再開できませんでした(このバグ)。

18.04にアップグレードした後、休止状態の後にコンピューターを起動しようとすると、休止状態が完了していないかのように起動します。


18.04でも同じ問題が発生します。再開のために適切なパーティションを指定する必要があると思いますが、それを行う方法が見つかりませんでした。私が見つけたのは、Googleが役に立たなかったことです。
user2819650

パーティションは/etc/initramfs-tools/conf.d/resumeでスワップに正しく設定されています。休止状態が正しく行われていないか、ブート中の再開が機能していないと思われます。しかし、さらにデバッグする方法がわかりません。syslogとdmesgは、問題の手がかりを与えません。
カミル

回答:


29

以前のLTS(16.04)と比較すると、デフォルト設定に変更が加えられています。私の場合、ハイバネーションはいくつかのステップを実行するまで機能しませんでした。その中で、スワップファイルのサイズを増やし、オンにし、ポリシーで許可されていることを確認しました。

これはStackExchange全体で最も長い答えになる可能性があるため、ヘッダーを説明的にしようとしました

冬眠のないブーツ

あなたのログを見て(dmesg助けになるかもしれません)、何かあるかどうかを確認するのが賢明でしょう。システムに休止状態を指示しても、実際には休止しないか、代わりにRAMにサスペンド(スリープ)する理由があります。

見てみるkern.logと、syslog任意の休止状態関連のメッセージを探しているだけでなくとして損はありません。「問題」で始まるセクションは、特定の問題に役立つ場合があります。

スワップファイルまたはスワップパーティション

重要な変更の1つは、スワップパーティションを持たないが、スワップファイルがあることです。

スワップファイルは、ハードウェア/ドライバー/ OSと休止状態の組み合わせでは機能しない場合があります。

ハイバネーションがオフになりました

また、ポリシーによって休止状態がオフになったり、禁止されたりする場合があります。

専門用語

RAMにサスペンド-RAMはデータを保持し、コンピューターはより速くスリープ状態になり、サスペンドされるとより多くのエネルギーを使用し、より早く起動します。これをスリープと呼ぶ人もいます。

ディスクへのサスペンド-別名休止状態。RAMはスワップ(パーティションまたはファイル)のために保存され、コンピューターのスリープ状態は遅くなり、冬眠中のエネルギー消費量が少なくなり、ウェイクアップが遅くなります。

LinuxでRAMにサスペンドするRafael J. WysockiとA. Leonard Brown

前提条件-十分なスペースがありますか?

休止状態にするには、RAM全体をハードドライブに保存する必要があります(ここでは簡略化しています)。そのため、そのための十分なスペースを確保する必要があります。そうしないと、これは失敗し、休止状態になりません。

  1. free -m あなたが持っているメモリの量、使用量、スワップの量がわかります。
  2. df -h 各マウントポイントにあるディスクスペースの量、使用量、空き量などが表示されます。これは、後でスワップファイルを配置する場所、または「トリミング」するパーティションを指定する必要があるため重要です。スワップに十分なスペース。
  3. cat fstabスワップパーティションまたはファイルがある場合は情報を提供する必要があります。Ubuntu Hibernation FAQによるとswapfile、ハードウェア/ドライバーの一部の組み合わせで常に動作するとは限りません。

十分なスペースがない場合は、Ubuntu swap FAQに従ってください。スワップファイルを増やす方法、別のスワップファイルを追加する方法、使用されているかどうかを確認する方法などを説明しています。本当に素晴らしいリソース。

RAMを入れるのに十分なスペースがありません!

カーネルドキュメントは言う:

/ sys / power / image_sizeは、ディスクへのサスペンドメカニズムによって作成されるイメージのサイズを制御します。画像サイズの上限として使用される非負整数を表す文字列をバイト単位で書き込むことができます。ディスクへのサスペンドメカニズムは、イメージサイズがその数を超えないように最善を尽くします。ただし、これが不可能であることが判明した場合、可能な限り最小のイメージを使用して一時停止しようとします。特に、このファイルに「0」が書き込まれる場合、一時停止イメージは可能な限り小さくなります。このファイルから読み取ると、現在の画像サイズ制限が表示されます。これは、デフォルトで使用可能なRAMの2/5に設定されています。

そのため、画像サイズを調整してみてください。方法-別の質問をお願いします。

前提条件-カーネルはディスクへのサスペンドをサポートしていますか?

カーネルは、にリストされているものをすべてサポートします/sys/power/state

cat /sys/power/state

可(私の知る限り)のエントリが含まれます:memstandbyfreezedisk。説明:

  • mem-にはいくつかの意味がありますcat /sys/power/mem_sleep。これらは、システム上で正確にわかります。私が持っています:s2idle [deep]
  • standby -パワーオンサスペンド(サポートされている場合)
  • freeze -アイドル状態へのサスペンド(STI)
  • disk-ディスクへのサスペンド(STD)、休止状態。これ-あなたが欲しい。

次に、確認する必要がありcat /sys/power/diskます。disabledBIOSでセキュアブートを探している場合は、それが私が提供できる唯一のアイデアであり、私が知っている唯一の方法が休止状態を妨げ、オフにする可能性があります。SecureBootのみを知っていますが、他の干渉がある可能性があるため、「セキュアブート」がない場合でもBIOSを確認することをお勧めします。

ここを読む:

  1. カーネルドキュメント
  2. 休止状態に関するDebian Wiki

TBH、カーネルが休止状態をサポートしていない場合でも、別の方法で試して、セクションまでスクロールダウンできますInterfaces

これを読んでください-警告と問題-BTRFSなし

順不同:

  1. すべてのチップセットが機能するわけではありません(ここで引用できる情報源はありませんので、これが伝聞だとしましょう)
  2. VAIOには問題があります。おそらくそれらに対抗するためのフラグがあります
  3. SecureBootは、多くの場合、休止状態を妨害したり、休止状態にしたりするものとして引用されています。
  4. Wake-on-LANは休止状態でも電力を消費します
  5. システムの休止状態から適切に再開する前に、モジュールの数(特にグラフィック)が初期化される場合があります。これは通常、再開時に黒い画面が表示される原因です。問題のデバッグ方法に関するヒントについては、ArchLinux Wikiをご覧ください。また、Hibernateの問題に関するUbuntu FAQも提案します。Launchpadのバグを閲覧しても結果が得られる場合があります。IIRCには、再開するまでの遅延を秒単位で指定するカーネルパラメーターがあります
  6. ハイバネーション手順の許可は、Polkitバージョンごとに異なります

BTRFSと休止状態を使用しないでください。データが破損する可能性があります。

休止状態にしたい-パーティションをスワップする

スワップファイルを放棄して、パーティションをスワップに戻す場合があります。結局、以前のLTSで機能しました。私は試していないので、ポインターを提供しません。

休止状態にしたい-スワップファイルで

  1. 十分なスペースがあることを確認してください。UbuntuスワップFAQには、必要な量が記載されています。上記のコマンドも同様に必要です。ここでさらに情報が必要な場合は、別の質問をしてください。これは長いトピックです。
  2. スワップファイルを増やすか、十分なサイズの新しいファイルを作成し(推奨、@ muruに同意します)、新しいファイルに変更し/etc/fstabます。変更を確認するために再起動します(バックアップを保存するfstabので、万が一に備えて簡単に元に戻すことができます)。
  3. 適切なパラメーターを使用してカーネルにこれを向けると、再開する場所がわかります。
  4. ブートローダーを更新/再構成し、再起動します。

カーネルパラメーター?怖い!

注意深く読み、それを行うかどうかを決定しますが、これはカーネルを構成するための単なる方法です。systemdand を使用して休止状態にする方が簡単な場合がありますuswsusp(以下の「インターフェース」を参照)。私と同じように、最終的にはRAMへのサスペンドで十分であり、スワップファイルに32GBを入れたくないと判断するかもしれません(たとえば、ラップトップにSSDを1つ搭載している人にはあまり適していません)。だが!

  1. スワップファイルへの休止状態では、スワップファイルがresume=どのパーティションresume_offset=にあるか、スワップファイルのどこから再開するかを知る必要があります。
  2. パーティションの休止状態では、resume=スワップパーティションを指す必要があります。
  3. 黒い画面の問題を解決するには、が必要になる場合がありますresumedelay=

ハイバネーションからの再開の遅延に関するカーネルドキュメント:

resumedelay = [HIBERNATION]再開ファイルの読み取りを試みる前に一時停止する遅延(秒)

スワップファイルと休止状態の必須パラメーター

再開= [SWSUSP]

      Specify the partition device for software suspend

      Format:

      {/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}

resume_offset = [SWSUSP]

      Specify the offset from the beginning of the partition
      given by "resume=" at which the swap header is located,
      in <PAGE_SIZE> units (needed only for swap files).

      See Documentation/power/swsusp-and-swap-files.txt

については、要素がにresume=あるのと同じスタイルを選択します。したがって、or またはLVMのいずれかです。ファイルを冬眠する場合-ファイルが見つかるパーティションを提供します。rootfstab/dev/sdaXUUID

読書:

  1. https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
  2. https://wiki.archlinux.org/index.php/Kernel_parameters

問題-スワップヘッダーが見つかりません

スワップファイルは適切にフォーマットする必要があります。ログにこれが示されている場合は、ファイルへの休止状態を試みているか、履歴書パラメーターが正しくありません。

パーティションに切り替えるか、ファイルを修正するか、休止状態に使用するインターフェイスを変更します。

参照:https : //unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found

mkswapファイルのフォーマットに使用されます。詳細はこちらをご覧ください

問題!休止状態は許可されていません!

テスト:pm-hibernate(pm-utilsパッケージがインストールされている場合)またはsystemctl hibernate許可されていないことを伝えます。IIRC 12.04以降のUbuntuのデフォルト設定。

解決策:Polkitのバージョン、Ubuntuのバージョン、およびフレーバーによって異なります... この質問を参照してください。また、PolkitのArchWikiが役立つ場合があります。

ミントについては、https//forums.linuxmint.com/viewtopic.php?t = 259912を参照してください。

問題!BIOSの何かによってハイバネーションが無効になりました!

テスト:cat /sys/power/diskありdisabled。ログには、「logindを介したシステムの休止状態に失敗しました:スリープ動詞はサポートされていません」と表示されます。

解決策:BIOSを検索し、問題のあるものを見つけます。消して。

解決策2:別の休止状態のインターフェイスを試してください。

参照:16.04.1で休止状態をアクティブにする方法は?(systemd)

インターフェース

  1. swsusp-低レベルのカーネルインターフェイス。前提条件-どのファイルのカーネルを参照してください。ファイルに直接書き込むと、サスペンド(RAM、ディスク、ハイブリッド)が発生する場合があります。ファイルへの冬眠に問題があるSwapFAQによると。
  2. uswsusp- ArchWikiおよびDebian Wikiと、AskUbuntuの質問とその使用方法の説明
  3. systemd- ArchWikiについて
  4. pm-utils- もともとDebianからのスクリプトのコレクションである AFAIK- 私は喜んでより多くの情報を自分で歓迎します。

閉会の辞

私にとっては、それをコンパイルするのにほぼ2日間の作業が必要でした。うまくいけば、これがあなた(および他の人)があなたの問題をより速く解決するのに役立つでしょう。まだ見逃した点はありますが、午前2時であり、これ以上書く気はありません。もちろん、私はこれを改善するために誰の指針にも心を開いていますので、コメントしてください。寝たら、仕事などで返信します:-)

ディスクへの冬眠がそんなにすばらしいとは思いません。最後に寝て行きました。しかし、私にとっての問題は、ハイバネーションを実行できるようにするためだけに32GBファイルを使用することでした。最初のスワップファイルは2GBで、ほとんどが空でした。YMMV。それにもかかわらず、幸運を!そして、ログから始めましょう!


素晴らしい答えです!しかし、最終的に私のケースを解決したのは、リンクされたスワップFAQであり、それは私のgrub設定ファイルおよび/またはinitramfs-toolsと同様のsthの変数に「resume = UUID」を追加するように指示しました。何らかの理由で、間違ったUUIDがあり、おそらく問題でした。そのため、同様の問題を抱えている人には、まず「スワップパーティションを追加または変更するにはどうすればよいですか?」のSwap FAQに記載されている内容を確認することをお勧めします。
リマナリ

1
「ディスク-ディスクへのサスペンド(STD)、休止状態。これ-欲しい」これからキックを得たのは私だけですか?どうもありがとう。
スパクマード

素晴らしい答えです!1つの小さなコメント:マシンの1つで、2回目のブート試行後にのみ休止状態が機能した後に再開します(最初の試行ではモニターに何も表示されませんでした)。HWEスタックのインストールを修正できました:($ sudo apt install linux-generic-hwe-18.04ハードウェアによってlinux-generic-hwe-18.04-edgeは一見の価値があるかもしれません)。
ヒロ主人公

1
あ。休止状態にするつもりはありません!512GbのRAMがあります。まあ...(10Tb HDDには十分なスペースがありますが、再起動するには数時間かかります!)
Alexis Wilke

9

RESUMEパラメータで代わりにそれの取り付け点のスワップパーティションのUUIDを使用してresume=UUID=<#>、両方で/etc/default/grub/etc/initramfs-tools/conf.d/resume

次のような/etc/fstab マウントポイントなしで、スワップパーティションのエントリを作成します。

# Entry for Swap : 
UUID=# none  swap    sw              0       0

では/etc/default/grub、休止状態を再開するために別のエントリを使用しました

# FOR HIBERNATION 
GRUB_CMDLINE_LINUX="resume=UUID=..."

ローカル機関(pkla)でポリシーキットを作成する

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

[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes

その後、initramfsとGRUBを更新します

sudo update-initramfs -u -k all
sudo update-grub

再起動し、いくつかのアプリを開いて使用します systemctl hibernate(sudoなしで)て動作するかどうかを確認します


正常に動作します!どうもありがとう。
Yossarian42

おかげで男、あなたは私を救った!
Vahe Shadunts

1

私にとっては、18.04までは常に機能しており、18.04以降は多くの記事でそのまま有効にしていますが、昨日突然機能しなくなりました(4〜5か月間正常に機能しました)。

そしてここにある...それが再び機能するようになったもの...

スワップパーティションの場所をgrub2に伝えます。

まず、以下のコマンドを使用して、どのパーティションにあるかを調べます。

cat /etc/fstab

私のものはsda7にあり、次の出力があります:

インストール中にスワップが/ dev / sda7にあった

次に、次のコマンドを使用して、Grub2で次の行に次の追加を追加します。

sudo gedit / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_pstate = disable resume = / dev / sda7"

重要な部分は resume=/dev/sda7

私の場合は/ dev / sda7

次に、Grubを次のコマンドで更新します。その後、再び完全に機能し始めました。

sudo update-grub

多くの試みの後、これがうまくいったことの1つでした。たぶんそれは、カーネルの更新が失敗しただけのせいかもしれません。


0

これが誰かを助けることを願っていますが、私はpopos / ubuntu 19.04を実行しています。私のセットアップでは、s2diskまたはpm-hibernateを使用して休止状態にすることができましたが、再開は失敗しました。これを修正するには、grubではなくUEFIを使用してシステムを起動します。ブートローダーを再インストールする必要がありました。UEFIを実行しているかどうかを確認するには、次を使用します。

[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"

UEFIモードの場合、このガイドに従ってブートローダーを再インストールしますが、nvmeディスクまたはsataディスクを使用している場合は異なります:https ://support.system76.com/articles/bootloader/

kernalbootオプションで、再開するパーティションまたはUUIDを指定していることを確認してください。たとえば、次のようなものです。

resume = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

これは次のいずれかで追加できます。1)sudo kernel-stub -a "resume = UUID = ..." 2)/etc/initramfs-tools/conf.d/resumeファイルを編集して、次を追加します。resume= UUID = ed8347ed- 2eb4-40bc-bc77-cc53b987ed88

/ var / log / syslogファイルで次のようなものを確認してください:Aug 4 22:26:42 pop-os / usr / bin / kernelstub [19639]:kernelstub:DEBUG kopts:root = UUID = b37019a8-91f5-445f-94c1 -7359a49ed5df ro quiet loglevel = 0 systemd .show_status = false resume = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

履歴書が見つからないか間違っている場合は、ブートカーネルを再度更新する必要があります。


0

Sam73の回答に記載されているgrubでスワップ再開ポイントを設定することとは別に、Ubuntu 18.04もインストールする必要があることがわかりましたlaptop-mode-tools

$sudo apt install laptop-mode-tools

次にENABLE_LAPTOP_MODE_ON_AC=1、構成ファイルを変更します。

$sudo vim /etc/laptop-mode/laptop-mode.conf

ラップトップモードを開始するには:

$sudo laptop_mode start

PSラップトップが起動するかどうかを確認できます

$cat /proc/sys/vm/laptop_mode

が印刷される0場合、laptop_modeは動作していません。それ以外の場合、正常に動作していることを示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.