如何通过 snap 访问硬件(/dev 节点)?

如何通过 snap 访问硬件(/dev 节点)?

如何配置 snap 包来包含对任意 /dev 的访问?

例如,假设内核驱动程序通过 /dev/foo 提供对某些真正精巧的硬件的访问,而用户空间快照包含想要读取和写入 /dev/foo 的守护进程。是否可以为快照服务提供该访问权限?

答案1

是的,您可以使用“接口”扩展 snap 的沙盒。特定接口描述了两个 snap 之间的特殊关系。例如,“mysql”可能描述了数据库和应用程序想要通过共享套接字进行通信的事实。通常,它们会被沙盒化并且无法查看同一个文件,但如果其中一个提供接口(“插槽”)并且另一个使用该接口(“插头”),那么它们的沙盒都会得到适当的扩展。

在您的情况下,您需要设计适当的接口并向 snapd 贡献一个补丁,以允许 snap 使用该插头或插槽来描述自己。

对于设备,我们将其概念化为“插入系统”的 snap,因此插槽名义上位于“内核 snap”上。本质上 snapd 是需要关注的地方。阅读一些关于插头、插槽和接口的内容,并仔细查看 snapd 代码。

相关内容