目前,我正在努力从受限的 snap 环境连接到 USB 设备,不知道如何解决这个问题,但仍然在学习 snap 限制/udev 规则等。
简而言之,这是我已经尝试并验证过的:
- raw-usb slot-plug 连接 snapd 和开发的 snap (使用 snap 接口验证)
- USB 设备通过库进行连接,可以通过 readelf 查看库的依赖关系:
- 满足这些依赖关系,并且二进制文件在经典 snap 环境中成功运行,并有来自二进制文件的控制台输出:
从 snap 环境运行此二进制文件时,它也会执行(因此没有依赖问题),但不会拾取 USB 设备。
但是,插入后设备确实注册为 /dev:
- 调用 lsusb 时使用 ID:
- 为设备指定了一个 udev 规则文件。通过在经典 snap 环境中实现设备的接口二进制文件,包含这些 udev 规则并不重要。但是,将以下行粘贴到创建的 snap 规则文件 (/etc/udev/rules.d/.rules) 中并重新启动系统,但没有任何效果。:
ENV{hotplugscript}="/etc/.mplab_ide/mchplinusbdevice"
动作!=“添加”,GOTO=“check_remove”子系统=“usb_device”,GOTO=“check_add”子系统!=“usb”,GOTO=“rules_end”
标签="check_add"
ATTR{idVendor}=="04d8", MODE="666", RUN+="%E{hotplugscript} 添加" GOTO="rules_end"
标签="check_remove"
ACTION=="删除", RUN+="%E{hotplugscript} 删除 %E{PRODUCT}"
标签="规则结束"
但是例如,也找不到目录/etc/.mplab_ide/mchplinusbdevice
并且不确定一切意味着什么以及是否正确实施。
希望我的解释有意义。任何建议或额外的调试技巧都将不胜感激。不知道如何进一步解决这个问题