UbuntuԴ??????usbԴ??????
首先明确需求:当USB设备插入计算机后,需要自动挂载到本地目录,源码b源并具备读写权限。源码b源
解决方案的源码b源九州源码站思路是利用udev,以下是源码b源一篇文章的相关内容:
文中提到“4. Udev小窍门-自动加载usb设备”,按照步骤操作,源码b源但并未达到预期效果。源码b源从日志中可以看出,源码b源rules的源码b源规则被成功执行,没有错误。源码b源因此,源码b源软件源码分享我查阅了官方文档。源码b源
虽然这篇文章是源码b源关于ArchLinux的,但4.1节中提到“Mounting drives in rules”,源码b源指出不要从udevrules中调用mount,源码b源并给出了两个原因:
1. systemd默认以独立的窗体 c 源码“mount namespace”运行systemd-udevd.service(参见namespaces(7)),这意味着挂载点对系统其他部分不可见。
2. 即使更改服务参数以解决这个问题(注释掉PrivateMounts和MountFlags行),还有一个问题是udev启动的程序在几秒后会杀死。对于FUSE文件系统(如NTFS-3G),mount会启动一个用户空间进程来处理文件系统内部;如果这个进程被杀死,极品dmi源码尝试访问文件系统时将出现“传输端点未连接”错误。
在Ubuntu版本的udev文档中,并没有提到systemd-mount。
不知道Ubuntu是否也是同样的原因,看起来是解密dmi源码命名空间问题导致当前用户看不到挂载点。
为了便于追踪问题,rules里的规则RUN直接写成RUN+="/lib/udev/xxxx.sh $devnode",这个脚本用于收集日志以排查问题。
脚本执行后,/aaa/bbb/ccc目录下仍未出现U盘中的文件。
目前尚未解决的问题就在这里。参考了systemd-mount的文档,本想去除--no-block尝试,但挂载命令执行一段时间后依旧失败。
以下是使用笨方法解决的方法:
执行ls /aaa/bbb/ccc命令后,/aaa/bbb/ccc才能挂载成功。因此:
这个方法非常麻烦,但目前算是解决了需求。希望有高手一起讨论,找出更完美的解决方案。
2024-11-29 23:19
2024-11-29 22:54
2024-11-29 22:42
2024-11-29 22:25
2024-11-29 22:11