暗号化されたスワップファイルを有効にするように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/
  • お気に入りの目標のために有効にしてください。

おすすめ記事