「Init」の版間の差分
細 |
|||
4行目: | 4行目: | ||
{{Related|Arch ブートプロセス}} |
{{Related|Arch ブートプロセス}} |
||
{{Related|Init 比較表}} |
{{Related|Init 比較表}} |
||
+ | {{Related|ConsoleKit}} |
||
+ | {{Related|pm-utils}} |
||
+ | {{Related|acpid}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
{{Warning|Arch Linux で公式にサポートされているのは [[systemd]] だけです。他の init システムを使っている場合は、そのことをサポートリクエストで示唆してください。}} |
{{Warning|Arch Linux で公式にサポートされているのは [[systemd]] だけです。他の init システムを使っている場合は、そのことをサポートリクエストで示唆してください。}} |
||
12行目: | 15行目: | ||
== Init (複合型) == |
== Init (複合型) == |
||
− | * {{App|[[ |
+ | * {{App|[[systemd]]|積極的な並列化、cgroups によるプロセス監視を行う依存関係ベースの init システム。指定されたマウントポイントや dbus サービスに依存することができる。|http://freedesktop.org/wiki/Software/systemd/|{{Pkg|systemd}}}} |
− | * {{App|Epoch|フットプリントを最小に、統合的な設定で互換性をもたせるよう設計されたシングルスレッドの init システム。|http://universe2.us/epoch.html|}} |
+ | * {{App|Epoch|フットプリントを最小に、統合的な設定で互換性をもたせるよう設計されたシングルスレッドの init システム。|http://universe2.us/epoch.html|}}{{AUR|epoch-init-system}} |
* {{App|initng|並列化と非同期の起動で動く依存関係ベースの init システム。|http://initng.sourceforge.net/trac|{{AUR|initng-git}}}} |
* {{App|initng|並列化と非同期の起動で動く依存関係ベースの init システム。|http://initng.sourceforge.net/trac|{{AUR|initng-git}}}} |
||
* {{App|[[SysVinit]]|伝統的な System V init。|http://savannah.nongnu.org/projects/sysvinit|{{AUR|sysvinit}}}} |
* {{App|[[SysVinit]]|伝統的な System V init。|http://savannah.nongnu.org/projects/sysvinit|{{AUR|sysvinit}}}} |
||
22行目: | 25行目: | ||
* {{App|[[BusyBox]]|レスキューや組み込みシステム向けのユーティリティ。|http://busybox.net/|{{Pkg|busybox}}}} |
* {{App|[[BusyBox]]|レスキューや組み込みシステム向けのユーティリティ。|http://busybox.net/|{{Pkg|busybox}}}} |
||
* {{App|finit|[[cgroups]] やソケットの有効化をサポートしている Ruby で書かれた小さな init システム。|https://github.com/felipec/finit/|}} |
* {{App|finit|[[cgroups]] やソケットの有効化をサポートしている Ruby で書かれた小さな init システム。|https://github.com/felipec/finit/|}} |
||
− | * {{App| |
+ | * {{App|ninit|[http://www.fefe.de/minit/ minit] のフォーク。|http://riemann.fmi.uni-sofia.bg/ninit/|{{AUR|ninit}}}} |
* {{App|sinit|Rich Felker の minimal init がベースのシンプルな init。|http://tools.suckless.org/sinit|{{AUR|sinit}}}} |
* {{App|sinit|Rich Felker の minimal init がベースのシンプルな init。|http://tools.suckless.org/sinit|{{AUR|sinit}}}} |
||
30行目: | 33行目: | ||
* {{App|minirc|BusyBox のために作られたミニマル init スクリプト。|https://github.com/hut/minirc/|{{AUR|minirc-git}}}} |
* {{App|minirc|BusyBox のために作られたミニマル init スクリプト。|https://github.com/hut/minirc/|{{AUR|minirc-git}}}} |
||
* {{App|OpenRC Arch services|Arch Linux と互換性のある OpenRC サービススクリプト。|https://github.com/andrewgregory/openrc-arch-services|{{AUR|openrc-arch-services-git}}}} |
* {{App|OpenRC Arch services|Arch Linux と互換性のある OpenRC サービススクリプト。|https://github.com/andrewgregory/openrc-arch-services|{{AUR|openrc-arch-services-git}}}} |
||
− | * {{App|spark-rc|システムを起動するためのシンプルな rc スクリプト。|https://github.com/fbt/spark-rc|{{AUR|spark-rc}}}} |
+ | * {{App|spark-rc|システムを起動するためのシンプルな rc スクリプト。|https://github.com/fbt/spark-rc|{{AUR|spark-rc}}/{{AUR|spark-busybox-git}}}} |
* {{App|watchman-sm-services|watchman のサービスのサンプル。|https://github.com/fbt/watchman-services|{{AUR|watchman-sm-services-git}}}} |
* {{App|watchman-sm-services|watchman のサービスのサンプル。|https://github.com/fbt/watchman-services|{{AUR|watchman-sm-services-git}}}} |
||
36行目: | 39行目: | ||
* {{App|daemontools|UNIX サービスを管理するツールのコレクション。|http://cr.yp.to/daemontools.html|{{AUR|daemontools}}}} |
* {{App|daemontools|UNIX サービスを管理するツールのコレクション。|http://cr.yp.to/daemontools.html|{{AUR|daemontools}}}} |
||
+ | * {{App|[[Wikipedia:Monit|Monit]]|Unix や Linux 向けのプロセス監視ツール。monit では、システムの状態をコマンドラインや HTTP(S) ウェブサーバーから直接閲覧することができます。|http://mmonit.com/monit/|{{Pkg|monit}}}} |
||
− | * {{App|[[OpenRC|OpenRC]]|依存関係ベースの rc システムで、通常の SysVinit で動作する。|http://www.gentoo.org/proj/en/base/openrc/|{{AUR|openrc}}}} / {{AUR|openrc-core}} |
||
+ | * {{App|[[OpenRC]]|依存関係ベースの rc システムで、通常の SysVinit で動作する。|http://www.gentoo.org/proj/en/base/openrc/|{{AUR|openrc}}}} / {{AUR|openrc-core}} |
||
* {{App|perp|UNIX 向けの永続的なプロセス(サービス)監視・管理フレームワーク。|http://b0llix.net/perp/|{{AUR|perp}}}} |
* {{App|perp|UNIX 向けの永続的なプロセス(サービス)監視・管理フレームワーク。|http://b0llix.net/perp/|{{AUR|perp}}}} |
||
* {{App|[[runit]]|SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。|http://smarden.org/runit/|{{AUR|runit}}}} |
* {{App|[[runit]]|SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。|http://smarden.org/runit/|{{AUR|runit}}}} |
||
42行目: | 46行目: | ||
* {{App|watchman|Linux 向けの not-so-simple なサービスマネージャ。|https://github.com/fbt/watchman|{{AUR|watchman-sm}}}} |
* {{App|watchman|Linux 向けの not-so-simple なサービスマネージャ。|https://github.com/fbt/watchman|{{AUR|watchman-sm}}}} |
||
+ | == 設定 == |
||
− | == トラブルシューティング == |
||
− | |||
− | このセクションでは ''systemd'' を使わない場合に起こりえる問題を扱っています。 |
||
=== Cron 機能 === |
=== Cron 機能 === |
||
− | Arch はデフォルトで [[cron|cron]] の代わりに [[Systemd#タイマー|timer]] ファイルを使っています。cron ジョブ |
+ | Arch はデフォルトで [[cron|cron]] の代わりに [[Systemd#タイマー|timer]] ファイルを使っています。基本的な cron ジョブについては [[AUR]] から {{AUR|archlinux-cronjobs}} をインストールしてください。 |
=== グループパーミッション === |
=== グループパーミッション === |
||
77行目: | 79行目: | ||
詳しくは [[Syslog-ng#Source]] を見て下さい。 |
詳しくは [[Syslog-ng#Source]] を見て下さい。 |
||
+ | |||
+ | == Tips and tricks == |
||
+ | |||
+ | === systemd-nspawn === |
||
+ | |||
+ | [[systemd-nspawn]] は systemd 環境用のツールです。Linux 2.6.19 から PID 名前空間を使うことで systemd を使ってない環境でも systemd を動作させることができるようになっています。それには、カーネルで {{ic|CONFIG_PID_NS}} と {{ic|CONFIG_NAMESPACES}} を設定する必要があります。 |
||
+ | |||
+ | PID 名前空間は PID 1 で始まるプロセスに新しい階層を作成します。さらに、systemd は chroot する root ファイルシステムのマウントを必要とします。最低でも、バインドマウントは作成してください。そうしないと systemd が {{ic|private}} オプションで root を再マウントしようとして、サービスが以下のように失敗することがあります: |
||
+ | |||
+ | "Failed at step NAMESPACE spawning" due to "Invalid operation" |
||
+ | |||
+ | 新しい PID 名前空間で chroot をセットアップしたい場合 jchroot を使うこともできます [http://vincent.bernat.im/en/blog/2011-jchroot-isolation.html] [https://github.com/vincentbernat/jchroot]。chroot する前に新しい root の中に {{ic|/proc}} がマウントされてない状態にしてください。systemd を実行さえしてしまえば後でマウントできます。 |
||
== 参照 == |
== 参照 == |
2015年4月25日 (土) 19:49時点における版
Init はシステムのブート時に最初に起動されるプロセスです。システムがシャットダウンするまで実行し続けるデーモンプロセスです。Init は他の全てのプロセスの直接的または間接的な祖先となり、孤児プロセスを全て自動的に引き取ります。ハードコードされたファイル名を使ってカーネルによって起動され、カーネルが init を起動できない場合、パニックが発生します。典型的に Init にはプロセス ID 1 が割り当てられます。
init プロセスと init スクリプト、そしてサービスマネージャはまとめて init システムとしてひと括りにされます。Init システムによってこれらのコンポーネントは分割されていたり、init プロセスに (一部あるいは全てを) 複合されていたりします。
目次
Init (複合型)
- systemd — 積極的な並列化、cgroups によるプロセス監視を行う依存関係ベースの init システム。指定されたマウントポイントや dbus サービスに依存することができる。
- Epoch — フットプリントを最小に、統合的な設定で互換性をもたせるよう設計されたシングルスレッドの init システム。
- initng — 並列化と非同期の起動で動く依存関係ベースの init システム。
- SysVinit — 伝統的な System V init。
- Upstart — タスクとサービスの起動・停止・監視を管理するイベントベースの init システム。
Init
- BusyBox — レスキューや組み込みシステム向けのユーティリティ。
- finit — cgroups やソケットの有効化をサポートしている Ruby で書かれた小さな init システム。
- ninit — minit のフォーク。
- sinit — Rich Felker の minimal init がベースのシンプルな init。
Init スクリプト
- initscripts-fork — Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。
- minirc — BusyBox のために作られたミニマル init スクリプト。
- OpenRC Arch services — Arch Linux と互換性のある OpenRC サービススクリプト。
- spark-rc — システムを起動するためのシンプルな rc スクリプト。
- watchman-sm-services — watchman のサービスのサンプル。
サービスマネージャ
- daemontools — UNIX サービスを管理するツールのコレクション。
- Monit — Unix や Linux 向けのプロセス監視ツール。monit では、システムの状態をコマンドラインや HTTP(S) ウェブサーバーから直接閲覧することができます。
- OpenRC — 依存関係ベースの rc システムで、通常の SysVinit で動作する。
- perp — UNIX 向けの永続的なプロセス(サービス)監視・管理フレームワーク。
- http://b0llix.net/perp/ || perpAUR
- runit — SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。
- s6 — UNIX 向けの小さなプログラムスイート。daemontools や runit でサービス監視ができるように作られました。
- watchman — Linux 向けの not-so-simple なサービスマネージャ。
設定
Cron 機能
Arch はデフォルトで cron の代わりに timer ファイルを使っています。基本的な cron ジョブについては AUR から archlinux-cronjobsAUR をインストールしてください。
グループパーミッション
Systemd は logind
とローカルセッションでグループを管理します。それらがない場合、各グループ (audio や video など) にユーザーを追加して再起動する必要があります。
Policykit エージェントはアクティブなセッションを必要としますが、ルールは手動で変更することができます。
Rootless X (1.16)
Xorg#Rootless Xorg (v1.16) を参照。
同じ TTY で X を起動
[1] を参照。
Syslog-ng
デフォルトで Syslog-ng は journalctl
を使うように設定されています。/etc/syslog-ng/syslog-ng.conf
を編集:
source src { unix-stream("/dev/log"); internal(); file("/proc/kmsg"); };
詳しくは Syslog-ng#Source を見て下さい。
Tips and tricks
systemd-nspawn
systemd-nspawn は systemd 環境用のツールです。Linux 2.6.19 から PID 名前空間を使うことで systemd を使ってない環境でも systemd を動作させることができるようになっています。それには、カーネルで CONFIG_PID_NS
と CONFIG_NAMESPACES
を設定する必要があります。
PID 名前空間は PID 1 で始まるプロセスに新しい階層を作成します。さらに、systemd は chroot する root ファイルシステムのマウントを必要とします。最低でも、バインドマウントは作成してください。そうしないと systemd が private
オプションで root を再マウントしようとして、サービスが以下のように失敗することがあります:
"Failed at step NAMESPACE spawning" due to "Invalid operation"
新しい PID 名前空間で chroot をセットアップしたい場合 jchroot を使うこともできます [2] [3]。chroot する前に新しい root の中に /proc
がマウントされてない状態にしてください。systemd を実行さえしてしまえば後でマウントできます。