MIRACLE

メールサービス申込 ユーザー登録&ログイン パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

テクノロジー情報


Linux技術トレーニング 基本管理コース I

第1章 システムの起動と終了

この章では、Linuxの起動の仕方、停止の仕方を主に説明します。特にマシンの電源を投入してから起動までに内部的にどのような動きがあるかを理解することは管理者として非常に大事なことです。
また起動についてはランレベルという概念が重要になります。ランレベルはシステムの実行するサービスのレベルを示します。高いレベルであれば、それに応じたサービスが起動している必要があります。ランレベルの違いにより起動されるサービスの種類は違ってきますが、起動シーケンスの中でどのように制御されるのかをこの章で説明します。
1. 起動方法
1-1. 起動方法
  • システムを起動するにはマシンの電源を投入する。
  • 内部的に2段階の処理を経てシステムが起動する。
    • ブートプロセス【1】(BIOS〜ブートローダー)
    • ブートプロセス【2】(カーネル〜initプログラム)

システムの起動

Linuxのシステムを起動するのは大変簡単であり、基本的には単にマシンの電源を投入するだけです。電源投入後は以下の2つの処理が順次実行され、Linuxが起動します。


1-2. ブートプロセス【1】 BIOS 〜 ブートローダー
  • ハードウェアPOST(Power on self test)
  • MBR(MasterBootRecord)からGRUB/LILOの読み込み
  • GRUB/LILOの起動
  • カーネルイメージをメモリーにロード
    • /boot/vmlinuz-`uname-r`
  • initrdイメージ(RAMディスク)をメモリーにロード
    • /boot/initrd-`uname-r`.img

BIOS〜ブートローダー
  1. マシンの電源を投入すると自動的にハードウェアのチェック(POSTといいます)が行われ、その後BIOSのプログラムがプライマリハードディスクの一番先頭にあるMBRをメモリに読み込みます。
  2. MBRには、第1ステージ・ブートローダーとパーティションテーブルが含まれ、以後BIOSはブートプロセスの制御をブートローダーに任せます。

ブートローダー (GRUB/LILO)
  1. 第1ステージ・ブートローダーは、/boot パーティションから第2ステージ・ブートローダーをメモリにロードします。
  2. 第2ステージ・ブートローダーはGRUB/LILOの2種類があります。
  3. カーネルの選択画面を表示し、選択されたカーネルのカーネルバイナリーファイル[/boot/vmlinuz-`uname -r`]を/bootディレクトリ内から見つけて、ロードします。
  4. もし存在すれば、initrdイメージ[/boot/initrd-`uname -r`.img]をメモリにロードしておく。ここでブートローダーの役目は終わり、ブートプロセスの制御をカーネルに託します

1-3. ブートプロセス【2】 カーネル 〜 initプログラム
  • initrdイメージを解凍しマウント(モジュールのロードなど)
    • /boot/initrd-`uname-r`.img
  • rootファイルシステムのマウント(読取専用)
  • initの実行(/etc/inittabを読み込み)
    • /etc/rc.d/rc.sysinitスクリプト実行
    • ランレベルごとの各種サービス(デーモン)の起動

カーネル
  1. メモリの初期化、CPU、記憶装置など各種ハードウェアの設定します。(pci情報など)
  2. もしロードされていれば、initrdイメージ[/boot/initrd-`uname -r`.img]をマウントし、事前に必要なドライバ・モジュールをロードします。
  3. 読み取り専用ルートパーティションをマウントし、未使用メモリを開放します。後ほどrc.sysinitスクリプトの中で、読み書きできる状態で再度マウントし直します。
  4. /sbin/initプログラムを実行します。
initプログラム

/etc/inittabの設定に従って以下の操作を行います。

  1. /etc/rc.d/rc.sysinitスクリプトを実行し、システムの初期設定を行います。この段階で、殆どのデバイス・ドライバは、モジュールとしてロードされます。
  2. rc.sysinitスクリプトから/etc/rc.d/init.d/functionsスクリプト実行されます。
  3. ランレベルに合せてサービスを起動します。
  4. ランレベル5では、/etc/X11/prefdmスクリプトを実行し、Xウィンドウマネージャを起動します。これで一連の起動シーケンスが完了します。
<initプログラムの起動後>
ブート完了後にinitが行うことは、端末の制御と親プロセスを持たなくなったプロセスを管理します。
プロセスは自分自身が_exitシステムコールを実行し、親プロセスがwait系システムコールを実行することで初めて終了します。何かの拍子に親プロセスが止まってしまったりすると、_exitしたまま永遠にwaitを待つことになります。こうしたプロセスを探して、本来の親プロセスに代わってwait系システムコールを実行するわけです。

1-4. Grand Unified Boolloader(GRUB)
  • pre OS環境を提供
    • 設定ファイルに関係なく、ディスク・パーティションからカーネルイメージを探し出し、OSの起動が可能
  • ext2/ext3のなどのファイルシステムを読み込める
    • /boot/grub/grub.confにローダーから直接アクセスできる
    • liloと異なり、MBR上のブートローダーを書き込み直す必要がない

今後のブートローダー(GRUB)

これまでLinuxディストリビューションのブートローダーはLILOが一般的でした。このLILOにかわり、より柔軟で、高機能なブートローダーがGRUBになります。 GRUBの大きな特徴としては、Pre OS環境を提供しコマンドラインからのOS起動を可能にします。また、GRUBはOS起動前に、/etc/grub.conf設定ファイルに直接アクセスするため、LILOのように、設定を変更する度にMBRの再構成の必要がなくなりました。

GRUB設定ファイル(/boot/grub/grub.conf)
  • default  :始動するデフォルトOSを0から番号で指定。
  • fallback :デフォルトOSの起動に失敗した際のOSを0からの番号で指定。
  • title    :OSのタイトル。起動画面に表示される。
  • splashimage :起動画面の背景イメージを指定。
    ex) splashimage=(hd0, 2)/grub/splash.xpm.gz
  • password :GRUB起動時のパスワードを指定。
    MD5暗号化をしている場合には、--md5オプションを指定。
default=0
timeout=10
title Asianux (2.6.9-11.19AX)
password --md5 $1$rX5jK0$ZMM0g/08lFAlmWnoN4aOM1
lock root (hd0,0) kernel /vmlinuz-2.6.9-11.19AX ro root=LABEL=/ initrd /initrd-2.6.9-11.19AX.img
title Miracle Linux (2.4.9-e.25.60ml)
root (hd1,4) kernel /vmlinuz-2.4.9-e.25.60ml ro root=/dev/sdc1 initrd /initrd-2.4.9-e.25.60ml.img

第1章 2へ

■この資料の評価をお願いします。
とても参考になった
参考になった
どちらでもない
あまり参考にならなかった
まったく参考にならなかった

コメントがある場合は以下に記述してください。技術資料として取り上げてほしいテーマも受け付けています。

以下は任意です。

お名前(フルネーム) :
会社名 :
メールアドレス :
 

会社情報 採用情報 個人情報保護方針 情報セキュリティ基本方針 商標等取り扱い事項 English
Copyright(c)2000-2015 MIRACLE LINUX CORPORATION. All Rights Reserved.