Ubuntu 17.04を使用していたとき、Hibernateは正しく機能しました。17.10にアップグレードした後、再開後に黒い画面のため再開できませんでした(このバグ)。
18.04にアップグレードした後、休止状態の後にコンピューターを起動しようとすると、休止状態が完了していないかのように起動します。
Ubuntu 17.04を使用していたとき、Hibernateは正しく機能しました。17.10にアップグレードした後、再開後に黒い画面のため再開できませんでした(このバグ)。
18.04にアップグレードした後、休止状態の後にコンピューターを起動しようとすると、休止状態が完了していないかのように起動します。
回答:
以前のLTS(16.04)と比較すると、デフォルト設定に変更が加えられています。私の場合、ハイバネーションはいくつかのステップを実行するまで機能しませんでした。その中で、スワップファイルのサイズを増やし、オンにし、ポリシーで許可されていることを確認しました。
これはStackExchange全体で最も長い答えになる可能性があるため、ヘッダーを説明的にしようとしました。
あなたのログを見て(dmesg
助けになるかもしれません)、何かあるかどうかを確認するのが賢明でしょう。システムに休止状態を指示しても、実際には休止しないか、代わりにRAMにサスペンド(スリープ)する理由があります。
見てみるkern.log
と、syslog
任意の休止状態関連のメッセージを探しているだけでなくとして損はありません。「問題」で始まるセクションは、特定の問題に役立つ場合があります。
重要な変更の1つは、スワップパーティションを持たないが、スワップファイルがあることです。
スワップファイルは、ハードウェア/ドライバー/ OSと休止状態の組み合わせでは機能しない場合があります。
また、ポリシーによって休止状態がオフになったり、禁止されたりする場合があります。
RAMにサスペンド-RAMはデータを保持し、コンピューターはより速くスリープ状態になり、サスペンドされるとより多くのエネルギーを使用し、より早く起動します。これをスリープと呼ぶ人もいます。
ディスクへのサスペンド-別名休止状態。RAMはスワップ(パーティションまたはファイル)のために保存され、コンピューターのスリープ状態は遅くなり、冬眠中のエネルギー消費量が少なくなり、ウェイクアップが遅くなります。
休止状態にするには、RAM全体をハードドライブに保存する必要があります(ここでは簡略化しています)。そのため、そのための十分なスペースを確保する必要があります。そうしないと、これは失敗し、休止状態になりません。
free -m
あなたが持っているメモリの量、使用量、スワップの量がわかります。 df -h
各マウントポイントにあるディスクスペースの量、使用量、空き量などが表示されます。これは、後でスワップファイルを配置する場所、または「トリミング」するパーティションを指定する必要があるため重要です。スワップに十分なスペース。cat fstab
スワップパーティションまたはファイルがある場合は情報を提供する必要があります。Ubuntu Hibernation FAQによるとswapfile
、ハードウェア/ドライバーの一部の組み合わせで常に動作するとは限りません。十分なスペースがない場合は、Ubuntu swap FAQに従ってください。スワップファイルを増やす方法、別のスワップファイルを追加する方法、使用されているかどうかを確認する方法などを説明しています。本当に素晴らしいリソース。
カーネルドキュメントは言う:
/ sys / power / image_sizeは、ディスクへのサスペンドメカニズムによって作成されるイメージのサイズを制御します。画像サイズの上限として使用される非負整数を表す文字列をバイト単位で書き込むことができます。ディスクへのサスペンドメカニズムは、イメージサイズがその数を超えないように最善を尽くします。ただし、これが不可能であることが判明した場合、可能な限り最小のイメージを使用して一時停止しようとします。特に、このファイルに「0」が書き込まれる場合、一時停止イメージは可能な限り小さくなります。このファイルから読み取ると、現在の画像サイズ制限が表示されます。これは、デフォルトで使用可能なRAMの2/5に設定されています。
そのため、画像サイズを調整してみてください。方法-別の質問をお願いします。
カーネルは、にリストされているものをすべてサポートします/sys/power/state
。
cat /sys/power/state
可(私の知る限り)のエントリが含まれます:mem
、standby
、freeze
、disk
。説明:
mem
-にはいくつかの意味がありますcat /sys/power/mem_sleep
。これらは、システム上で正確にわかります。私が持っています:s2idle [deep]
standby
-パワーオンサスペンド(サポートされている場合)freeze
-アイドル状態へのサスペンド(STI)disk
-ディスクへのサスペンド(STD)、休止状態。これ-あなたが欲しい。次に、確認する必要がありcat /sys/power/disk
ます。disabled
BIOSでセキュアブートを探している場合は、それが私が提供できる唯一のアイデアであり、私が知っている唯一の方法が休止状態を妨げ、オフにする可能性があります。SecureBootのみを知っていますが、他の干渉がある可能性があるため、「セキュアブート」がない場合でもBIOSを確認することをお勧めします。
ここを読む:
TBH、カーネルが休止状態をサポートしていない場合でも、別の方法で試して、セクションまでスクロールダウンできますInterfaces
。
順不同:
BTRFSと休止状態を使用しないでください。データが破損する可能性があります。
スワップファイルを放棄して、パーティションをスワップに戻す場合があります。結局、以前のLTSで機能しました。私は試していないので、ポインターを提供しません。
/etc/fstab
ます。変更を確認するために再起動します(バックアップを保存するfstab
ので、万が一に備えて簡単に元に戻すことができます)。注意深く読み、それを行うかどうかを決定しますが、これはカーネルを構成するための単なる方法です。systemd
and を使用して休止状態にする方が簡単な場合がありますuswsusp
(以下の「インターフェース」を参照)。私と同じように、最終的にはRAMへのサスペンドで十分であり、スワップファイルに32GBを入れたくないと判断するかもしれません(たとえば、ラップトップにSSDを1つ搭載している人にはあまり適していません)。だが!
resume=
どのパーティションresume_offset=
にあるか、スワップファイルのどこから再開するかを知る必要があります。resume=
スワップパーティションを指す必要があります。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のいずれかです。ファイルを冬眠する場合-ファイルが見つかるパーティションを提供します。root
fstab
/dev/sdaX
UUID
読書:
スワップファイルは適切にフォーマットする必要があります。ログにこれが示されている場合は、ファイルへの休止状態を試みているか、履歴書パラメーターが正しくありません。
パーティションに切り替えるか、ファイルを修正するか、休止状態に使用するインターフェイスを変更します。
参照: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を参照してください。
テスト:cat /sys/power/disk
ありdisabled
。ログには、「logindを介したシステムの休止状態に失敗しました:スリープ動詞はサポートされていません」と表示されます。
解決策:BIOSを検索し、問題のあるものを見つけます。消して。
解決策2:別の休止状態のインターフェイスを試してください。
参照:16.04.1で休止状態をアクティブにする方法は?(systemd)。
私にとっては、それをコンパイルするのにほぼ2日間の作業が必要でした。うまくいけば、これがあなた(および他の人)があなたの問題をより速く解決するのに役立つでしょう。まだ見逃した点はありますが、午前2時であり、これ以上書く気はありません。もちろん、私はこれを改善するために誰の指針にも心を開いていますので、コメントしてください。寝たら、仕事などで返信します:-)
ディスクへの冬眠がそんなにすばらしいとは思いません。最後に寝て行きました。しかし、私にとっての問題は、ハイバネーションを実行できるようにするためだけに32GBファイルを使用することでした。最初のスワップファイルは2GBで、ほとんどが空でした。YMMV。それにもかかわらず、幸運を!そして、ログから始めましょう!
$ sudo apt install linux-generic-hwe-18.04
ハードウェアによってlinux-generic-hwe-18.04-edge
は一見の価値があるかもしれません)。
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なしで)て動作するかどうかを確認します
私にとっては、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つでした。たぶんそれは、カーネルの更新が失敗しただけのせいかもしれません。
これが誰かを助けることを願っていますが、私は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
履歴書が見つからないか間違っている場合は、ブートカーネルを再度更新する必要があります。
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
は動作していません。それ以外の場合、正常に動作していることを示します。