HN 日本語サマリー

← 一覧へ戻る
Linux

DebianでSystemdをOpenRCに置き換える

Replacing Systemd with OpenRC in Debian (danielcordova.me)

42 pointsby nogajun43 コメント

要約

この記事では、著者がSystemdの設計哲学と、その責任範囲の拡大に疑問を抱き、Debian環境でOpenRCへの移行を試みた経験について詳しく述べています。Systemdを削除しOpenRCをインストールする際の具体的な課題と解決策が示されており、バッテリーステータスやオーディオの問題への対処法も共有されています。最終的に、著者はこの実験が成功したと感じており、OpenRCを継続して評価していく意向を示しています。

全文翻訳

DebianでSystemdをOpenRCに置き換える 投稿日: 2026-06-24 修正日: 2026-06-28 カテゴリ: Linux タグ: Debian, ARM, Systemd, OpenRC TL;DR 私はsystemdのファンではありませんが、その使用に反対しているわけでもありません。つまり、それがあなたにとって機能するならOKです。 私の場合は、好奇心と不快感が混じり合っています。initシステムがどのように機能するかという好奇心と、systemdが物事や新機能をどのように統合するかという不快感です。 それがほとんどのユースケースでうまく機能することは知っています(初期の頃から使用しています)。また、systemdがKISS哲学の原則をすべて破っていることにも同意しますが、他のプロジェクトもそうしていますよね? では、なぜ不快感があるのか? それは少し前に始まりました。プロジェクトが他のプロジェクトに属する責任をどんどん引き受けているというニュースを読んでいたとき、破壊的な変更のために一部のプロダクション展開がひどく失敗したという話を知りました。もしその責任がsystemdの一部でなかったら、それは防げたはずです。私にとってあまり心配なことではありませんでしたが、不快感の最初の本当のきっかけは、年齢確認法が準備されているときに、私の純粋な考えが「OK、WindowsとMacはそれを統合するだろうが、Linuxや他のオープンソースOSとプロジェクトは、このばかげた法律と『戦う』だろう!!」だったことです。 そして次に思ったのは、「待てよ?この法律はまだ一部の州/国で承認されていないのに、systemdはすでにそれを統合している。なぜ?ばかげた法律に対するいつもの『戦い』はどうなったんだ?」ということでした。私はかなり腹を立てました。もちろん、私はそのプロジェクトの貢献者ではありませんし、それはオプションのフィールドにすぎませんが、まったく正しいとは感じませんでした。開発者に対するすべてのヘイトも正しくありませんでした。 そして、不快感の2番目のきっかけは、テクノロジーニュースを読んでいたときに、systemdがsys-installを統合していることを見つけたときです。systemdが独自の「システムインストーラー」である「systemd-sysinstall」などを統合しているのです。 Initシステムとして膨大な責任を負うのは一つですが、PID 1であることからシステムインストーラーにまでなるのはまた別の話です。そのアイデアをどう売り込もうと、「Initシステムの責任」と「Systemdの奇妙な責任と願望」には海のほどの違いがあります。そこで好奇心が働き、自宅でのハッキングやテストなどに使用しているThinkpad X13s SnapdragonにOpenRCをインストールしてみることにしました。ちなみに、このノートパソコンはDebianを実行しています。 インストール Debian TestingにOpenRCをインストールするのは難しくありませんが、些細な操作でもありません。apt-getとaptが必須パッケージとどのように連携するかに関して、いくつかの課題と問題に直面しました。 課題 OpenRCのインストールとSystemdのアンインストールを同時に行おうとした際、2つの大きな課題に直面しました。 apt-getはsystemdをまったくアンインストールできず、エラーを出すだけです。 aptはsystemdをアンインストールできない理由について、より良いエラーを示します。 これについて少し調べてインターネットでいくつかのページを読んだ後、aptに引数を渡す必要があることを学びました。そうすれば必須パッケージをアンインストールできます。したがって、アンインストールするには次のようになります。 sudo apt purge --allow-remove-essential systemd まだコピー&ペーストしないでください。 systemdを削除する前に、OpenRCがインストールされることを確認する必要があります。そのためには、次のコマンドを使用します。 sudo apt purge --allow-remove-essential systemd && sudo apt install openrc sysvinit-core このコマンドはsystemdをアンインストールし、将来的には不要になる可能性のあるいくつかの依存関係をインストールします。 問題 OpenRCをインストールしsystemdをアンインストールした後、システムが適切に起動しませんでした。そのため、リカバリーモードに入り、Ctrl-Dを押してエラーを修正できるようにしました。 問題自体は、systemdをアンインストールしている間に、なぜかOpenRCも削除されたか、まったくインストールされていなかったことでした。そこでリカバリーモードに入り、Wi-Fiネットワークに接続し、apt install openrc sysvinit-coreでOpenRCを再度インストールしました。 ここまでは順調です。しかし、バッテリーステータスもオーディオも機能しませんでした。バッテリーステータスは、Debian Testingをラップトップにインストールした際に直面したカーネルのデグレードが原因であることは知っていました。そこで、systemdサービスをスクリプトに変換し、/etc/init.d/に配置しました。これにより、OpenRCがそれを起動または有効にできるようになりました。これは機能しました。オーディオはpipewireとwireplumberに関連する別のサービスが必要か、ログイン時にそれらを起動する必要があると思います。これらは後でテストします。 Systemdサービス: [Unit] Description=Start Qualcomm remoteprocs (SLPI/ADSP/CDSP) DefaultDependencies=no After=initrd-root-fs.target local-fs.target Before=sysinit.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo start > /sys/class/remoteproc/remoteproc0/state; echo start > /sys/class/remoteproc/remoteproc1/state; echo start > /sys/class/remoteproc/remoteproc2/state' [Install] WantedBy=sysinit.target OpenRCスクリプト: #!/bin/sh echo start > /sys/class/remoteproc/remoteproc0/state; echo start > /sys/class/remoteproc/remoteproc1/state; echo start > /sys/class/remoteproc/remoteproc2/state; これを適切なOpenRCスクリプトに変換する必要があります。 今後 現在、OpenRCは機能しています。今後もこれがデフォルトのInitシステムになるかどうかはわかりませんが、私の実験は成功したと感じています。 今後数日間、場合によっては数週間、「自宅ハッキング用ラップトップ」でOpenRCのテストを続けます。十分に快適だと感じたら、仕事用ラップトップ(これもDebian Testingを実行しており、同じドットファイルが入っています)もOpenRCに移行するつもりです。 動作しているLinuxインストールでInitシステムを変更することには、その癖や課題があり、最良のアイデアではないかもしれませんが、現在の結果には満足しています。 もしこれがあなたにも機能するなら、あなたがsystemdを捨ててOpenRCを選択していることを知れば、私ももっと嬉しいです。冗談はさておき、最終的には、使いたいものを使い、自分に合ったものを使うのがUnixの自由の一部なのです。 ハッピーハッキング!! リンク OpenRCに興味がある場合のいくつかのリンク Debian: Switching Init System Easily (OpenRC, Sysvinit, Runit) Beyond systemd: A Technical Deep Dive into OpenRC for Modern Linux Systems Introduction to OpenRC: Managing Services with Ease OpenRC on debian