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. 以 root 身分運行update-grub
  4. 需要重新啟動才能使用新的核心命令列。

答案2

我想在這裡分享我的成功,因為它可能會幫助其他人解決這個問題。對於想要跳過細節的人來說,底線是:更改 /etc/default/grub 檔案中的 GRUB_CMDLINE_LINUX_DEFAULT 行並執行 update-grub 後,在嘗試休眠之前完全關閉並重新啟動電腦。

詳細資訊:我剛剛在我的 Lenovo ThinkPad T480(雙重開機 Debian 9 和 Windows)的 Linux 安裝上成功實現了休眠,按照上述建議將resume=UUID= 參數添加到 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 行。但第一次沒有成功。我添加了參數,運行 update-grub,並嘗試休眠(systemctl-hibernate)。系統似乎處於休眠狀態,但是當重新啟動時,先前的螢幕影像會出現並保留幾秒鐘,然後機器進入通常在首次啟動時出現的登入畫面;冬眠前的所有工作都消失了。我終於注意到(grep 'command line' syslog)更改的 GRUB_CMDLINE_LINUX_DEFAULT 行尚未傳遞到核心。經過更多努力,我發現完全關閉並重新啟動會導致更改的行被傳遞(再次 grep '命令行' syslog )。之後,systemctl hibernate 像以前一樣引發休眠,但在開機時機器的先前狀態已正確恢復。

相關內容