Udev
自動掛載加密的外置硬碟
我已經使用 cryptsetup 和密鑰文件加密了我的外部硬碟驅動器。我現在的目標是自動解密並將它們安裝在外掛上。我曾經使用此部落格文章(不幸的是德語)這樣做。這曾經在我的舊 Ubuntu 16.04 機器上工作,但自從我升級到 Focal 後,這不再工作了。我具體做的是:
- 添加
/dev/mapper/extdrive /mnt/extdrive xfs defaults,noauto 0 2
到/etc/fstab
.- 添加
ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ATTRS{serial}=="123456789", RUN+="/sbin/cryptsetup --key-file /root/.kf luksOpen $env{DEVNAME} extdrive"
到/etc/udev/rules.d/85-extdrive.rules
- 添加
ACTION=="add|change", SUBSYSTEM=="block", ENV{DM_NAME}=="extdrive", RUN+="/bin/mount /dev/mapper/$env{DM_NAME}"
到/etc/udev/rules.d/85-extdrive.rules
似乎驅動器是通過 luksOpen 打開但未安裝,即“添加|更改”規則不會觸發。如何找出自動掛載失敗的原因?如果我手動執行相應的命令,一切似乎都很好。獎勵:為什麼這種方法曾經在 16.04 中有效,但在 20.04 中不再有效?
謝謝!
mount
在 UDev 規則中不起作用,因為 UDev 使用自己的掛載命名空間執行。您需要改為使用systemd-mount
,有關詳細資訊,請參閱此 arch wiki 文章。從 udev 手冊頁:
請注意,由於在 systemd-udevd.service 上實施了預設沙箱,因此在 udev 規則中不允許執行訪問網路或掛載/解除安裝文件系統的程序。
這是相對較新的變化(我認為大約是 3 年前),所以我想這在 16.04 中還沒有出現。