Linuxの起動方法

Linuxが起動すると最初に起動するものは、/sbin/initです。
Centos6の場合、upstartでの起動。

rpm -qf /sbin/init
upstart-0.6.5-12.el6.x86_64

「/sbin/init」がシステム起動時の初期スクリプトの「/etc/rc.d/rc.sysinit」を読み込む。
「/etc/rc.d/rc.sysinit」

読み込む内容

HOSTNAME=$(/bin/hostname)

set -m (ジョブ制御機能で、ctrl+Z等の終了を受け付ける設定。デフォルトっぽいが明示的に記載している)


ホスト名等を設定している模様。
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network


ホスト名がなかったらlocalhostにしますって
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost


-e test -e file file が存在するならば真となる。
ここでは存在しない場合は

-n マウントをする際,/etc/mtabに情報を書き込まない

-t ファイル・システムのタイプを指定する。指定できるファイル・システム・タイプは別表を参照

こんなファイルシステムが存在するのか・・・

if [ ! -e /proc/mounts ]; then
mount -n -t proc /proc /proc
mount -n -t sysfs /sys /sys >/dev/null 2>&1
fi

/proc以下にusbがなければ、そのままusbcoreのモジュールを読み込むと。。。


if [ ! -d /proc/bus/usb ]; then
modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
else
mount -n -t usbfs /proc/bus/usb /proc/bus/usb
fi

 

やっと50行目くらい。

全部で600行あるのに。。。。

 

 

参考:プロのためのLinuxシステム構築運用(p.173)

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-boot-init-shutdown-init.html