Linux
如何配置 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
但是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/
- 為您最喜歡的目標啟動它。