GNOME作为当今最受欢迎的开源桌面环境之一,承载着亿万用户的使用体验和开发者的技术期待。近年来,GNOME逐步加强了对systemd的依赖,这一动态引发了社区内外的广泛关注和讨论。深入理解GNOME为何以及如何强化systemd依赖,对于掌握Linux生态系统未来的发展方向具有重要意义。 GNOME与systemd的关系并非突然产生。早在2011年,GNOME便开始支持systemd的核心组件logind,用于管理用户会话和物理座位(seat)。随着2015年ConsoleKit支持被移除,logind逐渐成为GNOME运行环境的必备服务。
值得注意的是,logind虽然是systemd生态的一部分,但它本身能在不开启完整systemd守护进程的环境下以elogind形式运行,因而GNOME曾在一定程度上保持对非systemd初始化系统的兼容性,尤其他对于FreeBSD等非Linux操作系统尤为重要。 然而这一兼容性正在发生变化。GNOME正在引入多项对systemd深度依赖的新特性,其中最引人注目的是GDM(GNOME Display Manager)开始利用systemd用户数据库(userdb)来动态分配用户账户,以支持多会话登录和多座位配置。在此前,GDM依赖一些“黑科技”式的hack手段来实现这一功能,这些做法与现代的dbus-broker不兼容,也使得在非systemd环境中维护GDM的稳定性变得越来越困难。 随着这些hack被逐步移除,GDM现在通过systemd-userdb为每个登录界面分配唯一用户,从根本上提升了多会话和远程桌面登录的管理能力。这也为未来GNOME弃用历史悠久的AccountsService奠定了基础。
AccountsService虽然设计为一个暂时替代方案,十五年时间内仍被沿用,其局限性日益显现。依赖于systemd-userdb将带来更丰富的用户数据库支持与更为现代化的用户账号管理体验。 GNOME对systemd用户实例的依赖还体现在gnome-session的管理机制上。自GNOME 3.34版本起,gnome-session利用systemd的用户实例来启动和管理桌面会话的各种服务。早期,当systemd不可用时,gnome-session会回退使用一个基于.desktop文件的内置服务管理器。这个内置管理器源自2008年,为GNOME 2.24时代设计,已逐渐不适应现代桌面环境的需求,维护力度也相当有限。
如今,这一过时的内置服务管理器即将被废弃。原因不仅仅是维护成本和代码老旧,更在于它阻碍了诸如会话保存与恢复等新功能的实现。与此同时,GDM登录界面的会话现已转为由systemd管理,内置管理器因此失去用武之地且随之停用。未来版本中,GNOME将完全依赖systemd来启动、管理和监控会话服务,从而实现服务管理的标准化和现代化。 这种依赖增强势必给不采用systemd的发行版带来挑战。在传统上,多种Linux发行及Unix类系统维护了自己对非systemd环境的适配,如通过elogind替代logind,或为udev提供eudev解决方案。
面对GNOME的新需求,这些社区和厂商需要投入更多资源开发和维护systemd相关组件的替代品。 为了缓解过渡期的问题,GNOME开发者为GDM设计了临时替代方案。当编译时链接到elogind,GDM不会使用动态用户分配,而是依赖静态创建的gdm-greeter等多个用户账号。这种替代性机制虽然可以维持基本功能,但并非长久之计,未来GNOME版本可能彻底移除这一路径,强制依赖systemd的用户数据库服务。 此外,非systemd环境还需着手搭建完整的session服务管理系统,替换原生依赖systemd unit文件的机制。这不仅包括启动和管理服务的能力,还涉及通信机制的替换,如通过D-Bus与服务管理器交互的部分也需相应改写。
gnome-session二进制文件及其配套的gnome-session-ctl工具都深度绑定systemd,因此替代方案需要兼顾功能完整性和稳定性。 对于想继续在无systemd环境运行GNOME的用户和维护者而言,最迫切的任务是实现对systemd-userdb的完整支持。这包括提供systemd-userdbd Multiplexer API的替代实现,实现User Name Service(NSS)层和本地用户查询接口的桥接,并确保用户信息通过统一接口正常工作。 这一举措背后的根本目的在于简化GNOME的依赖栈,减少维护历史遗留代码和多重兼容路径的负担,从长远看有助于提升开发效率和系统稳定性。对于生态系统来说,这既是进步的阵痛,也是现代化发展的必经之路。 虽然增强对systemd的依赖将带来一定程度的生态适应难题,但GNOME团队保证在即将发布的GNOME 48版本之前仍会提供安全和漏洞修复支持,同时为发行版和社区提供升级过渡期。
社区用户若无法立刻完成相关适配,可选择暂时锁定较旧版本,或进行合理的版本混用尝试,前提是承认这类配置不受官方支持。 综上所述,GNOME加深对systemd的依赖是其面向未来的战略选择,意在构建更现代、统一且高效的桌面环境运行基础设施。此举对Linux发行版及其他平台的支持策略和技术维护提出更高要求,也呼吁整个开源社区协同努力,推动创新和兼容性的平衡。 理解和适应这一变局,积极参与替代方案的开发和测试,不仅是行业伙伴的责任,更是保障开源桌面环境持续繁荣的重要组成部分。随着GNOME与systemd合作日益紧密,未来Linux桌面的生态图景也必将随之展现出更为丰富和多彩的面貌。