综合 systemd v258 升级运维笔记:tty 默认不可写、runlevel 消失、内核基线抬到 5.4

2026-10-04 21:03:43

systemd v258 升级运维笔记:tty 默认不可写、runlevel 消失、内核基线抬到 5.4

发布说明:
行为分析:

tty/pts 设备节点默认权限从 0620 改为 0600

这是升级后体感最直接的一条。原来 tty/pts 节点是 0620,属组 tty 可写,别的用户能直接往你的终端里写消息;现在默认 0600,相当于 mesg y 变成 mesg n。

影响范围:wall、write 这类往其他用户终端投递消息的操作会失败,跨用户广播的脚本、部分机房通知手段会直接踩到。

要保留旧行为,只能在构建时用 meson 选项回退:

meson setup build -Dtty-mode=0620

发行版若不改这个默认值,升级后就得靠应用侧绕开。

logind 把无 TTY 的系统用户会话归为 *-light 类

systemd-logind 对 PAM 会话的自动分类改了:

原分类原持有者v258 分类
backgroundroot / 系统账户background-light
user非 root 系统用户user-light

落在 *-light 意味着这类会话默认不再拉起 per-user service manager。典型命中对象是没有 TTY、非图形界面的 cron 任务和 FTP 会话(且以系统用户身份运行)。直接后果是脚本里调 systemctl --user 拿不到用户实例。

要恢复原分类,可以给 pam_systemd.so 传 class= 参数,或者设置 XDG_SESSION_CLASS 环境变量。图形会话和普通用户的会话不受影响。

System V 相关机制整块移除

v258 里下面这些东西已经不存在了:

  • /dev/initctl
  • initctl、runlevel、telinit 命令
  • 通过 init 命令切换系统状态
  • runlevel[0-6].target
  • runlevel 这个概念本身

传统 SysV 服务脚本本身在 v258 标记为废弃,v259 移除。有遗留脚本的机器,升级前要先把它们翻成原生 unit,别指望还能用兼容层跑。

/forcefsck、/fastboot、/forcequotacheck 文件方式失效

systemd-fsck 不再读取 /forcefsck 和 /fastboot,改用内核命令行选项或 credential:

fsck.mode=force

systemd-quotacheck 同理,/forcequotacheck 不再生效,改用:

quotacheck.mode=force

维护脚本、PXE 引导参数里靠 touch /forcefsck 触发检查的那套逻辑,升级后需要一并替换。

journalctl --follow 的退出码变了

journalctl --follow 在收到 SIGTERM、SIGINT,或者它写入的管道被断开时,现在以成功码退出。以前这些情况会返回非零,包在脚本里当守护进程拉起、靠退出码判断异常的逻辑要重新对一下。

内核基线抬到 5.4,推荐 5.7

最低内核版本从原来的基线升到 v5.4,推荐 v5.7。v259 计划再抬到内核 >= 5.10,推荐 >= 5.14。长期不升级内核的发行版和老旧虚拟化平台,升级 systemd 之前先把这层确认掉。

其他移除与变更

  • cgroup v1 支持移除,只挂载 cgroup v2(一笔带过,但老容器环境要先确认)。
  • systemd-stub v258 要求 ukify v257.9 或 v258 及以上。
  • OpenSSL 成为 systemd-resolved 和 systemd-importd 唯一支持的 TLS 后端,GnuTLS 与 libgcrypt 后端被移除。
  • v259 移除 libiptc 形式的旧 iptables 支持,只保留 nftables 后端。
  • v259 移除遗留的 /run/lock/;v260 移除 systemd-repart 的 FactoryReset EFI 变量。

v258 新增项里比较实用的有:PrivateUsers=full(映射整个 32 位 UID 范围)、ProtectHostname=private、Slice 单元的 ConcurrencySoftMax= / ConcurrencyHardMax=、按单元的目录配额(StateDirectoryQuota= 等,支持 xfs/ext4,不支持 btrfs)、systemd-factory-reset 工具,以及 /etc/hostname 中用 ? 占位符生成动态主机名。

参考:

复制全文 生成海报 systemd Linux 运维 内核

推荐文章

程序员茄子在线接单