誕生以来、Linuxユーザの間で好き嫌いが大きく分かれるプログラムの代表にsystemdがある。現在、メジャーなLinuxディストリビューションのほとんどはデフォルトの起動プロセスとしてsystemdを採用しているが、その変更を決めるときはたいてい、どのコミュニティでもひと悶着がつきまとう。たとえば2年前にDebianがsystemdへの移行を決定したときも、開発者の間で意見が二分された状態になり、最後はチェアマンの裁定でsystemdに落ち着いている。また昨年、UbuntuがUpstartからsystemdに移行した際も、多くのユーザや開発者が混乱に陥ったことは記憶に新しい。
そしてそのsystemdがそのアップデートにあたり、ふたたび開発者コミュニティに議論をもたらしている。5月21日(世界標準時)にリリースされた「systemd 230」をめぐり、DebianやFedoraなどの主要開発メンバーが怒りの声にも近い、強い口調で批判を展開しているのだ。
systemd 230では、ユーザがログアウトすると、すべてのユーザプロセスを強制的にターミネートするという仕様がデフォルト実装されている。前バージョンまでは「KillUserProcesses」のデフォルト値は"no"だったが、230からはこれが"yes"に設定されているのだ。ログアウトするたびに、セッションの種類のいかんを問わずバックグラウンドプロセスがkillされてしまうので、ssh-agentやscreenといったセッションもすべて無効になってしまう。systemd開発チームは「(systemdが提供する)lingerを有効にすれば、セッションが閉じられたあとでもプロセスを実行できる」と説明しているが、lingerは誤ってセッションを破壊してしまうケースも少なくないため、誰にでも使える回避策としてはやはり"KillUserProcesses = no"にするしかないようだ。
Debianの有名開発者のひとりであるフース・スリーペン(Guus Sliepen)氏も今回のsystemdの改変に強く異議を唱えるひとりだ。同氏はDebianのメーリングリスト上にて「今回のsystemdの改変は多くのユーザの期待を裏切るもの。まったくもってひどい決定」とsystemdのメンテナーを強く批判しており、Debianにおいては「systemdの設定ファイル(/etc/systemd/logind.conf)においてkill-user-processesを含めないか、もしくはKillUserProcesses=noの状態でシステムコンパイルすべき」と主張している。
- systemd kill background processes after user logs out - Debian Bug report logs
起動プロセスというシステムを支えるもっとも基本的で重要なプログラムでありながら、systemd周辺ではつねに多くの議論が発生する。今回の仕様変更が各ディストリビューションの次のバージョンにもたらす影響も小さくなさそうだ。