MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


initについて
profile-img
投稿者: fujioka090...さん
投稿日:2023/03/29 13:17
更新日:
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容

今回はinitについて説明しようと思います。


まずUnix系OSで使用されてきたOS起動の仕組みとして「SysVinit」、「Upstart」、「Systemd」というものが有ります。

この中の「SysVinit」という仕組みでinitというプロセスが使用されています。

現在は「Systemd」の方が主流ではありますが、現在も一部「SysVinit」の仕組みが残っているので、今回調べてみたいと思いました。

initにはinitプロセスとinitコマンドが有るので両方とも説明したいと思います。

まずinitプロセスというのは「SysVinit」において、カーネルが最初に起動するプロセスです。

LinuxOSが起動する流れとしてはBIOS→ブートローダ→カーネル→initという順番に起動・制御の引き渡しが行われ、ユーザーが入力するためのプロンプト画面やGUI画面が起動されます。

つまり、initプロセスというのはLinuxOS起動時に最初に起動される第一のプロセスであり、全てのプロセスの親プロセスとなります。なのでPIDも「1」に固定されています。

initの基本的な役割としてはinitの設定ファイルである「/etc/inittab」の設定内容に従ってプロセスを作り出すことです。

まず、「/etc/inittab」の各行は「id:runlevel:action:process」という書式になっています。

:で区切られている各項目の説明を下記に示します。


「/etc/inittab」の設定項目

◎id・・・エントリの識別子。1~4文字のユニークな文字列でなければならない。

◎runlevel・・・ランレベルの指定。1~6までの数字を複数指定できる。省略するとデフォルトランレベルとなる。

◎action・・・プロセスの起動または終了時の動作。

◎process・・・起動するプログラム。


ランレベルというのはOSの動作モードを取り扱うために使用されているSysVinit内での考え方です。(Systemdだとターゲットと呼ばれたりする)

各ランレベルについての説明を下記に示します。(ランレベルは0~6、sがあります。)


ランレベル

◎0・・・停止、シャットダウンの状態

◎1・・・シングルユーザーモード、rootユーザーによるシステムメンテナンス時に用いられる。

◎2~4・・・マルチユーザーモード、基本的にCUI画面での操作。

◎5・・・マルチユーザーモード、GUI画面での操作。

◎6・・・再起動。

◎Sまたはs・・・シングルユーザーモード。


上記のようにランレベルには様々な種類が有りますが、例えば「/etc/inittab」に「id:3:initdefault:」と記載されていた場合、毎回OSを起動する際はランレベルを3(マルチユーザーモード、CUI画面)で起動する設定となります。

ただし、現在は「Systemd」が主流ですので、「/etc/inittab」ファイルが無い可能性が有りますので、ご注意ください。


次にinitコマンドについて説明します。

initコマンドはランレベルを手動で変更するために使用するコマンドです。

initコマンドの書式を下記に示します。


init ランレベル


例えば現在のランレベルが3だとして、システムメンテナンスのためにランレベル1に変更したい時、「init 1」や「init s」と入力して実行すればランレベルが1の状態へ変更されます。

ランレベル3に戻りたい場合は「init 3」を入力して実行すればランレベル3に変更されます。

「Systemd」内でもinitコマンドは使用することができます。

ただし、使用権限がrootユーザーのみの場合は権限変更やrootユーザーへのログインを行う必要が有ります。


今回は「SysVinit」について説明させていただきました。

別の機会に「Systemd」についても調べて説明したいと考えています。


参考資料

SysVinitのこと調べてみたよ - Qiita

【LPIC101】SysVinitとsystemd | やっさんハック (yassanabc.com)

Linux起動の仕組みを理解しよう[init/inittab編]:Windowsユーザーに教えるLinuxの常識(10)(1/2 ページ) - @IT (itmedia.co.jp)

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3