「Init」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎サービスマネージャ: Supervisor を追加)
(→‎参照: リンクを追加)
122行目: 122行目:
 
* [http://skarnet.org/software/s6/s6-svscan-1.html How to run s6-svscan as process 1]
 
* [http://skarnet.org/software/s6/s6-svscan-1.html How to run s6-svscan as process 1]
 
* [https://bbs.archlinux.org/viewtopic.php?id=162606&p=1 Replace systemd with busybox + minirc]
 
* [https://bbs.archlinux.org/viewtopic.php?id=162606&p=1 Replace systemd with busybox + minirc]
* [http://www.troubleshooters.com/linux/init/manjaro_experiments.htm Experiments of Manjaro]
 
 
* [https://busybox.net/~vda/init_vs_runsv.html Init vs. runsv]
 
* [https://busybox.net/~vda/init_vs_runsv.html Init vs. runsv]
 
* [https://felipec.wordpress.com/2013/11/04/init/ Demystifying the init system]
 
* [https://felipec.wordpress.com/2013/11/04/init/ Demystifying the init system]
 
* [http://blog.darknedgy.net/technology/2015/09/05/0/ 新しい init システムの歴史 (1992-2015)]
 
* [http://blog.darknedgy.net/technology/2015/09/05/0/ 新しい init システムの歴史 (1992-2015)]
 
* [https://wiki.gentoo.org/wiki/Comparison_of_init_systems init システムの比較 (gentoo wiki)]
 
* [https://wiki.gentoo.org/wiki/Comparison_of_init_systems init システムの比較 (gentoo wiki)]
  +
* [https://github.com/InitWare/InitWare/wiki/Contributors'-Study-Guide InitWare: Contributors' Study Guide]
  +
* [https://jdebp.uk/Softwares/nosh/ The nosh package]

2021年11月12日 (金) 17:18時点における版

関連記事

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

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

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

Inits (複合型)

  • anopa — s6 管理スイートのために開発された Init システム。
https://jjacky.com/anopa/ || anopaAUR
  • GNU ShepherdGuile で書かれた Init システム。
https://www.gnu.org/software/shepherd/ || shepherdAUR
  • OpenRC — 依存関係ベースの rc システムで、通常の SysVinit で動作する。
https://www.gentoo.org/proj/en/base/openrc/ || openrcAUR openrc-arch-services-gitAUR
  • systemd — 積極的な並列化、cgroups によるプロセス監視を行う依存関係ベースの init システム。指定されたマウントポイントや dbus サービスに依存することができる。
https://freedesktop.org/wiki/Software/systemd/ || systemd

Inits

  • BusyBox — レスキューや組み込みシステム向けのユーティリティ。
http://busybox.net/ || busybox
  • sinit — Rich Felker の minimal init がベースのシンプルな init。
http://core.suckless.org/sinit || sinitAUR
  • SysVinit — 伝統的な System V init。
https://savannah.nongnu.org/projects/sysvinit || sysvinitAUR

Init スクリプト

  • initscripts-fork — Arch Linux の SysVinit スクリプトのメンテナンスがされているフォーク。
https://bitbucket.org/TZ86/initscripts-fork/overview || initscripts-forkAUR
  • minirc — BusyBox のために作られたミニマル init スクリプト。
https://github.com/hut/minirc/ || minirc-gitAUR
  • kisslinux-init — Init framework of KISS Linux.
https://github.com/kisslinux/init || kisslinux-initAUR

サービスマネージャ

  • daemontools — UNIX サービスを管理するツールのコレクション。
http://cr.yp.to/daemontools.html || daemontoolsAUR
  • Monit — Unix や Linux 向けのプロセス監視ツール。monit では、システムの状態をコマンドラインや HTTP(S) ウェブサーバーから直接閲覧することができます。
http://mmonit.com/monit/ || monit
  • perp — UNIX 向けの永続的なプロセス(サービス)監視・管理フレームワーク。
http://b0llix.net/perp/ || perpAUR
  • runit — SysVinit やその他の init スキームを置き換える、サービス監視が付いた UNIX init スキーム。
http://smarden.org/runit/ || runitAUR
  • s6 — UNIX 向けの小さなプログラムスイート。daemontools や runit でサービス監視ができるように作られました。
http://skarnet.org/software/s6/ || s6AUR
  • Supervisor — A system that allows its users to monitor and control processes on UNIX-like operating systems.
https://supervisord.org/ || supervisor

設定

使用しているデーモンの移行

新しい init でデーモンを実行するために、実行中のデーモンのリストを保存してください:

$ systemctl list-units --state=running "*.service" > daemons.list

それから Init スクリプトを設定してください。詳しくは [1] を参照。

ノート: 一時ファイル (systemd-tmpfiles(8)), カーネルモジュール, sysctl の設定も適宜行ってください。

logind

logind は init プロセスとして systemd を必要とします [2]。したがって systemd 以外の init ではローカルセッションなどの機能が利用できません。

ヒント: logind のスタンドアロン版は elogind-gitAUR でインストールできます [3]

デバイスのパーミッション

デバイスにアクセスするためにユーザーを適切なグループに追加して、再起動してください。現在のグループは id user で確認できます。追加するコマンドの例:

# usermod -a -G video,audio,power,disk,storage,optical,lp,scanner user

Policykit で使用するグループルールを作成する方法は PolicyKit#パスワードプロンプトの迂回を参照。

Rootless X (1.16)

Xorg.wrap は logind が有効になっているかどうか確認しないため [4]Xorg の root 権限は手動で有効にする必要があります:

/etc/X11/Xwrapper.config
needs_root_rights = yes

電源管理

systemd の電源管理機能を置き換える方法は pm-utilsacpid を参照してください。

Cron 機能

Arch はデフォルトで cron の代わりに timer ファイルを使っています。基本的な cron ジョブについては AUR から archlinux-cronjobsAUR[リンク切れ: アーカイブ: aur-mirror] をインストールしてください。

D-Bus

systemd 226 と D-Bus 1.10.0-3 から、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_NSCONFIG_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 の置き換え

警告: systemd-udev は PID 1 として systemd が存在しなくても機能するため udev の置換は必須ではありません。eudev など一部の udev 代替は systemd と共存することができません。udev の代替をインストールする前に systemd 以外の init で起動するように設定が必要です。
  • eudev — Gentoo プロジェクトによって創始された udev のフォーク。主として OpenRC と組み合わせて使うように開発されています。
https://wiki.gentoo.org/wiki/Eudev || eudevAUR eudev-gitAUR
  • mdev — 組み込みシステムで使用されるデバイスマネージャ。
https://git.busybox.net/busybox/plain/docs/mdev.txt || busybox
  • vdev — UNIX の仮想デバイスマネージャ。
https://github.com/jcnelson/vdev.git || vdev-gitAUR[リンク切れ: パッケージが存在しません]
  • smdev — デバイスノードを管理するシンプルなプログラム。mdev と互換性がありますが、全ての機能を備えているわけではありません。
http://git.suckless.org/smdev/ || smdev-gitAUR[リンク切れ: パッケージが存在しません]

参照