「Init」の版間の差分
(→サービスマネージャ: 翻訳) |
(→Init スクリプト: 翻訳) |
||
30行目: | 30行目: | ||
* {{App|initscripts-fork|Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。|https://bitbucket.org/TZ86/initscripts-fork/overview|{{AUR|initscripts-fork}}}} |
* {{App|initscripts-fork|Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。|https://bitbucket.org/TZ86/initscripts-fork/overview|{{AUR|initscripts-fork}}}} |
||
* {{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|kisslinux-init| |
+ | * {{App|kisslinux-init|KISS Linux の Init フレームワーク。|https://github.com/kisslinux/init|{{AUR|kisslinux-init}}}} |
== サービスマネージャ == |
== サービスマネージャ == |
2023年8月28日 (月) 15:33時点における最新版
関連記事
Init はシステムのブート時に最初に起動されるプロセスです。システムがシャットダウンするまで実行し続けるデーモンプロセスです。Init は他の全てのプロセスの直接的または間接的な祖先となり、孤児プロセスを全て自動的に引き取ります。ハードコードされたファイル名を使ってカーネルによって起動され、カーネルが init を起動できない場合、パニックが発生します。典型的に Init にはプロセス ID 1 が割り当てられます。
init プロセスと init スクリプト、そしてサービスマネージャはまとめて init システムとしてひと括りにされます。Init システムによってこれらのコンポーネントは分割されていたり、init プロセスに (一部あるいは全てを) 複合されていたりします。
目次
Inits (複合型)
- anopa — s6 管理スイートのために開発された Init システム。
- GNU Shepherd — Guile で書かれた Init システム。
- OpenRC — 依存関係ベースの rc システムで、通常の SysVinit で動作する。
- systemd — 積極的な並列化、cgroups によるプロセス監視を行う依存関係ベースの init システム。指定されたマウントポイントや dbus サービスに依存することができる。
Inits
- BusyBox — レスキューや組み込みシステム向けのユーティリティ。
- sinit — Rich Felker の minimal init がベースのシンプルな init。
- SysVinit — 伝統的な System V init。
Init スクリプト
- initscripts-fork — Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。
- minirc — BusyBox のために作られたミニマル init スクリプト。
- kisslinux-init — KISS Linux の Init フレームワーク。
サービスマネージャ
- Monit — Unix や Linux 向けのプロセス監視ツール。monit では、システムの状態をコマンドラインや HTTP(S) ウェブサーバーから直接閲覧することができます。
- perp — UNIX 向けの永続的なプロセス(サービス)監視・管理フレームワーク。
- http://b0llix.net/perp/ || perpAUR
- runit — SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。
- s6 — UNIX 向けの小さなプログラムスイート。daemontools や runit でサービス監視ができるように作られました。
- Supervisor — UNIX ライクなオペレーティングシステム上のプロセスを監視、制御するためのシステム。
設定
使用しているデーモンの移行
新しい init でデーモンを実行するために、実行中のデーモンのリストを保存してください:
$ systemctl list-units --state=running "*.service" > daemons.list
それから Init スクリプトを設定してください。詳しくは [1] を参照。
logind
logind は init プロセスとして systemd を必要とします [2]。したがって systemd 以外の init ではローカルセッションなどの機能が利用できません。
デバイスのパーミッション
デバイスにアクセスするためにユーザーを適切なグループに追加して、再起動してください。現在のグループは id user
で確認できます。追加するコマンドの例:
# usermod -a -G video,audio,power,disk,storage,optical,lp,scanner user
Policykit で使用するグループルールを作成する方法は PolicyKit#パスワードプロンプトの迂回を参照。
Rootless X
Xorg.wrap
は、logind がアクティブであるかどうかをチェックしないため [4]、Xorg の root 権限は 手動で有効にして下さい。
電源管理
systemd の電源管理機能を置き換える方法は pm-utils や acpid を参照してください。
スケジュールされたタスク
Arch はデフォルトで cron の代わりに timer ファイルを使っています。基本的な cron ジョブについては archlinux-cronjobs を参照してください。
D-Bus
systemd/ユーザーによって dbus-daemon のユーザーインスタンスが起動されるようになっています [5]。デスクトップアプリケーション間で IPC が必要な場合、30-dbus.sh
をリストアしてください:
/etc/X11/xinit/xinitrc.d/30-dbus.sh
#!/bin/bash # launches a session dbus instance if [ -z "${DBUS_SESSION_BUS_ADDRESS-}" ] && type dbus-launch >/dev/null; then eval $(dbus-launch --sh-syntax --exit-with-session) fi
ヒントとテクニック
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 を使うこともできます [6] [7]。chroot する前に新しい root の中に /proc
がマウントされてない状態にしてください。systemd を実行さえしてしまえば後でマウントできます。
udev の置き換え
- eudev — Gentoo プロジェクトによって創始された udev のフォーク。主として OpenRC と組み合わせて使うように開発されています。
- mdev — 組み込みシステムで使用されるデバイスマネージャ。
- smdev — デバイスノードを管理するシンプルなプログラム。mdev と互換性がありますが、全ての機能を備えているわけではありません。