Linux Mint 21.2 でハイバネートできるようにする(rEFInd を使っている場合) - 🍣すしでもどうですか
に書いたとおりですが、昨今では普通に Linux をインストールするとスワップパーティションではなくスワップファイルが設定されていると思うので、この場合のハイバネーション設定の方法を一応調べてみました。
やること
この記事を参考にしました。 forums.linuxmint.com
スワップパーティションを使う時は、カーネルパラメータでスワップパーティションの UUID をハイバネーションで使うよう指定していましたが、今度は/swapfile
があるルートパーティションの UUID と、/swapfile
へのオフセットを渡すようです。
参考にしたサイトではコマンドで取得した各種の値を環境変数に一旦置いてからファイルに書き込んでいますが、勉強がてら1つ1つシェルで実行して確認しながらやってみます。
ルートパーティションの UUID の取得
# findmnt / -o UUID -n ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ
これがルートパーティションの UUID です。
/swapfile のオフセットの取得
# filefrag -v /swapfile | awk 'NR==4{gsub(/\./,"");print $4;}' 2891776
あまり良く分かりませんが、filefrag
は指定されたファイルの断片化情報を表示するコマンドで、/swapfile
の先頭がパーティションのどこから始まっているかを取得するワンライナーのようです。
filefrag -v /swapfile
を単体で実行してみると、たくさんの数字が列挙されますが、これがファイルの断片化の状態を表しているようです。
先ほどのワンライナーで出てきた数字が、パーティション上で/swapfile
の先頭が置かれている物理オフセットです。この例は私の環境での実際の数字です。
/boot/refind_linux.conf
の修正
以下のように、/swapfile
が置かれているルートパーティションの UUID と、/swapfile
の置かれている位置を教えることで、カーネルにハイバネーション情報の在り処を分からせています。
"Boot with standard options" "root=UUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ ro quiet splash resume=UUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ resume_offset=2891776"
これで再起動して、ハイバネートできれば完了です。
ただ、こちらも試してはみたのですが、私の環境ではどうもスワップファイルを使った状態では時々復帰に失敗します。スワップパーティションを使った場合は今のところ完璧に復帰してます。