暗号化されたスワップファイルを有効にするようにsystemdを設定する方法は?

暗号化されたスワップファイルを有効にするようにsystemdを設定する方法は?

私のもの前の質問暗号化されたスワップファイルを追加するコマンドを生成します。

# One-time setup:
fallocate -l 4G /root/swapfile.crypt
chmod 600 /root/swapfile.crypt

# On every boot:
loop=$(losetup -f)
losetup ${loop} /root/swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

しかし、アーキテクチャLinux使用システム、スワップファイルを自動的に有効にするためにsystemdを取得する最良の方法はわかりません。 システム交換dev-mapper-swapfile.swap次のユニットが必要であるという提案がありました。

[Unit]
Description=Encrypted Swap File

[Swap]
What=/dev/mapper/swapfile

これでswaponコマンドが実行されます。しかし、prepareコマンドを実行する方法がわかりません/dev/mapper/swapfile。他のユニットに対する依存関係を宣言しなければならないと思いますdev-mapper-swapfile.swapが、そのユニットがどんな姿であるべきかはよく分かりません。

答え1

次の点を確認してください。

これは、ブロックデバイスがサポートする暗号化ボリュームに適用されます。ファイルサポートボリュームでも機能する必要があります。

修正する:

これは私にとって効果的です。

# Automatically generated by systemd-cryptsetup-generator

[Unit]
Description=Cryptography Setup for %I
Documentation=man:[email protected](8) man:crypttab(5)
SourcePath=/etc/crypttab
Conflicts=umount.target
DefaultDependencies=no
BindsTo=dev-mapper-%i.device
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=umount.target
Before=cryptsetup.target
After=systemd-random-seed-load.service

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'swap2' '/swap.test'     '/dev/urandom' 'swap'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'swap2'
ExecStartPost=/sbin/mkswap '/dev/mapper/swap2'

このファイルを入手する手順:

  • /etc/crypttab にエントリを作成します。swap2 /swap.test /dev/urandom swap
  • 次のコマンドを実行してください。/usr/lib/systemd/system-generators/systemd-cryptsetup-generator これにより、ディレクトリにユニットファイルが作成されます/tmp/
  • 生成されたユニットファイルを検索します。
  • それを開いて削除するswap.test.device項目After=とディレクティブBindsTo=。これは、定義上ファイル交換用のデバイスがないため重要です。これにより、ユニットファイルが起動しなくなります。
  • ユニットファイルを次の場所にコピーします。/etc/systemd/system/
  • お気に入りの目標のために有効にしてください。

答え2

これが私の最終結果です。t-8chの答え。

これを入れてください:/etc/systemd/system/[email protected]

# Automatically generated by systemd-cryptsetup-generator
# then manually tweaked

[Unit]
Description=Cryptography Setup for %I
Documentation=man:[email protected](8) man:crypttab(5)
SourcePath=/etc/crypttab
Conflicts=umount.target
DefaultDependencies=no
BindsTo=dev-mapper-%i.device
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=umount.target
Before=cryptsetup.target
After=systemd-random-seed-load.service

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'swapfile' '/root/swapfile.crypt' '/dev/urandom' 'swap,cipher=aes-cbc-essiv:sha256,size=256'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'swapfile'
ExecStartPost=/sbin/mkswap '/dev/mapper/swapfile'

これを入れてください/etc/systemd/system/dev-mapper-swapfile.swap

[Unit]
Description=Encrypted Swap File
[email protected]
[email protected]
Before=swap.target

[Swap]
What=/dev/mapper/swapfile

[Install]
WantedBy=swap.target

ワンタイム設定(root)はスワップファイルを作成し、将来の起動のために有効にし、すぐに使用を開始します。

fallocate -l 4G /root/swapfile.crypt
chmod 600 /root/swapfile.crypt
systemctl enable dev-mapper-swapfile.swap
systemctl start dev-mapper-swapfile.swap

コマンドのサイズfallocateによって、スワップファイルのサイズが決まります。

/etc/crypttab書く必要はありません。これは単なる作成方法です[email protected]。完了したら、もう必要ありません。

関連情報