我想要一个 udevrule 来自动安装 USB 记忆棒或 SD 卡(如果插入终端计算机)。我尝试实现此目的的方法是添加 udevrule 并利用 pmount 以非 root 用户身份挂载设备的功能。
以下额外规则在 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
顺便说一下,手动执行相同的命令是可行的。
我不知道如何让 pmount 和 udev 在 NixOS 中正常工作来完成该任务。
仅供参考我添加了一个链接自动挂载.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"
'';
解决方案已找到在 arch wiki 中,在有关 automount using 的各种答案中都提到了这一点udev
。