mozixun
2026-09-23 20:42 Moderator
其实我本来准备玲珑权限管理做完之后再实现这个的(
既然大佬实现了,麻烦大佬进行投递了
目前我只实现了扩展强制加载和环境变量设置,因为之后玲珑的权限管理模型会做一次大的调整,这些功能本来当前不是官方主推的方案,因此我就暂停了这个项目,等玲珑权限模型定性后再进行跟进
还有个附加建议: 如果可以,版本号不要设置成0.0.19,因为你的实现没有增加额外的功能(指的是权限管理上),建议版本号设置为0.0.19-1或者0.0.19.1之类 (这只是个建议)
Reply Like 2 View the author


中文 




uab包:https://github.com/leleya-X/Linyaps-Seal/releases/download/Release_X86/io.github.leleya-x.linyaps-seal_0.0.18.0_x86_64_main.uab
Linyaps-seal是一个管理LL程序运行配置的软件,作者LFRon。该程序可以图形化修改用户的linglong运行时config来实现配置
原项目只有deb打包的版本。我修改了一些代码,在保留功能情况下做了一个桥接,让程序在LL容器下也能进行管理(写config)
容器内获权实现原理:
LL容器内的程序,环境和宿主隔离,没法调用宿主环境下的程序(就是类似flatpak-spawn --host的玩意),默认配置下home外的地方也看不到(虽然容器的roofts里挂了宿主的根目录,但玲珑官方文档并没有提到这东西)。而LL-seal需要/var/lib/linglong/states.json,这是玲珑包的安装清单,默认是读不到的。
为了解决这个问题,我编写了一个程序Linyapsd,一个通过dbus交互的,运行于宿主侧的小程序
默认情况下LL程序是能在宿主dbus上通信,并且对home是默认可写的。于是,我让这个ll-seal在第一次运行的时候,向宿主释放一个Linyapsd二进制文件与一个触发dbus服务。当seal在宿主执行操作时(比如读宿主的ll-packagemanager,操作ll-cli,读非home的文件等),通过dbus拉起linyapsd,让他在宿主侧完成操作,并通过dbus返回结果。
linyapsd程序,使用zig编写,用musl标准库,携带静态dbus。它理论上能在所有x86带dbus的linux机器上运行。其他架构没试过
之后也许会单开一个帖子来聊聊linyapsd吧
Linyaps-Seal玲珑版项目地址:https://github.com/leleya-X/Linyaps-Seal
linyapsd项目地址:https://github.com/leleya-X/Linyapsd
原项目https://github.com/LFRon/Linyaps-Seal/