

Unixベースのコンピュータオペレーティング システムでは、init ( initializationの略) は、オペレーティング システムの起動中に最初に起動されるプロセスです。 init は、システムがシャットダウンされるまで実行され続けるデーモンプロセスです。これは、他のすべてのプロセスの直接的または間接的な祖先であり、すべての孤立したプロセスを自動的に引き継ぎます。 init は、起動プロセス中にカーネルによって起動されます。カーネルがこれを起動できない場合、または何らかの理由で終了する必要がある場合は、カーネル パニックが発生します。 init には通常、プロセス識別子1 が割り当てられます。
System IIIやSystem VなどのUnixシステムでは、initの設計はResearch UnixおよびそのBSD派生システムのinitが提供する機能とは異なっています。2010年代初頭まで、[1] [検証失敗]、ほとんどのLinuxディストリビューションはSystem Vと多少互換性のある従来のinitを採用していましたが、 Slackwareなどの一部のディストリビューションはBSDスタイルの起動スクリプトを使用しており、Gentooなどの他のディストリビューションでは独自のカスタマイズされたバージョンを使用しています。
それ以来、従来のバージョンの設計上の制限に対処しようとする、いくつかの追加の init 実装が作成されました。これらには、launchd、Service Management Facility、systemd、Runit、OpenRCが含まれます。
Unixスタイル/BSDスタイルの研究
Research Unix init はにある初期化シェルスクリプト/etc/rcを実行し、[2] の制御下にある端末でgetty を起動します/etc/ttys。[3]ランレベルはありません。/etc/rcファイルは init によって実行されるプログラムを決定します。このシステムの利点は、シンプルで手動で編集しやすいことです。ただし、システムに追加された新しいソフトウェアによって、既存のファイルの変更が必要になる場合があり、システムが起動できなくなる可能性があります。
BSD initは、4.3BSD以前はResearch UNIXのinitと同じでした。[4] [5] 4.3BSDでは、の制御下にあるグラフィカル端末でXなどのウィンドウシステムを実行するためのサポートが追加されました。[6] [7]を編集する必要性をなくすために、BSDの派生系では長い間、ブートシーケンスの終わり近くのサブシェルで実行される
サイト固有のファイルをサポートしてきました。/etc/ttys/etc/rc/etc/rc.local
完全にモジュール化されたシステムはNetBSD 1.5 で導入され、FreeBSD 5.0 および後継に移植されました。このシステムは/etc/rc.dディレクトリ内のスクリプトを実行します。各スクリプトのファイル名から派生する System V のスクリプト順序とは異なり、このシステムでは各スクリプト内に配置された明示的な依存関係タグを使用します。[8]スクリプトが実行される順序は、これらのタグに記述された要件に基づいてrcorderユーティリティによって決定されます。
SysVスタイル

