新しいRHEL 6初期化システム

バージョン6までのRedHat Enterprise Linuxディストリビューションのベースとなった従来のSystem V初期化スキームはよく知られており、理解するのは非常に簡単でした。起動します。

RHEL 6では状況が変わりました。SystemVはUpstartに置き換えられ、オペレーティングシステムのブートプロセスの構成手順がわずかに変更されました。 元々Ubuntu用に開発されたUpstartは、RedHatシステムに非常によく適合し、通常のスタートアップスキームの一部のみを置き換えます。

ただし、変更は重要であり、ほとんど文書化されていないため、この記事では、新しいロードスキームとそれがもたらしたものを明確にしようとします。



最初に目を引くのは、ほとんど空の「/ etc / inittab」です。これは、デフォルトの実行レベルを示す、コメント化されていない唯一の行のままです。 ランレベル自体は変更されていません。3番目のレベルは通常のマルチユーザーモードに対応しており、5番目のレベルではグラフィックサーバーも起動されます。

文字列は通常の外観です。



id:5:initdefault:



ここで、「5」はデフォルトの実行レベルです。 起動時にこのインストールを行うと、グラフィックサーバーが自動的に起動します(または少なくとも試行します)。

新しい初期化システムの主な構造上の違いは、イベントに応答することで機能することです。 たとえば、新しい起動レベルへの移行が実行されます->イベントが処理され、スクリプトが実行されます。 「Ctrl-Alt-Delete」を押してイベントを受信しました-特定のアクションが実行されます。 これらのイベントはすべて、「init」という古典的な名前を持つ1つのプログラムによって制御され、「/ sbin」ディレクトリにあります。 イベントを受信した後、システムはディレクトリ「/ etc / init」から対応するファイルに記述されているアクションを実行します。 このディレクトリには、イベントを受信したときのシステムの動作を説明するファイルが含まれており、用語によれば、タスクファイルと呼ばれます。

タスクファイルの構文は単純です。タスクを開始するイベント(キーワード "start on")または停止(キーワード "stop on")、および開始するイベント(キーワード「exec」、単一コマンド、スクリプトの「スクリプト」)。

最も難しい瞬間は、どのイベントが発生し、何が呼び出されるかを解析して記憶することです。 最も一般的なイベントのいくつか:



- 起動 :システム起動時の最初のイベント。 これは、RedHatで「/ etc / inittab」から起動されていた古いスクリプト「rc.sysvinit」を実行する段階に対応し、現在はupstartから起動されています。



- ランレベルランレベルが変更されるとイベントが生成されます。 構成では、通常、実行レベル番号は特定のレベルへの移行イベントをインターセプトするために示されます。



- 停止 :タスクの完了後に生成



- 開始済み :タスクの開始後に生成されます



起動手順を検討してください。 「/ sbin / init」と呼ばれるカーネルが起動しました。 先ほど言ったように、「スタートアップ」イベントが最初に実行されます。 ハンドラーはrcS.confファイルにあります。



起動時に開始

exec /etc/rc.d/rc.sysinit



その結果、以前と同じ「rc.sysinit」が実行されます。 同じファイルには、「rc.sysinit」スクリプトが完了し、/ etc / inittabを分析して実行レベルがデフォルトレベルに変更するイベントを発生させた後に実行される「ポストストップ」スクリプトがあります。 レベルが変更されると、新しい実行レベルに移行するイベントが生成され、対応するハンドラーが呼び出されます。 中心的なものの1つはrc.confです。



ランレベルで開始[0123456]

RUNLEVELをエクスポート

exec /etc/rc.d/rc $ RUNLEVEL



実際、以前と同じことが行われます。使い慣れたスクリプト「/etc/rc.d/rc」は、移行が実行される実行レベルのパラメーターで実行され、「/ etc / init.d /」からサービスを起動します。 ここで、RUNLEVEL変数がエクスポートされ、スクリプトや他のタスクファイルでさらに使用できるようになります。



ファイル/etc/init/prefdm.confに記述されている別のハンドラーを検討してください。



停止したrc RUNLEVEL = 5で開始

rc RUNLEVEL = [!5]の開始時に停止

復活する

リスポーン制限10 120

exec / etc / X11 / prefdm -nodaemon



これは、グラフィックサーバーのスタートアップ構成ファイルです。 最初の行は、タスク "rc"(構成ファイル "rc.conf"に対応)を停止するイベントでのスクリプトの開始を示し、変数 "RUNLEVEL"もチェックします。 2番目は、「rc」タスクが開始され、5を除く任意の実行レベルでスクリプトを停止します。

キーワード「respawn」は以前と同じ意味です。キーワード「exec」の後に記述されたプロセスが停止すると、upstartはそれを再起動します。 また、制限は次のとおりです。グラフィックサーバーの構成の問題が無限ループで起動をループしないように、120秒の間隔で10回の開始試行が許可されます。

上記から、次の結論を導き出すことができます:upstartはRedHatで部分的に実装されています。実際、ファイル/ etc / inittabの内容は、ディレクトリ/ etc / initのいくつかの設定ファイルと、ディレクトリ/ etc / rc.d "はそのまま残されました。 このスキームは、upstartが最初に開発された同じUbuntuで使用されるものとは大きく異なり、サービスはそこから直接起動され、並列処理、監視、その他の機能を提供します。

RedHatは、おそらく互換性のために、このすべての機能を実装していません。 サービスを開始するには、使い慣れたコマンド「service」を使用するか、開始スクリプトへのフルパスを指定する必要があります。 実装は徐々に行われる可能性がありますが、利点から、起動システムの構成、監視機能、および基本的なレベルでの並列性の柔軟性が向上しました。 特別な欠陥は見当たりません。システムは新しく、一見しただけでは馴染みがありません。スムーズな移行により、システムに徐々に慣れて、管理タスクを解決する際に使い始めることができます。



All Articles