LoginSignup
22
11

More than 3 years have passed since last update.

SysVinitのこと調べてみたよ

Posted at

勉強前イメージ

systemdの勉強したくて調べてたらSysvinit出てきた。
initと何が違うのか?
カーネルの後に起動する各プロセスを立ち上げるなにかってイメージ
最近はsystemdに変わった

調査

SysVinitとは

  • SysVinitの概略

Unix系OSで広く使われてきたOS起動の仕組み。
最近のOSではUpstartやsystemdに変わっている。

  • SysVinitとは起動の順番でいうとどこか

下記の順番でいくと、5番目のプロセス実行の際に稼働するのがSysVinitになります。

  1. 電源を入れる
  2. BIOS/UEFIの起動
  3. ブートローダーの読み込み
  4. カーネルの読み込み
  5. プロセス実行 ←ココ!!!
  6. ログイン可能

SysVinitについて中身を見ていく

特徴

SysVinitでは、一番最初に initプロセス を開始します
initプロセスは プロセスIDが1番を持っています。
実際にCentOS5で確認してみると init が PID(プロセスID)が1になっています。

[root@localhost ~]# ps aux | grep [i]nit
root         1  0.1  0.0  10372   732 ?        Ss   20:48   0:00 init [3]    

initプロセスは、 /etc/inittab に書かれたプロセスを順番に起動しますが、
並列ではなく直列でしか起動できないので、時間がかかるというデメリットがありました。

SysVinitの実行順序

  1. initプロセスが開始される(pid=1)
  2. /etc/inittabファイルを読み込む
    1.システムの初期化のシェルを起動

    /etc/rc.d/rc.sysinit
    ホスト名や、ネットワークの設定をしたり起動に必要な初期化処理を行います。

    /etc/inittab
    # System initialization.
    si::sysinit:/etc/rc.d/rc.sysinit
    

    2.rcスクリプトの実行

    デフォルトランレベル確認。
    下記だったら デフォルトランレベル3
    ランレベルについては こちら

    /etc/inittab
    # Default runlevel. The runlevels used by RHS are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    id:3:initdefault:
    

    デフォルトランレベルに合わせたスクリプトの実行

    /etc/inittab
    l0:0:wait:/etc/rc.d/rc 0
    l1:1:wait:/etc/rc.d/rc 1
    l2:2:wait:/etc/rc.d/rc 2
    l3:3:wait:/etc/rc.d/rc 3 ← これ!
    l4:4:wait:/etc/rc.d/rc 4
    l5:5:wait:/etc/rc.d/rc 5
    l6:6:wait:/etc/rc.d/rc 6
    

そもそもinitプロセスって何よ?

initプロセス は他のプロセスを起動させる、親プロセス。
Linuxカーネルの起動後一番最初に起動されるので、↑で書いたとおりPIDは1が付与される

pstree

[root@localhost ~]# pstree
init─┬─acpid
     ├─anacron
     ├─atd
     ├─auditd─┬─audispd───{audispd}
     │        └─{auditd}
     ├─automount───4*[{automount}]
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─dhclient
     ├─events/0
     ├─gam_server
     ├─gpm
     ├─hald───hald-runner─┬─hald-addon-acpi
     │                    ├─2*[hald-addon-keyb]
     │                    └─hald-addon-stor
     ├─hcid
     ├─hidd
     ├─2*[iscsid]
     ├─iscsiuio───2*[{iscsiuio}]
     ├─khelper
     ├─klogd
     ├─...
     ├─...

勉強後イメージ

initが起動していく順序とかを決めたようなやつって感じか...
systemdだったら並列になってるし
イメージはなんとなく合ってたけど、ちゃんと分かったかも
/etc/inittabの中身見るためにCentOS5をインストールしたけど、インストール画面おしゃんだった

参考

22
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
11