Latest evidence-based health information
Airpods

あなたの近くのLinuxディストリビューションを席巻している物議を醸すプロジェクト、systemdをご紹介します

あなたの近くのLinuxディストリビューションを席巻している物議を醸すプロジェクト、systemdをご紹介します
あなたの近くのLinuxディストリビューションを席巻している物議を醸すプロジェクト、systemdをご紹介します

Systemdは現在、Linux界で最も物議を醸しているプロジェクトの一つです。どれほど物議を醸しているか? systemdの開発者の一人であるレナート・ポエタリング氏は、悪意のある人々がビットコインを集めて彼を狙う殺し屋を雇っていると主張するほどです。もっと現実的な視点で言えば、「Boycott systemd」というウェブサイトがあり、様々な技術的メリットを理由にこのソフトウェアのボイコットを主張しています。

こうした反発はすべて、systemdの成功に対する反応です。systemdは、FedoraやOpenSuSEからUbuntu、Debian、そしてArch Linuxに至るまで、Linuxディストリビューションに採用されてきました(あるいは採用されつつあります)。GNOMEは時間の経過とともにsystemdへの依存度を高めています。DebianがGNOMEに戻った理由の一つは、systemdとの統合でした。systemdはどこにでも存在します。

では、一体何がこの騒動を引き起こし、激しい反発を引き起こしているのでしょうか?この熾烈な争いをもう少し詳しく見てみましょう。

Systemdは新しいinitシステムです

systemd は本質的に、古い SysV init システムの代替です。init システムはシステムを初期化するソフトウェアです。起動すると、init は適切なドライバーの読み込み、ネットワーク接続の有効化、様々なシステムサービスの起動、そして最後にログイン画面のグラフィカル表示といった役割を担います。SysV init は基本的に/etc/init.d配下のスクリプトを実行するだけの古いシステムです。

Linux、BSD、Chrome OS、そして Windows 以外の世界の最新情報を知りたいですか? Windows 以外の世界のコラムページをブックマークするか、RSS フィードをフォローしてください。

systemd の本質は、古くて使いにくい SysV init の現代的な代替手段です。イベントに応じてサービスを起動することもできます。例えば、USB プリンターを接続すると、接続されたデバイスに応答して印刷サービスを起動できます。特定のネットワークポートで接続を受信すると、そのポートを listen するように設定されたネットワークサービスを起動し、接続を転送できます。

SysV init と systemd の詳細な技術情報については、Jorgen Schäfer の「Why systemd?」をお読みください。

しかしsystemdはそれ以上のものだ

systemd を批判する人々でさえ、SysV は古く、置き換えが必要だという点では概ね同意しています。しかし、批判者たちは systemd が実際にはそれ以上の存在であることを正しく指摘しています。systemd は、他の多くの機能を含む大規模なプロジェクトであり、単なる init システムではなく、ソフトウェアスイートなのです。

systemd図 ウィキメディアコモンズ

systemd の構造の図解。

systemdプロジェクトには、ユーザーログインを管理するデーモンlogindと、テキストファイルではなくバイナリファイルに書き込むという議論のあるイベントログシステムjournaldも含まれています。systemdはudevプロジェクトとそのコードも吸収しました。udevは/dev/ディレクトリ内の仮想デバイスファイルの管理と、デバイスの接続・切断時のイベント処理を担当しています。systemdには、cronスタイルのタスクスケジューラと、ネットワーク接続を管理するデーモンnetworkdも含まれています。

最近、systemdはconsoledというユーザーモードのコンソールデーモンを採用しつつあります。これは、Linuxの仮想端末コードがカーネル自体から切り離された際に使用できるものです。カーネル開発者は、この機能をカーネルからユーザー空間に移すことに満足しているようですが、中には「systemdが本当にこれも引き継ぐ必要があるのだろうか?」と考える人もいるでしょう。

批評家はUnix風ではないと言う

systemdに対する不満の多くは、この巨大プロジェクトが規模を拡大し、Linuxシステムの多くの部分を占有しすぎているという懸念から生じています。当然のことながら、Boycott systemdサイトはまさにこの不満から始まっています。

「SystemdはUnix哲学「一つのことを完璧に行う」に反し、数十もの密結合バイナリの複雑な集合体を形成しています。その責任範囲はinitシステムの範疇をはるかに超えており、電源管理、デバイス管理、マウントポイント、cron、ディスク暗号化、ソケットAPI/inetd、syslog、ネットワーク設定、ログイン/セッション管理、先読み、GPTパーティション検出、コンテナ登録、ホスト名/ロケール/時刻管理、mDNS/DNS-SD、Linuxコンソールなど、あらゆる機能を1つにまとめています。」

Ubuntuのマーク・シャトルワース氏は、Ubuntuが独自の「新興」initシステムを使い続けていた当時、systemdを「非常に侵入的で、ほとんど正当化できない」と批判しました。Ubuntuは最終的にこの論争を諦め、systemdへの移行を決定しました。この変更は、15.04アップデートサイクルからUbuntu Desktop Nextイメージに反映されます。

では、systemd は良いのでしょうか、悪いのでしょうか?

ああ、いよいよだ。この記事のこの部分で、全てを綺麗にまとめ上げ、どちらが正しいのかを断言しなければならない。

systemdの元々のアイデアは確かに優れています。Linuxには、古いSysV initシステムと扱いにくいSysV initスクリプトの代替が必要です。より多くの種類のイベントに対応し、デーモンをよりインテリジェントに管理できる、洗練された現代的なシステムデーモンは素晴らしいアイデアです。しかしながら、systemdがLinuxカーネルのすぐ上にあるモノリシックなシステムレイヤーへと成長しつつあるように見えるのも事実です。

しかし、Linuxはコミュニティによって開発されるプロジェクトではありますが、PCWorldのコラムニストであろうとインターネットのコメント投稿者であろうと、傍観者だけがその進化を決めるべきではありません。実際にコードに手を出し、これらのプロジェクトに関わっている人々が決めるべきです。そして興味深いことに、Linuxディストリビューションとそれに関わる人々は、大部分がsystemdとの統合に向けて動いているようです。

Linuxの生みの親であるLinus Torvalds氏(彼は自分の考えを率直に発言することを恐れません)でさえ、systemdを気にしていないようです。彼はZDNetにこう語っています。

「実は、systemd自体については特に強い意見はありません。コア開発者の中には、バグや互換性についてあまりにも軽率すぎると感じる人がいますし、設計上の細かい点もかなりおかしいと思っています(例えばバイナリログは好きではありません)。でも、それらは些細なことで、大きな問題ではありません。」

Linus Torvalds氏がsystemdの設計に大きな問題を抱えていないのであれば、systemdは必ずしも悪いわけではないのかもしれません。Linuxディストリビューションがsystemdを採用する理由を冷静に考察したいなら、Debianのsystemdに関する議論文書は良い参考になるでしょう。

systemdについてどう思いますか?ぜひコメント欄で意見を聞かせてください!ただし、議論を呼ぶような問題で意見を左右するには、冷静な議論が必要です。

この記事は、Ubuntu Desktop Next イメージに systemd がいつ登場するかを明確にするために更新されました。当初は、変更が既に行われていると誤って記載していました。 

Otpoo

Health writer and researcher with expertise in evidence-based medicine and healthcare information.