2021.12.x Arch Linuxインストールでディスクの一時停止と再開を設定しています。私の質問は、復元時にパーティションロックを安全に(データを失うことなく)ロック解除することです。
これが私の設定です。ブートローダはgrub 2.06で、私はbusyboxベースのinitramfsを使用しています。関連パーティションは次のとおりです。私はLVMを使用しません。
# partition encrypted mountpoint decrypted volume name
- --------- --------- ---------- ---------------------
...
3 root luks2 / cryptroot
4 swap luks2 [SWAP] cryptswap
...
私は/etc/mkinitcpio.conf
これらのフックを構成しました。
HOOKS=(base udev ... openswap openroot ... resume ... filesystems fsck)
組み込み機能を使用しません。暗号化フック。 1つのデバイス(通常はカーネルパラメータで指定されたルートデバイスのみ)をロック解除できますが、暗号化されcryptdevice
たスワップデバイスもロック解除する必要があります。したがって、私は暗号化フックの代わりに2つのカスタムフックであるopenswapとopenrootを使用しました。 openswap フックはデフォルトで実行されます。cryptsetup luksOpen <swap device> cryptswap
パスワードの入力を求められます。 openrootフックはルートパーティションデバイスで同じことを行いますcryptsetup luksOpen <root device> cryptroot
。
次に組み込まれた履歴書フックスイッチングデバイスのメジャーおよびマイナーデバイス番号を書きます。/sys/power/resume
。
printf "$devmajor:$devminor" >/sys/power/resume
このときの状況は2つあります。
ケース 1: 完全終了後に開始する場合
完全にシャットダウンした後にコンピュータを起動すると、ロック解除されたスワップパーティションに休止状態のイメージがありません。回復する内容がないため、通常の起動が行われます。この時点で、ルートパーティションはopenrootフックを介してロック解除され、ブートが正しく進行します。
この場合、セキュリティ上の問題はありません。
ケース 2: ディスクへの停止後に起動する場合
以前は、ディスクサスペンドを起動すると、ルートパーティションがロック解除されマウントされた状態になり、休止状態のイメージはその状態をそのままキャプチャしました。この休止状態イメージを使用してカーネルを復元した後、システムは(すでに)ロック解除/マウントされたルートパーティションデバイスを引き続き使用します。
私の問題が発生する場所は次のとおりです。
私はこれが良くないことを知っています。mount
一時停止と再開の間のデバイスです。例えば、kernel.org と呼ばれる:「一時停止と再開の間にディスクのどの部分にも触れたら……データにさよならを言ってください。私の設定ではこれは行われません」
cryptsetup luksOpen
一時停止と再開の間のデバイスにもこれは悪いですか?これがcryptsetup luksOpen
ディスクに触れること(上記のKernel.orgの用語)に該当しますか? initramfs openrootフックは一時停止cryptsetup luksOpen <root device> cryptroot
と再開の間で実行されることを覚えておいてください。
では、どのように対処すべきでしょうか?
答え1
それ自体は純粋にcryptsetup luksOpen
読み取り専用の作業です。ただし、ブロックデバイスのロックを解除する簡単な作業では、udevルールなどの依存関係をトリガーして自動組み立て(raidおよびlvmデバイスの場合)をトリガーすることができます。できます。
したがって、正しい順序でフックを実行することで、難題全体を避けることをお勧めします。
resume
フックにスワップパーティションのみが必要な場合(つまり、他のスワップデバイスまたはスワップファイルが関連していない場合)、直後にresume
実行する必要があります。openswap
openroot
それ以外の場合は、回復にまったく不要なルート暗号化パスワードを要求し、設定で誤ったセキュリティを提供し、最終的に履歴書から削除されます。
実行を停止するコードがない場合、停止したシステムはフックに誤ったresume
パスワードを繰り返し入力してもフックが成功するはずですopenroot
。したがって、これはフックの順序を変更する前に理論をテストする簡単な方法です。