1 .\" Written by Oron Peled <oron@actcom.co.il>.
2 .\" May be distributed subject to the GPL.
4 .\" I tried to be as much generic in the description as possible:
5 .\" - General boot sequence is applicable to almost any
6 .\" OS/Machine (DOS/PC, Linux/PC, Solaris/SPARC, CMS/S390)
7 .\" - kernel and init(8) is applicable to almost any UNIX/Linux
8 .\" - boot scripts are applicable to SYSV-R4 based UNIX/Linux
10 .\" Modified 2004-11-03 patch from Martin Schulze <joey@infodrom.org>
12 .\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved.
13 .\" Translated 2002-08-07, NAKANO Takeo <nakano@apm.seikei.ac.jp>
14 .\" Updated 2005-02-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
16 .TH BOOT 7 2010-09-19 "Linux" "Linux Programmer's Manual"
18 boot-scripts \- ブートシーケンスの一般的な解説
20 細かいところはシステムによって異なるが、大まかに言うと、
22 (1) ハードウェアのブート (2) OS ローダー
23 (3) カーネルの起動 (4) init と inittab
27 ROM (通常は PROM) に保存されているプログラムに制御が渡される。
28 PC ではこのプログラムは通常 \fBBIOS\fR と呼ばれる。
30 ふつうこのプログラムは、まずマシンの基本的な自己診断を行い、
31 そして不揮発性メモリにアクセスして各種のパラメータを読み込む。
32 PC では、このメモリは電池によってバックアップされている CMOS メモリである。
33 そのため \fBCMOS\fR と呼ばれることが多い。
34 しかし PC 以外の世界では、通常 \fBnvram\fR
35 (nonvolatile ram) と呼ばれている。
37 nvram に保存されているパラメータはシステムによって異なる。
38 しかし、ハードウェアブートプログラムは、少なくとも、
40 ブートデバイスとして探索するデバイスがどれであるかを
43 ハードウェアブートのシーケンスは、次にブートデバイスにアクセスし、
44 ブートデバイスのあらかじめ決まった場所に置かれている
48 ここではネットワークブートについては触れない。
50 DHCP, TFTP, PXE, Etherboot 等について調べてみるとよい。
52 PC では、OS ローダーはブートデバイスの先頭セクタに置かれる。
53 これは \fBMBR\fR (Master Boot Record) と呼ばれる。
56 ほとんどのシステムで第一ローダーは非常に簡単な機能しか持っていない。
58 サイズの制限やローダーの機能などにある程度の制限は存在する。
59 しかしパーティションテーブルを含めて 512 バイトという
60 PC の MBR では、OS ローダーの全機能をここに押し込むのはまず不可能だ。
62 したがって大抵の OS では、第一ローダーは第二ローダーを呼ぶようになっており、
63 後者はあらかじめ指定されたディスクパーティションに置けるようになっている。
65 Linux における OS ローダーは、ふつう
69 である。両者とも第二ローダーとしてインストールすることもでき
70 (この場合 DOS がインストールした MBR がこれらを指すようにする)、
71 また第一・第二ローダーの両方としてインストールすることもできる。
72 後者の場合向けに、両者は特別な MBR イメージを提供している。
73 これには第二ローダーをルートパーティションからロードするような
76 OS ローダーの主な仕事は、カーネルのディスク上の位置を特定し、
77 ロードして起動することである。ほとんどの OS ローダーは、
78 対話モードで使用することもでき、追加のパラメータをカーネルに渡したり、
79 デフォルトとは別のカーネルを指定したりすることができる
80 (例えば、最後にコンパイルしたカーネルが機能しなかった時に
81 バックアップのカーネルを指定して起動するといったことができる)。
83 カーネルはロードされると、デバイスを (ドライバによって)
84 初期化し、スワッパを起動し (最近の Linux カーネルでは、
85 スワッパは kswapd という「カーネルプロセス」になる)、
86 ルートファイルシステム (/) をマウントする。
88 カーネルに渡すことのできるパラメータのいくつかは、
90 (例えばデフォルトのルートファイルシステムを変更したりできる)。
91 Linux カーネルパラメータに関するより詳しい情報は
96 カーネルは最初の (ユーザランドの) プロセスを生成し、
100 カーネルによって解釈されていないパラメータはすべて
109 によってどのような動作を行うべきであるかを定義する。
111 これによってシステム管理者の管理が楽になる。
112 各\fIランレベル\fRは提供するサービスの集合に対応する
113 (例えば \fBS\fR は \fIシングルユーザ\fR、
114 \fB2\fR では大抵のネットワークサービスを起動する、など)。
121 しかし、このファイルを編集して個々のサービスを管理するのは不便なので、
122 inittab は単にスクリプトの集合に対するブートストラップになっている。
123 実際の個々のサービスの起動や停止は、これらのスクリプトで行う。
127 以下の説明は System V Release 4 をベースとしたシステムに関するものである。
128 現在の大抵の商用 UNIX システム (Solaris, HP-UX, Irix, Tru64) や、
129 メジャーな Linux ディストリビューション (Red Hat, Debian, Mandriva,
130 SUSE, Ubuntu) はこれをベースにしたものである。
131 システムによっては、ブートスクリプトの機構が
132 いくらか異なることもある (Slackware Linux, FreeBSD, OpenBSD など)。
134 管理すべき各サービス (メール、nfs サーバ、cron などなど)
135 それぞれに対して、ブートスクリプトがひとつずつ特定のディレクトリ
139 それぞれ引数としてひとつの単語を取る。"start" が指定されると
140 そのサービスを起動し、"stop" が指定されるとサービスを停止する。
141 スクリプトは他の「便利な」引数を取ってもよい
142 (例えば "restart" で停止・起動を順番に行ったり、"status"
147 あるランレベルで、特定のスクリプトを指定した順序で実行させるため、
148 .I 順序付けディレクトリ (sequencing directory)
154 ディレクトリに置かれたスクリプトへのリンク (ふつうはシンボリックリンク)
162 順序付けディレクトリに置かれたリンク経由で各サービススクリプトを呼び出す。
163 名前が \(aqS\(aq ではじまるリンクは "start" という引数をつけて呼び出され
164 (すなわちサービスが起動し)。名前が \(aqK\(aq ではじまるリンクは "stop"
165 という引数をつけて呼び出される (すなわちサービスが停止する)。
167 同じランレベルの内部での起動や停止の順序を規定するために、
168 リンクの名前には順序を示す数字が含まれる。
170 リンク名の末尾には対応するサービスの名前がつけられる。
172 .I /etc/rc2.d/S80sendmail
173 というリンクは、sendmail サービスをランレベル 2 において起動する。
175 .I /etc/rc2.d/S12syslog
182 しかし多くの Linux ディストリビューションでは、
183 これらの作業を手助けしてくれるツールが存在する
189 コマンドラインオプションやパラメータを指定できるのが普通である。
190 システム管理者がこれらのパラメータを変更したいと思ったときに、
191 ブートスクリプトそのものを編集しなくてもすむよう、
192 設定ファイルが用いられる。これらは特定のディレクトリ
195 に置かれ、ブートスクリプトから参照される。
197 古い UNIX システムでは、これらのファイルには
198 デーモンに与える実際のコマンドラインオプションが書かれていた。
199 しかし最近の Linux システム (や HP-UX) では、
200 これらのファイルには単にシェル変数が書かれているだけである。
202 に置かれたブートスクリプトは、これらの設定ファイルを
207 .IR /etc/rc[S0\-6].d/ ,