PM: 休止状態イメージが存在しないか、読み込めませんでした

PM: 休止状態イメージが存在しないか、読み込めませんでした

で休止状態になった後systemctl hibernate、システムはシャットダウンされたかのように正常に起動します。カーネル行にresumeパラメータがあり、mkinitcpio.confにresumeフックがあります。

関連するカーネル メッセージは次のとおりです。

$ dmesg | grep -i swap
[    0.000000] Command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[    0.000000] Kernel command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[    0.350295] PM: Checking hibernation image partition /dev/sda4
[    8.776686] Adding 8191996k swap on /dev/sda4.  Priority:-1 extents:1 across:8191996k FS
$ dmesg | grep -i hibern
[    0.350295] PM: Checking hibernation image partition /dev/sda4
[    0.350301] PM: Hibernation image not present or could not be loaded.

残された唯一の可能性はsystemctl ディスクに書き込まなかった実際、コマンドを実行すると、最初に画面が数秒間空白になり、その後ターミナルが再び表示され、最後に自動的にシャットダウンします。

pm-utils は systemd ではうまく動作しないという記事を読みました。そのため、これに切り替えたくありません。何か提案はありますか?

ありがとう!

答え1

@AdrianRatnapala のコメントを詳しく説明するには、次のことが必要です。

  1. スワップパーティションのUUIDを見つけます。パーティションがsdb3だとすると、

    $ ls -l /dev/disk/by-uuid/ | grep sdb3
    lrwxrwxrwx 1 root root 10 окт.   9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
    
  2. を開き/etc/default/grub、 で始まる行を見つけますGRUB_CMDLINE_LINUX_DEFAULT="。引用符の間に を追加しますresume=/dev/disk/by-uuid/your-swap-uuid。例:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/1dd7e123-1f82-45f0-a202-0ff3ea6f081a"
    
  3. ルートとして実行update-grub
  4. 新しいカーネルコマンドラインを使用するには再起動が必要です。

答え2

この問題で困っている他の人の役に立つかもしれないので、ここで私の成功例を共有したいと思います。要点は、詳細を省略したい人のために、/etc/default/grub ファイルの GRUB_CMDLINE_LINUX_DEFAULT 行を変更して update-grub を実行した後、休止状態を試す前にマシンを完全にシャットダウンして再起動してください。

詳細: 上記のアドバイスに従い、/etc/default/grub の GRUB_CMDLINE_LINUX_DEFAULT 行に resume=UUID= パラメータを追加して、Lenovo ThinkPad T480 (Debian 9 と Windows のデュアル ブート) の Linux インストールでハイバネーションを正常に実装しました。しかし、最初は機能しませんでした。パラメータを追加し、update-grub を実行し、ハイバネーション (systemctl-hibernate) を試みました。システムはハイバネーションしたように見えましたが、電源を入れ直すと、以前の画面イメージが表示され、数秒間そのままになった後、マシンは通常、最初の起動時に表示されるログイン画面に入りました。ハイバネーション前の作業はすべて失われていました。最終的に、変更された GRUB_CMDLINE_LINUX_DEFAULT 行がカーネルに渡されていないことに気付きました (grep 'command line' syslog)。さらに努力した結果、完全なシャットダウンと再起動を行うと、変更された行が渡されることがわかりました (grep 'command line' syslog を再度実行)。その後、systemctl hibernate は以前と同様に休止状態を誘発しましたが、電源を入れるとマシンの以前の状態が正しく復元されました。

関連情報