Skip to content

特定デバイスがマウントされているときに別のディレクトリへバインドする

NGSのディレクトリは非常に大きいので別のディスクに移動させた。このときゲームを起動する前に必ず手作業でバインドしていたが、面倒なのでディスクがマウントされたとき自動的にバインドさせたかった。

systemdユニットの前提条件でみたように RequiresMountsFor= で前提を記述すれば自動マウントもできるように思うが、不慮の事故でディスクが外れてしまったとき正しくアンマウントされるのか(切断されているから無理な気もするが)分からなかったので、必要なときユニットを起動しようと思って以下のような内容を書いた。

[Unit]
Description=PSO2NGS Files
ConditionPathIsMountPoint=/run/media/lufia/games
[Mount]
What=/run/media/lufia/games/Steam/steamapps/compatdata/2406134287
Where=%h/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata/2406134287
Type=none
Options=bind

途中で .local/share を参照しているのは、シンボリックリンクを含むパスは「Canonicalじゃない」と怒られるため。

ここまではいいが、マウントユニットの制約によりユニット名を Where= の内容と一致させなければならず、一致させると非常に長くなるので諦めた。バインドするとき root 権限が必要になる問題も解決できていない。