読者です 読者をやめる 読者になる 読者になる

Linuxマニュアル:Linuxの起動スクリプト

Linux

initファイル
Linuxが起動したときに初めに読み込まれるファイル。

initの実態はpsコマンドで表示されるPID=1のプロセス。

ubuntu804@ubuntu-vm:~$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /sbin/init
    2 ?        S<     0:00 [kthreadd]
    3 ?        S<     0:00 [migration/0]

initはrun levelに応じて動作を切り替えることができる。run levelを確認するには/etc/inittabを見ればよい。

ただし、centOSでは以前書いたようにinittabが存在するが、ubuntuの場合はinittabが存在しない。ubuntuGUIからCUIへと変更するには若干面倒な点がある(ref http://bit.ly/aPee2A)

run level は基本的には3がCUI、5がX windows Sytemを意味している。グラフィカルチップに問題があるときは、グラフィカルログインを避けるため一時的に5から3へと変更を行う。

run level3が選択されると/etc/rc.d/rc3が読み込まれる。ubuntuでは/etc/rc3.dの中にある各リンク先のスクリプトだろうと推測される。

root@ubuntu-vm:/etc/rc5.d# ls
K99vmware-tools              S12dbus           S20hotkey-setup   S30gdm
README                       S16ssh            S20nvidia-kernel  S89anacron
S01policykit                 S17mysql-ndb-mgm  S20open-vm-tools  S89atd
S03vmware-tools              S18avahi-daemon   S20powernowd      S89cron
S05vbesave                   S18mysql-ndb      S20rsync          S98usplash
S10acpid                     S19mysql          S24dhcdbd         S99acpi-support
S10sysklogd                  S20apmd           S24hal            S99laptop-mode
S10xserver-xorg-input-wacom  S20apport         S25bluetooth      S99rc.local
S11klogd                     S20cupsys         S25pulseaudio     S99rmnologin

リンク先の実体はcentosでは/etc/rc.d/init.dディレクトリ以下にあり、ubuntuの場合はetc/init.d以下にある。

root@ubuntu-vm:/etc/init.d# ls
README             hwclockfirst.sh                  rcS
acpi-support       keyboard-setup                   readahead
acpid              killprocs                        readahead-desktop
alsa-utils         klogd                            reboot
anacron            laptop-mode                      rmnologin
apmd               linux-restricted-modules-common  rsync
apparmor           loopback                         screen-cleanup
apport             module-init-tools                sendsigs
atd                mountall-bootclean.sh            single

これらのスクリプトは実行時にstart, stop, restartといった引数を取るようになっている。つまり、以下のようにサービスをコントロールできる。

ot@ubuntu-vm:/etc/init.d# /etc/init.d/vmware-tools restart
Stopping VMware Tools services in the virtual machine:
   Guest operating system daemon:                                      done
   Virtual Printing daemon:                                            done
   Unmounting HGFS shares:                                             done
   Guest filesystem driver:                                            done
   VM communication interface socket family:                           done
   VM communication interface:                                         done
   File system sync driver:                                            done
Starting VMware Tools services in the virtual machine:
   Switching to guest configuration:                                   done
   Paravirtual SCSI module:                                            done
   VM communication interface:                                        failed
   VM communication interface socket family:                          failed
   File system sync driver:                                            done
   Guest operating system daemon:                                      done
   Virtual Printing daemon:                                            done

ちなみにランレベルスクリプトディレクトリからのリンクは以下のルールに基づいて作成されている。

  • 1文字目 開始:S/停止:K
  • 2〜3文字目 実行する順番
  • 4文字以降 実行するサービス。

上記lsコマンドで表示されているS03vmware-toolsの意味もこれで理解することができる。

起動時には「K」で始まるスクリプトをstopオプションと共に実行し、次に「S」で始まるスクリプトをstartオプションと共に実行することでサービスを実行する。

以上の処理が終了するとmingettyコマンドによってログインプロンプトの表示となる。