初期化

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
バージョン7Unix/ etcリスト、initrcを表示
バージョン7Unix:/ etc / rcBourneシェルスクリプトの内容

Unixベースのコンピュータオペレーティングシステムではinit (初期化の略)は、コンピュータシステムの起動中に開始される最初のプロセスです。Initは、システムがシャットダウンされるまで実行を継続するデーモンプロセスです。これは、他のすべてのプロセスの直接または間接の祖先であり、孤立したすべてのプロセスを自動的に採用しますInitは、起動プロセス中にカーネルによって開始されます。カーネルが起動できない場合、カーネルパニックが発生しますInitには通常、プロセス識別子1が割り当てられます。

SystemIIISystemVなどのUnixシステムでは、initの設計は、ResearchUnixおよびそのBSD派生物のinitによって提供される機能とは異なります。最近まで、ほとんどのLinuxディストリビューションはSystem Vとある程度互換性のある従来のinitを採用していましたが、Slackwareなどの一部のディストリビューションはBSDスタイルのスタートアップスクリプトを使用し、Gentooなどの一部のディストリビューションには独自のカスタマイズバージョンがあります。

それ以来、いくつかの追加のinit実装が作成され、従来のバージョンの設計上の制限に対処しようとしています。これらには、launchdService Management FacilitysystemdRunitOpenRCが含まれます。

Unixスタイル/ BSDスタイルの研究

Research Unix initは[1]にある初期化シェルスクリプトを実行してから、の制御下にある端末でgettyを起動します。[2]ランレベルはありません。このファイルは、initによって実行されるプログラムを決定します。このシステムの利点は、手動で編集するのが簡単で簡単なことです。ただし、システムに追加された新しいソフトウェアでは、既存のファイルを変更する必要があり、起動できないシステムが生成される可能性があります。 /etc/rc/etc/ttys/etc/rc

BSD initは、4.3BSDより前は、ResearchUNIXのinitと同じでした。[3] [4] 4.3BSDでは、の制御下でグラフィック端末上でXなどのウィンドウシステムを実行するためのサポートが追加されまし[5] [6]編集の要件を削除するために、BSDバリアントは、ブートシーケンスの終わり近くのサブシェルで実行されるサイト固有のファイルを長い間サポートしてきました。 /etc/ttys/etc/rc/etc/rc.local

完全にモジュール化されたシステムがNetBSD1.5で導入され、FreeBSD5.0以降に移植されましたこのシステムは、ディレクトリ内のスクリプトを実行します。各スクリプトのファイル名から派生するSystemVのスクリプトの順序とは異なり、このシステムは各スクリプト内に配置された明示的な依存関係タグを使用します。[7]スクリプトが実行される順序は、これらのタグに記載されている要件に基づいて rcorderユーティリティによって決定されます。/etc/rc.d

SysVスタイル

sysv-rc-conf各ランレベルで実行されるSysVスタイルのinitスクリプトを選択するTUIユーティリティ

以前のバージョンと比較すると、AT&TのUNIX System IIIは、新しいスタイルのシステムスタートアップ構成を導入しました[8]。これはUNIX System Vに(変更を加えて)存続したため、「SysVスタイルの初期化」と呼ばれます。

いつでも、実行中のSystem Vは、ランレベルと呼ばれる所定の数の状態の1つにあります。少なくとも1つのランレベルは、システムの通常の動作状態です。通常、他のランレベルは、シングルユーザーモード(障害のあるシステムの修復に使用)、システムシャットダウン、およびその他のさまざまな状態を表します。あるランレベルから別のランレベルに切り替えると、ランレベルごとのスクリプトセットが実行されます。これは通常、ファイルシステムのマウント、デーモンの開始または停止、X Window Systemの開始または停止、マシンのシャットダウンなどです。

ランレベル

System Vランレベルは、マシンの特定の状態を記述し、それぞれで実行されているプロセスとデーモンによって特徴付けられます。一般に、7つのランレベルがあり、そのうち3つのランレベルは、システムの運用に不可欠であるため、「標準」と見なされます。

