首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >udev+udisks2: udisksctl给出“查找设备对象时出错”

udev+udisks2: udisksctl给出“查找设备对象时出错”
EN

Unix & Linux用户
提问于 2015-07-20 21:59:18
回答 1查看 4.3K关注 0票数 3

在Debian中,我为我的ntfs usb hdd制定了一个特殊规则。当插入它时,它被安装在特定的子文件夹下的/media中。

代码语言:javascript
复制
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并重写了如下规则

代码语言:javascript
复制
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中,我看到:

代码语言:javascript
复制
Error looking up object for device /dev/mx1

但是,如果我从cli运行这个命令,它就能正常工作。我相信,由于systemd服务/dev/mx1的异步特性,当udisk2试图挂载usb时,还没有准备好。

  1. 我应该写什么规则呢?
  2. 是否有任何关于互联网的好指南,如何编写自定义的自动生成规则,特别是对于ntfs文件系统?
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-07-22 19:05:06

不幸的是,我找不到udev和udisks2不合作的原因。但我找到了解决问题的方法,这里。下面是一个简单的例子,如何实现ntfs的自动化。首先是安装驱动器的脚本mount.sh。

代码语言:javascript
复制
#!/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单元。

代码语言:javascript
复制
[Unit]
Description=mount usb hdd
[Service]
Type=forking
ExecStart=/usr/local/scripts/storage/mount.sh
[Install]
WantedBy=multi-user.target

最后是udev规则

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/217265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档