Init (日本語) - ArchWiki

# Init (日本語)

関連記事

- Arch ブートプロセス
- Init 比較表

Warning: Arch Linux で公式にサポートされているのは systemd だけです。他の init システムを使っている場合は、そのことをサポートリクエストで示唆してください。

Init はシステムのブート時に最初に起動されるプロセスです。システムがシャットダウンするまで実行し続けるデーモンプロセスです。Init は他の全てのプロセスの直接的または間接的な祖先となり、孤児プロセスを全て自動的に引き取ります。ハードコードされたファイル名を使ってカーネルによって起動され、カーネルが init を起動できない場合、パニックが発生します。典型的に Init にはプロセス ID 1 が割り当てられます。

init プロセスと init スクリプト、そしてサービスマネージャはまとめて init システムとしてひと括りにされます。Init システムによってこれらのコンポーネントは分割されていたり、init プロセスに (一部あるいは全てを) 複合されていたりします。

## Init (複合型)

- systemd — 積極的な並列化、cgroups によるプロセス監視を行う依存関係ベースの init システム。指定されたマウントポイントや dbus サービスに依存することができる。

  http://freedesktop.org/wiki/Software/systemd/ || systemd

- Epoch — フットプリントを最小に、統合的な設定で互換性をもたせるよう設計されたシングルスレッドの init システム。

  http://universe2.us/epoch.html ||

- initng — 並列化と非同期の起動で動く依存関係ベースの init システム。

  http://initng.sourceforge.net/trac || initng-git

- SysVinit — 伝統的な System V init。

  http://savannah.nongnu.org/projects/sysvinit || sysvinit

- Upstart — タスクとサービスの起動・停止・監視を管理するイベントベースの init システム。

  http://upstart.ubuntu.com/ || upstart

## Init

- BusyBox — レスキューや組み込みシステム向けのユーティリティ。

  http://busybox.net/ || busybox

- finit — cgroups やソケットの有効化をサポートしている Ruby で書かれた小さな init システム。

  https://github.com/felipec/finit/ ||

- minit — 小さくても機能が揃っている init。

  http://www.fefe.de/minit/ || minit

- sinit — Rich Felker の minimal init がベースのシンプルな init。

  http://tools.suckless.org/sinit || sinit

## Init スクリプト

- initscripts-fork — Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。

  https://bitbucket.org/TZ86/initscripts-fork/overview || initscripts-fork

- minirc — BusyBox のために作られたミニマル init スクリプト。

  https://github.com/hut/minirc/ || minirc-git

- OpenRC Arch services — Arch Linux と互換性のある OpenRC サービススクリプト。

  https://github.com/andrewgregory/openrc-arch-services || openrc-arch-services-git

- spark-rc — システムを起動するためのシンプルな rc スクリプト。

  https://github.com/fbt/spark-rc || spark-rc

- watchman-sm-services — watchman のサービスのサンプル。

  https://github.com/fbt/watchman-services || watchman-sm-services-git

## サービスマネージャ

- daemontools — UNIX サービスを管理するツールのコレクション。

  http://cr.yp.to/daemontools.html || daemontools

- OpenRC — 依存関係ベースの rc システムで、通常の SysVinit で動作する。

  http://www.gentoo.org/proj/en/base/openrc/ || openrc / openrc-core

- perp — UNIX 向けの永続的なプロセス（サービス）監視・管理フレームワーク。

  http://b0llix.net/perp/ || perp

- runit — SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。

  http://smarden.org/runit/ || runit

- s6 — UNIX 向けの小さなプログラムスイート。daemontools や runit でサービス監視ができるように作られました。

  http://skarnet.org/software/s6/ || s6

- watchman — Linux 向けの not-so-simple なサービスマネージャ。

  https://github.com/fbt/watchman || watchman-sm

## トラブルシューティング

このセクションでは systemd を使わない場合に起こりえる問題を扱っています。

### Cron 機能

Arch はデフォルトで cron の代わりに timer ファイルを使っています。cron ジョブのサンプルは [1] を見て下さい。

### グループパーミッション

Systemd は `logind` とローカルセッションでグループを管理します。それらがない場合、各グループ (audio や video など) にユーザーを追加して再起動する必要があります。

Policykit エージェントはアクティブなセッションを必要としますが、ルールは手動で変更することができます。

### Rootless X (1.16)

Xorg#Rootless Xorg (v1.16) を参照。

### 同じ TTY で X を起動

[2] を参照。

### Syslog-ng

デフォルトで Syslog-ng は `journalctl` を使うように設定されています。`/etc/syslog-ng/syslog-ng.conf` を編集:

    source src {
     unix-stream("/dev/log");
     internal();
     file("/proc/kmsg");
    };

詳しくは Syslog-ng#Source を見て下さい。

## 参照

- Debian init system debate
- How to run s6-svscan as process 1
- Replace systemd with busybox + minirc
- Spark project

Category:

- Boot process (日本語)