AT&TのUNIX System IIIは、その前身と比較すると、新しいスタイルのシステム起動構成を導入しました。[9]これは(修正を加えて)UNIX System Vにも引き継がれ、「SysVスタイルのinit」と呼ばれています。
実行中の System V は、常に、ランレベルと呼ばれる、あらかじめ決められた数の状態のいずれかにあります。少なくとも 1 つのランレベルは、システムの通常の動作状態です。通常、他のランレベルは、シングル ユーザー モード (障害のあるシステムの修復に使用)、システムのシャットダウン、およびその他のさまざまな状態を表します。あるランレベルから別のランレベルに切り替えると、ランレベルごとのスクリプト セットが実行されます。これらのスクリプトでは、通常、ファイル システムのマウント、デーモンの起動または停止、 X ウィンドウ システムの起動または停止、マシンのシャットダウンなど が行われます。
ランレベル
System V のランレベルは、マシンの特定の状態を記述します。これは、各ランレベルで実行されているプロセスとデーモンによって特徴付けられます。一般に、7 つのランレベルがあり、そのうち 3 つのランレベルはシステムの動作に不可欠であるため、「標準」と見なされます。
- 消す
- シングルユーザーモード( Sまたはsとも呼ばれる)
- リブート
これらの標準的なランレベルとは別に、Unix および Unix ライクなシステムでは、ランレベルの扱いが多少異なります。共通点であるファイル/etc/inittabは、特定のシステムで構成された各ランレベルの動作を定義します。
デフォルトのランレベル
右の表でデフォルトでランレベル 5 に設定されている Linux ディストリビューションでは、ランレベル 5 は、通常GDMやKDMなどのディスプレイ マネージャーを使用して、X Window System を実行するマルチユーザー グラフィカル環境を呼び出します。ただし、Solarisおよびillumosオペレーティング システムでは通常、ランレベル 5 はマシンをシャットダウンして自動的に電源をオフにするために予約されています。
ほとんどのシステムでは、すべてのユーザーは、またはコマンドのいずれかを使用して現在のランレベルを確認できます。[12] rootrunlevelユーザーwho -rは通常、またはコマンドを実行して現在のランレベルを変更します。ファイルは、エントリを使用してデフォルトのランレベルを設定します。
telinitinit/etc/inittab:initdefault:
Unix システムでは、ランレベルの変更は、不足しているサービスのみを起動することによって実現されます (各レベルでは、開始/停止されるサービスのみが定義されているため)。[引用が必要]たとえば、システムをランレベル 3 から 4 に変更すると、ローカル X サーバーのみが起動される可能性があります。ランレベル 3 に戻ると、再び停止します。
その他の実装
従来、init の大きな欠点の 1 つは、タスクを順番に開始し、各タスクの読み込みが完了するまで待ってから次のタスクに進むことです。起動プロセスで入出力(I/O) がブロックされると、起動中に長い遅延が発生する可能性があります。たとえば SSD を使用して I/O を高速化すると、遅延は短縮されるかもしれませんが、根本的な原因は解決されません。
この問題やその他の設計上の問題に対処するために、従来の init デーモンを置き換えるさまざまな取り組みが行われてきました。
- GoboLinuxのブートスクリプト
- busybox-init は組み込みオペレーティングシステムに適しており、Alpine Linux、SliTaz 5(Rolling)、Tiny Core Linux、VMware ESXiで使用され、procdに置き換えられる前はOpenWrtでも使用されていました。
- Dinit、サービスマネージャおよびinitシステム。[13]
- Epochは、シンプルさとサービス管理に重点を置いたシングルスレッドのLinux initシステムです[14]
- Initng は、プロセスを非同期的に開始するように設計された init の完全な代替品です。
- launchd は、 Mac OS X v10.4以降のDarwin / macOS / iOS / tvOSの init の代替です(SystemStarter を起動して、古いスタイルの 'rc.local' と SystemStarter プロセスを実行します)
- OpenRC は、システムが提供する init を利用しながら、プロセスの分離、並列起動、およびサービス依存性を提供するプロセス生成器です。Alpine Linux、Gentooおよびその派生製品で使用され、 DevuanおよびArtix Linuxではオプションとして利用できます。
- runit は、サービスの並列起動を備えたinitのクロスプラットフォームの完全な代替品であり、Void Linuxでデフォルトで使用されています[15]
- Sun Service Management Facility (SMF) は、Solaris 10 以降のillumos / Solarisで init を根本から完全に置き換え/再設計したものですが、元の System V スタイルの init によって唯一のサービスとして開始されました。
- Shepherd は、非同期の依存性ベースの初期化を提供するGNUサービスおよびデーモンマネージャであり、 Guile Schemeで書かれており、通常のシステム操作中に対話的にハッキング可能であることを意図している[16]
- s6、initシステムを含むソフトウェアスイート。[17] [18]
- systemd は、Linux の init を完全に置き換えるソフトウェア スイートであり、init デーモン、サービスの同時起動、サービス マネージャー、およびその他の機能が含まれています。
- SystemStarter は、 Mac OS X v10.4 より前のMac OS Xで BSD スタイルの init によって開始されるプロセス生成プログラムです。
- Upstartは、プロセスを非同期に起動するように設計されたinitの完全な代替品です。Ubuntuによって開始され、2014年まで使用されていました。また、Fedora 9、[ 19] [20] Red Hat Enterprise Linux 6 [21]およびGoogleのChromeOS [22]でも使用されていました。
2019年2月現在[アップデート]、systemdはほとんどの主要なLinuxディストリビューションに採用されています。 [23]
参照
- オペレーティングシステムのサービス管理
- セッションマネージャサブシステム— Windows NT の同等機能
参考文献
- ^ 「Lennart Poettering on systemd's Tumultuous Ascendancy」The New Stack 2018-11-08. 2018-11-08 時点のオリジナルよりアーカイブ。2024-01-30閲覧。
- ^ – バージョン 7 Unixプログラマーズマニュアル
- ^ – バージョン 7 Unixプログラマーズマニュアル
- ^ – 4.2BSDシステム管理者マニュアル
- ^ – 4.2BSDファイルフォーマットマニュアル
- ^ – 4.3BSDシステム管理者マニュアル
- ^ – 4.3BSDファイルフォーマットマニュアル
- ^ Andrew Smallshaw (2009 年 12 月 7 日). 「Unix および Linux スタートアップ スクリプト、パート 2」。2009 年 12 月 18 日時点のオリジナルよりアーカイブ。2011年6 月 6 日閲覧。
- ^ “init(8)”. minnie.tuhs.org . 2021年7月27日時点のオリジナルよりアーカイブ。2015年9月12日閲覧。
- ^ 「Initscripts」。Gentoo Linux ドキュメント。 Gentoo.org。 2014-12-13。 2020-12-03 にオリジナルからアーカイブ。 2020-12-08に取得。
- ^ 「実行レベル」。Oracle Solarisの管理: 一般的なタスク。Oracle。2016年 4 月 10 日のオリジナルからアーカイブ。2017 年 11 月 14 日取得。
- ^ 「UNIX man pages : runlevel (8)」。Unixhelp.ed.ac.uk。1997-05-27。2014-07-14にオリジナルからアーカイブ。2014-07-12に取得。
- ^ 「GitHub - davmac314/dinit: サービス監視 / "init" システム」。GitHub 。 2021年12月12日時点のオリジナルよりアーカイブ。 2021年12月12日閲覧。
- ^ 「Epoch Init System Homepage」。2014年8月2日時点のオリジナルよりアーカイブ。2014年7月31日閲覧。
- ^ 「Void Linux メインページ」。2020年8月29日時点のオリジナルよりアーカイブ。2020年8月31日閲覧。
- ^ 「The Shepherd - GNU プロジェクト」。Free Software Foundation, Inc. 2016 年 2 月 12 日時点のオリジナルよりアーカイブ。2016 年 1 月 16 日閲覧。
- ^ “s6: why another supervision suite”. 2021年9月13日時点のオリジナルよりアーカイブ。2021年9月13日閲覧。
- ^ “s6 init system”. 2021年9月13日時点のオリジナルよりアーカイブ。
- ^ Fedora 14 Accepted Features、2010-07-13、2022-03-27にオリジナルからアーカイブ、2010-07-13に取得
- ^ 「Fedora が systemd を F15 まで延期」 Linux Weekly News。2010 年 9 月 14 日。2010 年 9 月 19 日時点のオリジナルよりアーカイブ。2010年 9 月 17 日閲覧。
- ^ 「デプロイメント」。Red Hat Enterprise Linux 6: テクニカルノート。Red Hat。2018年8月29日時点のオリジナルよりアーカイブ。 2013年12月31日閲覧。
- ^ ソフトウェア アーキテクチャ: Chromium OS 設計ドキュメント、2022 年 4 月 9 日時点のオリジナルからアーカイブ、2014 年1 月 25 日取得
- ^ Systemd#Adoption を参照
外部リンク
- FreeBSD init マニュアルページ
- Unix の init スキームをまとめた論文 (2007)
- Solaris サービス管理機能 - Wayback Machineのクイックスタート ガイド(2005 年 12 月 31 日アーカイブ)
- 現代の init システムの歴史 (1992–2015) 2015-10-11 にWayback Machineにアーカイブされました
