web-dev-qa-db-ja.com

18.04の休止状態

Ubuntu 18.04のHibernationはそのままでは機能しませんでした(つまり、Sudo systemctl hibernate)。それで、私はそれを修正するためにいくつかの試みをしばらく前に行いましたが、残念ながら私がしたことを正確に思い出せません。

でも今:

Sudo hibernate

システムが正常に休止状態になり、次回の起動時にシステム状態が正常に復元されます。ただし、ログイン画面は表示されませんが、これは良くありません。そして、そのような再開後よりも多くのアプリケーションを実行している場合、システムは最大20分間フリーズする可能性があります(アプリケーションのウィンドウが表示され、マウスポインターを移動できますが、クリックに応答しません)が、その後は正常に動作します。

Sudo systemctl hibernate

何かをしてシステムをシャットダウンしますが、次のブート時にいくつかのメッセージが表示されます孤立したノードを削除し、最終的には休止状態がないかのようにクリーンブートします。

それをクリアして、GUIインターフェースで休止状態を有効にしてください。

同時に、メモリへのサスペンドとメモリからの再開は問題なく正常に動作します、再開時のログイン画面

私が持っている主な質問は、2つのメカニズムhibernatesystemctl hibernateのどちらを18.04で使用するかです。

詳細

システムにスワップパーティションがあります

$ lsblk | grep SWAP
└─sda5   8:5    0  16,8G  0 part [SWAP]
$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15894        3386        9945        1311        2561       11848
Swap:         17163        2150       15013

/etc/default/grubには

GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash resume =/dev/sda5" GRUB_CMDLINE_LINUX = ""

そして

$ cat /sys/power/state
freeze mem disk
$ cat /sys/power/disk
[platform] shutdown reboot suspend test_resume

[解決済み] :-)

最後に、冬眠を機能させることができました。私が主題について深く理解していない限り、私はむしろ自分がしたことを説明したいと思います。そう

  1. 完全に削除pm-utilsおよびuswsusp、次にSudo update-initramfs -c -k allおよびreboot

この休止状態の試行は、再開ではなくクリーンブートになりました。それで

  1. 再インストールsystemdその後、デバイス名をUUIDに変更して

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash resume = UUID = 2c8ec945-6967-4538-93ef-49eb4df6f2a1"

/etc/initramfs-tools/conf.d/resume

RESUME = UUID = 2c8ec945-6967-4538-93ef-49eb4df6f2a1

それから

$ Sudo initramfs -c -k all
$ Sudo update-grub
$ reboot

この後Sudo systemctl hibernateと再開は成功しましたが、ログイン画面はありません。

  1. Settings(gui)で電源ボタンのアクションに「Hibernate」を割り当てました

電源ボタンを押すと、システムは休止状態になり、ログイン画面から復元します。

関係者全員に感謝します


UPD:今、私はさらに良い解決策を見つけました-スワップファイルを使用してください

Ubuntu 18.10の新しいデスクトップインストールでこれを検証し、両方ともデフォルトでswapfileを使用するため、新しい18.04デスクトップインストールでも動作すると仮定します。つまり、スワップを割り当てませんpartitionデフォルトでは。ただし、デフォルトのスワップファイルはシステムメモリサイズに関係なく2Gbなので、増やす必要があります。

完全な説明は、たとえば here です。

8
Sergey K

休止状態の質問に対する2つの優れた回答があります。ここでもう少し詳しく説明します。

古代古代の森カミの答え: buntu 18.04は冬眠後に再開できません

Zannaに対する回答: buntu 16.04で休止状態にするには?

私は通常Hibernateを使用しませんが、最近バグを追跡しながら使用しようとしましたが、18.04で作業するには、/ etc/default/grubに行を追加して、どこから再開するかを伝える必要があることに気付きました。

16.04では、「resume =」パラメータをgrubに追加する必要はなかったので、変更は比較的最近になったと思います。

おそらくUUID(Universally Unique Identifier)を使用するのが最善であり、「ディスク」プログラムを使用してスワップパーティションのUUIDを見つけ、そこからコピーして貼り付けることができます。

Sudo nano /etc/default/grubを使用して行に追加します

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

引用符の間に追加のカーネルパラメーターresume=UUID=theUUIDofyourswappartitionが含まれるようにします。

あなたのものは異なりますが、私の場合、行は次のとおりです。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=549816d3-0ed8-44fa-a7e4-968db519a141"

(exit nano using Ctrl+x、 押す y 変更を加えるため enter ファイル名を受け入れる)

変更を有効にするにはSudo update-grubを実行する必要がありますが、次回の再起動時に問題なく休止状態にできるはずです。

私が知っている限り、休止状態の機能は中断したところから再開することであるため、ログイン画面に移動してパスワードを要求するようには設計されていません。

パスワードを要求するように変更できるかどうかはわかりませんが、他の誰かが何をすべきか知っているかどうかを確認するために別の質問をする価値があるかもしれません。


スワップファイル

別のスワップパーティションではなくスワップファイルがある場合は、追加のresume_offset=パラメーターも追加する必要があります。

Arch Linux Wikiには これに関するすばらしいセクション がありますが、基本的には、スワップファイルはUbuntuがインストールされているメインパーティション上にある必要があります。

resume_offset=に入れるオフセットを見つけるには、ターミナルを開いて入力します

Sudo filefrag -v /swapfile

次のようなものが得られます。

ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..   32767:      34816..     67583:  32768:            
   1:    32768..   63487:      67584..     98303:  30720:            
   2:    63488..   96255:     100352..    133119:  32768:      98304:
   3:    96256..  126975:     133120..    163839:  30720:   
etc...

physical_offset(この場合は34816)の下にある最初の行の最初の番号が必要です

ちょうど例として、UUIDとSwapfileを使用したマシンの物理オフセットを使用して、GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"行を次のように変更しました。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=09e601cd-5bac-491a-9115-fda1b2eb4664 resume_offset=34816"

Sudo update-grubを実行してリブートすることを忘れないでください。ただし、その後、休止状態は正しく動作するはずです。

10
pHeLiOn