新しいSSDに交換した後ハイバネーションが失敗するようになってしまいました。 その原因を調査し、解決する方法を記録します。

環境

  • OS: Pop!_OS 22.04 LTS x86_64
  • Host: ROG Zephyrus G14 GA401QM_GA401QM 1.0
  • SSD: KIOXIA EXCERIA G2 SSD-CK1.0N3G2/J
  • BootLoader: systemd-boot

問題

ハイバネート後以下のようなエラーが表示されて一切操作を受け付けなくなる

# OCRで読み出したため一部誤字があると思いますが気にしないで下さい
[ 665.953097] EXT4-fs error (device sda5): ext4_find_entry :1436: mode #31981569: comm dbus-daemon: reading directory lblock 0 
[ 665.955037] EXT4-fs error (device sda5): ext4_find_entry :1436: mode #262145: comm gdm3: reading directory lblock 0 
[ 670.931513] systemd-journald[283]:  Failed to write entry (9 items, 256 bytes), ignoring: Read-only file system
[ 670.932844] systemd-journald[283]:  Failed to write entry (9 items, 256 bytes), ignoring: Read-only file system 
[ 670.934250] systemd-journald[283]:  Failed to write entry (9 items, 257 bytes), ignoring: Read-only file system 
[ 670.935554] systemd-journald[283]:  Failed to write entry (9 items, 337 bytes), ignoring: Read-only file system 

原因

SSDとの相性によってAPSTという電力管理機能が働かず結果として上記のようなエラーが発生します。

設定のの確認方法

$ sudo apt install -y nvme-cli
$ sudo nvme get-feature -f 0x0c -H /dev/nvme0 | grep "Autonomous Power State Transition Enable (APSTE):"
#         Autonomous Power State Transition Enable (APSTE): Enabled

解決策

APSTの無効化

“/boot/efi/loader/entries/Pop_OS-current.conf"のオプションに"nvme_core.default_ps_max_latency_us=0"を追記します。 以下のコマンドでsplashの直前に追記できます。

$ sed -i -e "s/splash/nvme_core.default_ps_max_latency_us=0 splash/" /boot/efi/loader/entries/Pop_OS-current.conf

設定例

title Pop!_OS
linux /EFI/Pop_OS-d750caec-c311-4e64-b419-fe0dadab1736/vmlinuz.efi
initrd /EFI/Pop_OS-d750caec-c311-4e64-b419-fe0dadab1736/initrd.img
options root=UUID=d750caec-c311-4e64-b419-fe0dadab1736 ro quiet loglevel=0 systemd.show_status=false nvme_core.default_ps_max_latency_us=0 splash

もしGRUBを使用しているのであればリンク先の記事をお読み下さい。

参考

Ubuntu 20.04 で突然「EXT4-fs error」となり、フリーズする問題の解消 systemd-boot - ArchWiki