🍣すしでもどうですか

略してすしどう。趣味のサーバーいじりとかメモ。

Linux Mint 21.2 でハイバネートできるようにする(rEFInd を使っている&スワップがパーティションではなくファイルの場合)

スワップパーティションに置いている場合の設定は

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"

これで再起動して、ハイバネートできれば完了です。

ただ、こちらも試してはみたのですが、私の環境ではどうもスワップファイルを使った状態では時々復帰に失敗します。スワップパーティションを使った場合は今のところ完璧に復帰してます。