Linux

如何配置 systemd 以啟動加密交換文件?

  • February 21, 2013

之前的問題產生了添加加密交換文件的命令:

# 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

但是Arch Linux使用systemd,我無法弄清楚如何最好地讓 systemd 自動啟動我的交換文件。 systemd.swap建議我應該有一個dev-mapper-swapfile.swap看起來像這樣的單元:

[Unit]
Description=Encrypted Swap File

[Swap]
What=/dev/mapper/swapfile

那將執行swapon命令。但我不確定如何執行命令來準備/dev/mapper/swapfile。我認為dev-mapper-swapfile.swap應該聲明對其他單元的依賴,但我不確定該單元應該是什麼樣子。

你可能想看看:

  • 密碼表(5)
  • systemd-cryptsetup@.service(8)
  • systemd-cryptsetup-generator(8)

這些適用於由塊設備支持的加密卷。它們也應該適用於文件支持的捲。

更新:

這對我有用:

# Automatically generated by systemd-cryptsetup-generator

[Unit]
Description=Cryptography Setup for %I
Documentation=man:systemd-cryptsetup@.service(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/
  • 搜尋生成的單元文件。
  • 打開它並從and指令中刪除條目。這很重要,因為根據定義,交換文件沒有設備。這可以防止單元文件的啟動。swap.test.device``After=``BindsTo=
  • 將單元文件複製到/etc/systemd/system/
  • 為您最喜歡的目標啟動它。

引用自:https://unix.stackexchange.com/questions/64693