ターミナルコンピュータに接続したら、udevruleにUSBスティックまたはSDカードを自動的にマウントするようにしたいと思います。これを達成しようとした方法は、udevruleを追加し、root以外のユーザーとしてデバイスをマウントするpmountの機能を利用することでした。
次の追加ルールはmyで定義されていますconfiguration.nix
。
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="block", RUN+="${pkgs.bash}/bin/bash -c '${pkgs.pmount}/bin/pmount --sync --umask 000 %N &>> /tmp/udev-pmount.log'"
'';
エラー出力は/tmp/udev-pmount.log
次のとおりです。
mount: /media/sdd2: permission denied.
/mediaフォルダには777権限があり、空です。
sudo
しかし、同じコマンドを手動で実行すると機能します。
これを行うために、NixOSでpmountとudevを正しく機能させる方法がわかりません。
参考までにリンクを追加しました.nix 自動マウント、同じような目的を達成する必要があります。しかし、KERNEL=="sd[a-z][0-9]"
何も一致しないので動作しません。
ベストアンサー1
次のソリューションはpmount
扱いませんが、再現可能な方法でストレージを自動的にマウントできる最も簡単なudev自動マウントルールは次のとおりです。
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", RUN{program}+="${pkgs.systemd}/bin/systemd-mount --no-block --automount=yes --collect $devnode /media"
'';
解決策が見つかりました。アーチウィキから、これを使用した自動マウントに対するさまざまな回答で言及されていますudev
。