Provided by: manpages-ja_0.5.0.0.20210215+dfsg-1_all bug

名前

       boot-scripts - ブートシーケンスの一般的な解説

説明

       細かいところはシステムによって異なるが、大まかに言うと、  ブートシーケンスは以下の段階に分
       けられる: (1) ハードウェアのブート (2) オペレーティングシステム (OS) ローダー (3) カーネル
       の起動 (4) init と inittab (5) ブートスクリプト

   ハードウェアのブート
       電源投入やハードリセットが行われると、  ROM (通常は PROM) に保存されているプログラムに制御
       が渡される。 PC ではこのプログラムは通常 BIOS と呼ばれる。

       普通このプログラムは、まずマシンの基本的な自己診断を行い、  不揮発性メモリーにアクセスして
       各種のパラメーターを読み込む。  PC  では、このメモリーは電池によってバックアップされている
       CMOS メモリーである。 そのため CMOS と呼ばれることが多い。 しかし PC  以外の世界では、通常
       nvram (nonvolatile ram) と呼ばれている。

       nvram  に保存されているパラメーターはシステムによって異なる。 しかし、ハードウェアブートプ
       ログラムは、少なくとも、 ブートデバイスがどれであるか、もしくは ブートデバイスとして探索す
       るデバイスがどれであるかを 知っていなければならない。

       ハードウェアブートのシーケンスは、次にブートデバイスにアクセスし、  ブートデバイスのあらか
       じめ決まった場所に置かれている OS ローダーをロードし、制御を渡す。

       注意:  ここではネットワークブートについては触れない。   この話題について調査したい読者は、
              DHCP, TFTP, PXE, Etherboot 等について調べてみるとよい。

   OS ローダー
       PC  では、OS  ローダーはブートデバイスの先頭セクタに置かれる。  これは  MBR  (Master  Boot
       Record) と呼ばれる。

       様々な制約のため、 ほとんどのシステムで第一ローダーは非常に簡単な機能しか持っていない。 PC
       以外のシステムでも、  サイズの制限やローダーの機能などにある程度の制限は存在する。  しかし
       パーティションテーブルを含めて 512 バイトという PC の MBR では、OS  ローダーの全機能をここ
       に押し込むのはまず不可能だ。

       したがって大抵の  OS では、第一ローダーは第二ローダーを呼ぶようになっており、 後者はあらか
       じめ指定されたディスクパーティションに置けるようになっている。

       Linux における OS ローダーは、ふつう lilo(8)  か grub(8)  である。両者とも第二ローダーとし
       てインストールすることもでき  (この場合  DOS がインストールした MBR がこれらを指すようにす
       る)、   また第一・第二ローダーの両方としてインストールすることもできる。    後者の場合向け
       に、両者は特別な MBR イメージを提供している。 これには第二ローダーをルートパーティションか
       らロードするような ブートストラップコードが含まれている。

       OS  ローダーの主な仕事は、カーネルのディスク上の位置を特定し、  ロードして起動することであ
       る。ほとんどの  OS ローダーは、 対話モードで使用することもでき、追加のパラメーターをカーネ
       ルに渡したり、 デフォルトとは別のカーネルを指定したりすることができる  (例えば、最後にコン
       パイルしたカーネルが機能しなかった時に  バックアップのカーネルを指定して起動するといったこ
       とができる)。

   カーネルの起動
       カーネルはロードされると、デバイスを (ドライバによって)  初期化し、スワッパを起動し  (最近
       の Linux カーネルでは、 スワッパは kswapd という「カーネルプロセス」になる)、 ルートファイ
       ルシステム (/) をマウントする。

       カーネルに渡すことのできるパラメーターのいくつかは、  これらの動作に関係する。   (例えばデ
       フォルトのルートファイルシステムを変更したりできる)。 Linux カーネルパラメーターに関するよ
       り詳しい情報は bootparam(7)  を読んでほしい。

       これらが済んではじめて、 カーネルは最初の (ユーザーランドの) プロセスを生成し、 番号 1  を
       与える。このプロセスは  /sbin/init プログラムを実行する。 カーネルによって解釈されていない
       パラメーターはすべて /sbin/init に渡される。

   init  inittab
       init は、起動するとまず /etc/inittab を読み、その後の行動に関する情報を得る。 このファイル
       は ランレベル によってどのような動作を行うべきであるかを定義する。

       これによってシステム管理者の管理が楽になる。各ランレベルは提供する  サービスの集合に対応す
       る (例えば、 Sシングルユーザー2 で は大抵のネットワークサービスを起動する)。 システ
       ム管理者は、 init(1) を用いて現在のランレベルを変更でき、 runlevel(8) によって現在のランレ
       ベルを確認できる。

       しかし、このファイルを編集して個々のサービスを管理するのは不便なので、 inittab  は単にスク
       リプトの集合に対するブートストラップになっている。  実際の個々のサービスの起動や停止は、こ
       れらのスクリプトで行う。

   ブートスクリプト
       注意:  以下の説明は System V Release 4 をベースとしたシステムに関するものである。 現在の大
              抵の商用 UNIX システム (Solaris, HP-UX, Irix, Tru64) や、 メジャーな Linux ディスト
              リビューション (Red Hat, Debian, Mandriva, SUSE, Ubuntu) はこれをベースにしたもので
              ある。     システムによっては、ブートスクリプトの機構が    いくらか異なることもある
              (Slackware Linux, FreeBSD, OpenBSD など)。

       管理すべき各サービス (メール、nfs サーバ、cron などなど)  それぞれに対して、ブートスクリプ
       トがひとつずつ特定のディレクトリ (ほとんどの Linux で /etc/init.d)  に配置される。これらの
       スクリプトは、 それぞれ引数としてひとつの単語を取る。"start" が指定されると そのサービスを
       起動し、"stop" が指定されるとサービスを停止する。 スクリプトは他の「便利な」引数を取っても
       よい (例えば "restart" で停止・起動を順番に行ったり、"status" でサービスの状態を表示するな
       ど)。 スクリプトを引数なしで実行すると、 指定できる引数の一覧が表示される。

   順序づけディレクトリ
       あるランレベルで、特定のスクリプトを指定した順序で実行させるため、    順序付けディレクトリ
       (sequencing directory) という仕組みが存在する。 これらはふつう /etc/rc[0-6S].d  である。各
       ディレクトリの内部には、  /etc/init.d ディレクトリに置かれたスクリプトへのリンク (ふつうは
       シンボリックリンク)  が置かれる。

       第一スクリプト (通常 /etc/rc)  は inittab(5)  から呼ばれ、  順序付けディレクトリに置かれた
       リンク経由で各サービススクリプトを呼び出す。  名前が 'S' ではじまるリンクは "start" という
       引数をつけて呼び出され (すなわちサービスが起動し)。名前が 'K' ではじまるリンクは "stop" と
       いう引数をつけて呼び出される (すなわちサービスが停止する)。

       同じランレベルの内部での起動や停止の順序を規定するために、  リンクの名前には順序を示す数字
       が含まれる。 また、名前をわかりやすくするため、 リンク名の末尾には対応するサービスの名前が
       つけられる。 例えば、 /etc/rc2.d/S80sendmail というリンクは、sendmail サービスをランレベル
       2 において起動する。 これは、 /etc/rc2.d/S12syslog よりも後に、また /etc/rc2.d/S90xfs より
       も先に実行される。

       ブートの順序とランレベルを管理するには、 これらのリンクを管理しなければならない。 しかし多
       くの Linux ディストリビューションでは、 これらの作業を手助けしてくれるツールが存在する (例
       えば chkconfig(8)  など)。

   ブートの設定
       デーモンの起動時には、  コマンドラインオプションやパラメーターを指定できるのが普通である。
       システム管理者がこれらのパラメーターを変更したいと思ったときに、  ブートスクリプトそのもの
       を編集しなくてもすむよう、  設定ファイルが用いられる。これらは特定のディレクトリ  (Red Hat
       システムでは /etc/sysconfig) に置かれ、ブートスクリプトから参照される。

       古い UNIX システムでは、これらのファイルには  デーモンに与える実際のコマンドラインオプショ
       ンが書かれていた。  しかし最近の Linux システム (や HP-UX) では、 これらのファイルには単に
       シェル変数が書かれているだけである。 /etc/init.d  に置かれたブートスクリプトは、これらの設
       定ファイルを source し、その変数の値を用いる。

ファイル

       /etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/

関連項目

       inittab(5), bootparam(7), init(1), runlevel(8), shutdown(8)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。