0.オフにします
1.シングルユーザーモード( Sまたはsとも呼ばれます
6.再起動します

これらの標準的なものとは別に、UnixおよびUnixライクなシステムは、ランレベルを多少異なる方法で処理します。共通の分母である/etc/inittabファイルは、特定のシステムで構成された各ランレベルが行うことを定義します。

デフォルトのランレベル

オペレーティング・システム デフォルトのランレベル
AIX 2
antiX 5
Gentoo Linux 3 [9]
HP-UX 3(コンソール/サーバー/マルチユーザー)または4(グラフィカル)
Linux From Scratch 3
Slackware Linux 3
Solaris / illumos 3 [10]
UNIX System Vリリース3.x、4.x 2
UnixWare 7.x 3

右の表のランレベル5がデフォルトのLinuxディストリビューションでは、ランレベル5は、通常はGDMKDMなどのディスプレイマネージャーを使用して、 X WindowSystemを実行するマルチユーザーグラフィカル環境を呼び出します。ただし、Solarisおよびillumosオペレーティングシステムは通常、ランレベル5を予約して、マシンをシャットダウンして自動的に電源をオフにします。

runlevelほとんどのシステムでは、すべてのユーザーがorコマンドを使用して現在のランレベルを確認できますwho -r[11] rootユーザーは通常、telinitまたはinitコマンドを実行して現在のランレベルを変更します。このファイルは、エントリ /etc/inittabでデフォルトのランレベルを設定します。:initdefault:

Unixシステムでは、ランレベルの変更は、欠落しているサービスのみを開始することによって実現されます(各レベルは、開始/停止されたサービスのみを定義するため)。[要出典]たとえば、システムをランレベル3から4に変更すると、ローカルXサーバーのみが起動する場合があります。ランレベル3に戻ると、再び停止します。

その他の実装

従来、initの主な欠点の1つは、タスクを順番に開始し、各タスクがロードを完了するのを待ってから次のタスクに進むことです。起動プロセスが最終的に入出力(I / O)をブロックすると、起動中に長い遅延が発生する可能性があります。SSDを使用するなどしてI / Oを高速化すると、遅延が短縮される可能性がありますが、根本的な原因には対処できません。

これやその他の設計上の問題に対処するために、従来のinitデーモンを置き換えるために、次のようなさまざまな取り組みが行われています。

  • GoboLinuxBootScripts
  • 組み込みオペレーティングシステムに適したbusybox-initは、 procdに置き換えられる前にOpenWrtによって採用されていました
  • Dinit、サービスマネージャーおよびinitシステム。[12]
  • エポック、シンプルさとサービス管理に焦点を当てたシングルスレッドのLinuxinitシステム[13]
  • Initng、プロセスを非同期で開始するように設計されたinitの完全な代替品
  • Launched 、Mac OS Xv10.4以降のDarwin / macOS / iOS / tvOSのinitの代わり(SystemStarterを起動して古いスタイルの「rc.local」およびSystemStarterプロセスを実行します)
  • OpenRCは、システムが提供するinitを利用しながら、プロセスの分離、並列化された起動、およびサービスの依存関係を提供するプロセススポーナーです。Alpine LinuxGentooおよびその派生物で使用され、 DevuanおよびArtixLinuxでオプションとして利用可能
  • runitは、サービスの並列開始を伴うinitのクロスプラットフォームの完全な代替品であり、VoidLinuxでデフォルトで使用されます[ 14]。
  • Sun Service Management Facility (SMF)、Solaris10以降のillumos / Solarisでのinitの完全な置き換え/再設計ですが、元のSystemVスタイルのinitによる唯一のサービスとして開始されました
  • Shepherd非同期の依存関係ベースの初期化を提供するGNUサービスおよびデーモンマネージャー。Guileスキームで書かれており、通常のシステム操作中にインタラクティブにハッキングできるようになっています[15]
  • s6、initシステムを含むソフトウェアスイート。[16] [17]
  • systemd、ソフトウェアスイート、Linuxでのinitの完全な代替品であり、initデーモンを含み、サービス、サービスマネージャー、およびその他の機能を同時に開始します。
  • SystemStarter 、 Mac OS Xv10.4より前のMacOSXでBSDスタイルのinitによって開始されたプロセススポーナー
  • Upstartは、プロセスを非同期で開始するように設計されたinitの完全な代替品です。Ubuntuによって開始され、2014年まで使用されていました。Fedora9 [ 18] [19] Red Hat Enterprise Linux 6 [20]およびGoogleのChromeOSでも使用されていました。[21]

2019年2月の時点で、systemdはほとんどの主要なLinuxディストリビューションに採用されています。[22]

も参照してください

参考文献

  1. ^ init(8)  – バージョン7Unixプログラマーマニュアル
  2. ^ ttys(5)  – バージョン7Unixプログラマーマニュアル
  3. ^ init(8)  –4.2BSD システムマネージャーのマニュアル
  4. ^ ttys(5)  –4.2BSD ファイル形式マニュアル
  5. ^ init(8)  –4.3BSD システムマネージャーのマニュアル
  6. ^ ttys(5)  –4.3BSD ファイル形式マニュアル
  7. ^ Andrew Smallshaw(2009年12月7日)。「UnixおよびLinux起動スクリプト、パート2」
  8. ^ "init(8)"minnie.tuhs.org
  9. ^ 「Initscripts」GentooLinuxドキュメントGentoo.org。2014-12-13 2020年12月8日取得
  10. ^ 「ランレベル」Oracle Solarisの管理:一般的なタスクOracle
  11. ^ 「UNIXのマニュアルページ:ランレベル(8)」Unixhelp.ed.ac.uk。1997-05-27。2014-07-14にオリジナルからアーカイブされました2014年7月12日取得
  12. ^ "GitHub --davmac314 / dinit:サービス監視/" init "システム"
  13. ^ 「EpochInitシステムのホームページ」
  14. ^ VoidLinuxのメインページ
  15. ^ 「羊飼い-GNUプロジェクト」フリーソフトウェアファウンデーション、Inc 2016年1月16日取得
  16. ^ 「s6:なぜ別の監督スイート」
  17. ^ 「s6initシステム」2021-09-13にオリジナルからアーカイブされました。
  18. ^ Fedora 14承認済み機能、2010-07-13 、取得済み2010-07-13
  19. ^ 「FedoraはsystemdをF15に延期します」Linuxウィークリーニュース。2010-09-14 2010年9月17日取得
  20. ^ 「展開」Red Hat Enterprise Linux 6:テクニカルノートRedHat 2013年12月31日取得
  21. ^ ソフトウェアアーキテクチャ:Chromium OS設計ドキュメント、 2014年1月25日取得
  22. ^ Systemd#Adoptionを参照してください

外部リンク