为什么 systemd 对嵌入式 Linux 是一个问题

主要观点:

  • systemd 是一套用于系统管理的集成应用,多数 Linux 用户对其利弊不感兴趣,部分人强烈反对,主流 Linux 发行版已采用它。
  • systemd 适合通用计算机和现代集成图形桌面,但对嵌入式 Linux 系统可能不理想,会占用较多内存和启动时间。
  • 嵌入式 Linux 环境下,systemd 替代的许多服务有更小、启动更快的替代品,但有些已无替代。
  • 系统维护者喜欢 systemd,因为它集成度高,大多数 Linux 发行版都采用了它,仅少数不使用 systemd 的发行版不广泛。
  • udev守护进程等部分 systemd 组件目前无完全功能的非 systemd 实现,且随着 systemd 功能整合,维护替代品的动力将减少。

关键信息:

  • systemd 替代传统init进程及部分系统基础设施,在通用系统中优势明显,但在嵌入式系统中存在问题。
  • 以 Raspberry Pi 3B 为例,systemd init 进程占用约 0.3%的 4Gb 内存,比 SystemV init 大很多,systemd 日志守护进程systemd-journald也占用一定内存,而专门为嵌入式应用设计的syslogd-lite内存和 CPU 占用几乎为零。
  • 在嵌入式应用中,systemd 增加了启动时间,其可运行在低资源的 ARM 板上,但资源占用比例随内存减少而增加。
  • 多数服务在嵌入式环境下有更小、启动更快的替代品,但有些已无替代,如udev

重要细节:

  • systemd 本身约 200kB 大小,动态链接 26 个其他库,SystemV init 仅 40kB 且只链接标准 C 库。
  • 目前除 Gentoo 及其衍生物外,多数主流 Linux 发行版都采用 systemd,仅少数不使用 systemd 的发行版不广泛,维护困难。
  • udev守护进程目前无完全功能的非 systemd 实现,Gentoo 的替代eudev不再完全维护,systemd 的udev版本可在无 systemd 时优雅失败通信,但情况可能改变。
  • systemd 有时钟同步器systemd-timesyncd和 DHCP 客户端等,虽不如传统替代品功能全和准确,但启动快,在某些环境适用,目前 Chrony 仍广泛使用,但随着 systemd 普及,维护替代品的动力可能减少。
阅读 20
0 条评论