Linuxで休止状態でスワップファイルを使用できないのはなぜですか?

Linuxで休止状態でスワップファイルを使用できないのはなぜですか?

スワップファイルを使用してFedora 27システムを一時的に休止状態に切り替えようとしましたが、失敗しました。次の質問に対する答えはまた、システムを休止状態にするために専用のスワップパーティションを使用する必要があり、スワップファイルが機能していないことを示します。

Linuxがファイルの代わりにスワップパーティションを使用するのはなぜですか?

私はスワップファイルを生成したext3ファイルシステムを使用しています。休止状態に使用されないようにするには?

答え1

これを行うことができます。私は大きな文書を書いた。このSO回答ではuswsusp、世界中でinitramfsとGrubを正しく使用して設定すると機能します。

答え2

言ったようにここ(リンク提供:@don_crissti)システムはスワップファイルのヘッダーを見つける必要があります。これを行うには、スワップファイルを含むファイルシステムをマウントする必要があり、ジャーナリングファイルシステム(ext3など)はマウントできません。ディスクからの回復。

ドキュメントから引用:

swsuspでスワップファイルを使用するには、次のものが必要です。

1) スワップファイルを作成して有効にします。

# dd if=/dev/zero of=<swap_file_path> bs=1024 count=<swap_file_size_in_k>

# mkswap <swap_file_path>

# swapon <swap_file_path>

2)アプリケーションを使用してFIBMAP ioctlを使用してスワップファイルをbmapし、ファイルスワップヘッダの場所、つまりスワップファイルが<PAGE_SIZE>保存されているパーティションの先頭のオフセット単位を決定します。

3) カーネルコマンドラインに次のパラメータを追加します。

resume=<swap_file_partition> resume_offset=<swap_file_offset>

<swap_file_partition>はスワップファイルを含むパーティションで、2<swap_file_offset>のアプリケーションによって決定されたスワップヘッダーのオフセットです。 (もちろん、このステップは、次を使用してスワップファイルヘッダーのオフセットを決定したのと同じアプリケーションによって自動的に実行できます。FIBMAP読み書き制御)

または

Documentation/power/userland-swsusp.txtで説明されているSNAPSHOT_SET_SWAP_AREA ioctlの助けを借りて、パーティションとオフセットを設定するuserlandを使用してアプリケーションを一時停止します。これは、initrd または initramfs イメージで許可してスワップファイルを一時停止する唯一の方法です。 )。

関連情報