Debian
udev+udisks2: udisksctl 給出“查找設備對象時出錯”
在 Debian Wheezy 中,我對我的 ntfs usb 硬碟有一個特殊規則。插入後,它會安裝在 /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>"
在我更新到 Jessie 之後,它就停止了工作。我發現在 udev 更改後,您無法使用 mount,建議使用 udisks2 或一些自寫的 systemd 單元。我選擇了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"
它不起作用。在系統日誌中,我看到:
Error looking up object for device /dev/mx1
但是,如果我從 cli 執行此命令,它就可以正常工作。我相信由於 systemd 服務的非同步特性,當 udisk2 嘗試掛載 USB 硬碟時,/dev/mx1 還沒有準備好。
- 我應該寫什麼規則?
- 網際網路上有什麼好的指南如何編寫自定義自動掛載規則,尤其是針對 ntfs 文件系統?
不幸的是,我找不到udev和udisks2不能一起工作的原因。但我在這裡找到了解決我的問題的方法。下面是一個簡單的例子,如何實現 ntfs usb 硬碟的自動掛載。首先是安裝驅動器的腳本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/mount-hdd.service中創建一個 systemd 單元
[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"