Xubuntu 22.04中USB分区被udev脚本与系统自动双重挂载的问题排查
碰到这种双重挂载的情况,大概率是因为Xubuntu 22.04默认的自动挂载服务还在工作——你的udev脚本只是额外执行了挂载操作,但并没有阻止系统自带的自动挂载流程,而树莓派OS的默认自动挂载逻辑和Xubuntu不一样,所以没出现这个问题。下面给你几个排查和解决的方向:
阻止udisks2处理目标分区
Xubuntu默认用udisks2服务来自动挂载可移动介质,它会监听udev事件并处理挂载。你需要在udev规则里明确告诉它忽略这些分区,只让你的脚本处理。
打开你的udev规则文件,在原有规则里添加ENV{UDISKS_IGNORE}="1"这一行,修改后的规则示例:ACTION=="add", KERNEL=="sd[c-z]*", ENV{UDISKS_IGNORE}="1", RUN+="/path/to/your/script.sh"修改完成后,记得重新加载udev规则生效:
sudo udevadm control --reload-rules && sudo udevadm trigger检查桌面环境的自动挂载设置
Xubuntu的桌面文件管理器(Thunar)本身也可能带有自动挂载功能,即使udisks2被忽略,它也可能触发挂载。你可以打开Thunar,依次点击「编辑」→「首选项」→「高级」,取消勾选「插入可移动介质时自动打开」或类似的自动挂载选项,测试是否还会出现双重挂载。排查snap相关的自动挂载
你提到snapd会生成/dev/loop*设备,有可能是snap版的应用(比如snap打包的文件管理器或工具)在后台处理了挂载。可以用snap list查看已安装的snap应用,暂时禁用可疑的应用(比如文件管理器类),看看是否能解决问题。验证挂载时序与日志
有时候可能是挂载时序的问题——你的脚本挂载后,系统的自动挂载流程又触发了一次。可以在你的shell脚本里添加日志记录,比如:echo "[$(date '+%Y-%m-%d %H:%M:%S')] 脚本挂载设备 $DEV 到 /your/mount/path" >> /var/log/usb-mount.log
同时用journalctl -f实时查看系统日志,搜索udisks2相关的条目,对比两者的挂载时间点,就能明确是谁触发了第二次挂载。
备注:内容来源于stack exchange,提问作者Jr rbb

