DevuanおよびさまざまなsystemdフリーのLinuxディストリビューションは、代替のinitシステムを提供します。 runit 最も必要最低限で最も軽いものの1つです。コードベースが小さいと、バグやセキュリティの問題の保守と監査が容易になります。 * BSD、MacOSXなどの他のユニスでも実行できます。この記事では、 runitの基本について説明します。 Devuanをベースとしたinitスキーム。ただし、ほとんどの概念とコマンドは、他のディストリビューションでも同じである必要があります。詳細については、最後にある参考資料を参照してください。
動作メカニズム
公式文書によると、 runit サービス監視付きの初期化スキームです。つまり、起動中のサービスの自動開始、およびサービスの監視と再起動を処理します。 UNIX哲学に準拠して、runitはさまざまな小さなツールとバイナリで構成されています(ただし、肥大化するほどではありません * ahem * systemd * ahem * )それと他のデーモンと相互作用するため。
ほとんどのinitシステムと同様に、カーネルは最初のプロセス– /sbin/init
をロードします これは、runit-init(8)プログラムによって提供されます。次に、それ自体をrunit(8)に置き換えます。 runitは、システムの起動、実行、およびシャットダウンを実行するものであり、次の3つの段階で実行されます。
- ステージ1 :
システムは、/etc/runit/1
を介して1回限りの初期化タスクを実行します 。この段階が失敗すると、緊急シェルを取得します。 - ステージ2 :
runitは/etc/runit/2
を開始します これはrunsvdir(8)を介してランレベルを処理します。これは、システムが実行されているときにシステムがとどまる段階です。この段階で、Ctrl + Alt+Deleteの再起動要求を出すこともできます。 - ステージ3:
/etc/runit/2
の場合 システムの停止中または再起動中に発生するエラーなしで戻り、runitは/etc/runit/3
を開始します 。シャットダウンタスクはステージ3で実行されます。
ランレベル
runitの標準インストールには、2つのランレベルがあります 、default
およびsingle
。ランレベルディレクトリには、他のサービスディレクトリへのシンボリックリンクが含まれています。ほとんどのタスクが実行され、ほとんどのサービスはdefault
で開始されます ランレベル。ただし、/etc/runit/runsvdir/
に新しいフォルダを作成することで、独自のランレベルを作成できます。 必要なサービスをそのランレベルにシンボリックリンクします。私のDevuanインストールには、他に2つのランレベルが作成されています。
Runitは、ディレクトリをrunsvdir
に切り替えることにより、ランレベルを変更します。 プログラムが実行されています。これはrunsvchdir
によって処理されます。 指図。
たとえば、single
に切り替えるには ユーザーランレベル:
# runsvchdir single
default
の代わりに、起動時に特定のランレベルで開始するようにrunitに要求することもできます。 。 runitdir=name
を追加することでこれを行うことができます カーネルパラメータ。明らかに、ランレベルのname
存在する必要があります。つまり、ディレクトリが/etc/runit/runsvdir
にある必要があります。 その名前で。
たとえば、シングルユーザーモード(つまり、single
)で直接起動するには ランレベル)、runitdir=single
を追加できます カーネルパラメータに。
GRUBでは、e
を押すことでこれを行うことができます ブートローダーメニューでエントリを強調表示しながらキーを押します。
Ctrl+X
を押す 指定されたパラメータでシステムを起動し、効果的にシングルユーザーモードにします。
サービスの管理
サービスディレクトリには、デーモンを管理するためのファイルと必要なスクリプトが含まれています。サービスディレクトリは/etc/sv
にあります ディレクトリ。
これらのサービスディレクトリは、/etc/service
にシンボリックリンクされている必要があります それ以外の場合はrunit
それらにアクセスできなくなります。
/etc/service
にシンボリックリンクを作成する 基本的にenable
起動時に開始されるようにします。 disable
できます down
という名前のファイルを作成することによるサービス サービスディレクトリ内。
runitにはいくつかのプログラムがありますが、通常はsv
と対話するだけで済みます。 指図。構文はsystemdと同等です のsystemctl
コマンド。
サービスの開始:
# sv start <service_name>
やめる:
# sv stop <service_name>
サービスの再起動またはリロード:
# sv restart <service_name>
サービスのステータスを確認します:
# sv status <service_name>
sv
の書き直しもあります rsv
と呼ばれるRustのコマンド 。ただし、この記事では取り上げません。以下の参考文献のリンクを確認してください。
参照:
- Runitホームページ
- rsv
- Artix Wiki | Runit
- Void Linux |サービスとデーモン– runit