在Debian中,我为我的ntfs usb hdd制定了一个特殊规则。当插入它时,它被安装在特定的子文件夹下的/media中。
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/mount <options>", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount <options>"我告诉杰西它停止工作了。我发现,在udev更改之后,您不能使用挂载,建议使用udisks2或一些自写系统单元。我选择了udisks2并重写了如下规则
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/su storage_user -c '/usr/bin/udisksctl mount --block-device /dev/mx1 --filesystem-type ntfs --options locale=en_IE.UTF-8,fmask=0113,dmask=0002 --no-user-interaction'", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/usr/bin/udisksctl unmount --block-device /dev/mx1 --no-user-interaction"它不起作用。在syslog中,我看到:
Error looking up object for device /dev/mx1但是,如果我从cli运行这个命令,它就能正常工作。我相信,由于systemd服务/dev/mx1的异步特性,当udisk2试图挂载usb时,还没有准备好。
发布于 2015-07-22 19:05:06
不幸的是,我找不到udev和udisks2不合作的原因。但我找到了解决问题的方法,这里。下面是一个简单的例子,如何实现ntfs的自动化。首先是安装驱动器的脚本mount.sh。
#!/bin/bash
mkdir -p /media/usbhdd
mount -t ntfs-3g -o locale=en_IE.UTF-8,fmask=0113,dmask=0002,uid=storage-user,gid=storage-group /dev/mx1 /media/usbhdd然后在/etc/ systemd /system/挂载-hdd.service中创建一个system d单元。
[Unit]
Description=mount usb hdd
[Service]
Type=forking
ExecStart=/usr/local/scripts/storage/mount.sh
[Install]
WantedBy=multi-user.target最后是udev规则
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*1", ATTRS{serial}=="<serial_number>", RUN+="/bin/systemctl start mount-hdd"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount /media/usbhdd", RUN+="/bin/rmdir /media/usbhdd"https://unix.stackexchange.com/questions/217265
复制相似问题