EN JA
BOOT(8) (i386)
BOOT(8) FreeBSD System Manager's Manual (i386) BOOT(8)

名称

bootシステム立上げ時の手続き

解説

電源断とクラッシュからの回復。通常、電源復旧時とクラッシュ発生後には、システムは自動的にリブートします。ファイルシステムの整合性チェックが自動実行され、途中で失敗しなければ、システムはマルチユーザ・モードに移行します。

コールドスタート。大多数の i386 PC は、まずフロッピドライブ 0 (ドライブ A: ともいう) からのブートを試み、それに失敗すると、ハードディスクドライブ 0 (ドライブ C: もしくは BIOS のドライブ 0x80 ともいう) からブートしようとします。いくつかの BIOS では、このデフォルトの順序を変えたり、 CD-ROM デバイスをブートデバイスとして含めることができます。

デフォルトでは 3 段階のブートストラップが使用され、ブートブロック (ブートストラップの第 1 および第 2 段階) から、これとは別の第 3 段階のブートストラッププログラム loader(8) へと自動的に制御が移行されます。この第 3 段階では、ブート処理において、ブートブロックにおいて可能なことよりも洗練された制御を提供します。ブートブロックには、ディスクやスライスの限られた空間しか与えられないという制約があります。

しかしながら、第 3 段階をまったく使用せずに済ますこともできます。このようにするには、ブートブロックパラメータファイル /boot.config においてカーネル名を指定するか、 -n 無指定時には loader(8) が起動される前の短い待ち時間 (文字 -, \, |, / のいずれかが表示されている間) にキーを打ちます。第 3 段階をロードできない場合にも、第 2 段階においてブートが試みられます。

本サブセクションの残りの部分では、ブートブロックについてのみ扱います。 loader(8) プログラムの文書は別にあります。

ブートブロックがロードされたあとで、次のようなプロンプトが現れます。

>> FreeBSD/i386 BOOT 
Default: 0:ad(0,a)/boot/loader 
boot:

自動ブートにおいては、フロッピもしくはハードディスクのパーティション‘ a’から /boot/loader をロードしようとします。この動作は‘ boot:’というプロンプトが出ている間なら、キーボードから適当な文字を入力することで中断できます。以下にあげるような入力はブート動作に対する指示として受付けられます。

?
ブートファイルを探す際のヒントとして、デフォルトのブートデバイスのルートディレクトリにあるファイルの名前を表示します。 (パスの最後の部分に ? を指定することもできます。この場合、任意のサブディレクトリの一覧となります。)
bios_drive: interface( unit,[ slice,] part) filename [ -aCcDdghmnPprsv][ -Sspeed]
ブートファイルとブートフラグを指定します。
bios_drive
BIOS によって認識されるドライブ番号です。 1 つ目のドライブに対しては 0、2 つ目のドライブに対しては 1、などです。
interface
そこからブートするコントローラのタイプです。ブートファイルのイメージをロードするのには BIOS の機能を使用するので、そのコントローラに対する BIOS サポートが必要となることに注意して下さい。

サポートされるインタフェースは、次の通りです:

ad
WD100[2367] とその互換コントローラ上の ST506, IDE, ESDI, RLL ディスク
fd
5 1/4"または 3 1/2"高密度フロッピ
da
サポートされている SCSI コントローラ上の SCSI ディスク
unit
使用されているインタフェース上のドライブのユニット番号です。 1 つ目のドライブに対しては 0、2 つ目のドライブに対しては 1、などです。
[ slice,] part
ディスク上の BSD 部分内のパーティション文字です。詳しくは bsdlabel(8) を参照して下さい。慣例として、パーティション‘ a’のみがブート可能なイメージを含んでいます。ディスクにスライス (“fdisk パーティション”) が設けられていた場合、任意の slice (1 が最初のスライスで 2 が 2 番目のスライス等となります) からブート可能であり、デフォルト (無指定時) はアクティブスライスから、これがない場合は最初の FreeBSD スライスからのブートとなります。指定された slice が 0 の場合、最初の FreeBSD スライス (“互換”スライスとも呼ばれます) からブートします。
filename
ブートファイルの (指定されたパーティションのルートディレクトリからの相対) パス名です。デフォルトでは /boot/kernel/kernel となります。シンボリックリンクはサポートされていません (ハードリンクは使用できます)。
[ -aCcDdghmnPpqrsv][ -Sspeed]
ブートフラグは、次の通りです:

-a
カーネル初期化中に、ルートファイルシステムとしてマウントされるデバイスを尋ねて来るようにします。
-C
ルートファイルシステムを CD-ROM からマウントしようとします。
-c
本フラグは今のところ何もしません。
-D
デュアルコンソール設定でブートします。シングル設定では、下記の -h オプションの状態によって、コンソールは内部ディスプレイかシリアルポートのいずれかになります。デュアルコンソール設定では、内部ディスプレイとシリアルポートの両方が、 -h オプションの状態によらず、同時にコンソールになります。
-d
カーネルの初期化のできる限り早い段階で DDB カーネルデバッガ ( ddb(4) を参照) に入ります。
-g
GDB リモートデバッギングプロトコルを使用します。
-h
シリアルコンソールを強制します。例えば、内部コンソールからブートした場合、カーネルがコンソールデバイスとしてシリアルポートを使用するようにするため、 -h オプションを使用できます。シリアルポートドライバ sio(4) (しかし、 uart(4)) ではない) は、このオプションを上書きするためのフラグ (0x20) があります。そのフラグが設定されているなら、シリアルポートは、ここに記述された -h オプションにかかわらずコンソールとして常に使用されます。
-m
ブートの間に、すべてのコンソール入力と出力を抑制するために、コンソールの音を消します。
-n
loader(8) 起動前の、キー入力によるブート中断を無視します。
-P
キーボードを検出します。キーボードが発見できなかった場合には、 -D-h オプションが自動的にセットされます。
-p
デバイスの検出フェーズにおいて、各デバイスがアタッチされるたびに停止します。
-q
静かにします。自動ブートが失敗するか、または無効にされていないなら、コンソールに何も書き込みません。次の段階から -m オプションと組み合わせて使用するコンソールへの書き込みを防ぐために、このオプションは、第 2 段階のブートストラップのみに影響します。
-r
ルートファイルシステムを含むデバイスとしてスタティックに config されたデフォルトを使用します ( config(8) を参照)。
-s
シングルユーザ・モードで立上がるようになります。コンソールが“insecure” ( ttys(5) を参照) に設定されていた場合には、root のパスワードを入力しなければなりません。
-S speed
シリアルコンソールのスピードを speed に設定します。 make.conf(5)BOOT_COMCONSOLE_SPEED を設定し、ブートブロックを再コンパイルして、再インストールすることによって上書きしないなら、デフォルトは、9600 です。
-v
デバイス検出の際 (そしてその後も)、詳細を出力します。

ブートブロックコードのためのデフォルト設定オプションを設定するためには、 /boot.config を使用します。 /boot.config ファイルに関する詳細については、 boot.config(5) を参照してください。

関連ファイル

/boot.config
ブートブロックに対するパラメータ (必須ではない)
/boot/boot1
第 1 段階のブートストラップ
/boot/boot2
第 2 段階のブートストラップ
/boot/loader
第 3 段階のブートストラップ
/boot/kernel/kernel
デフォルトカーネル
/boot/kernel.old/kernel
普通は非デフォルトカーネル (必須ではない)

診断

ディスク関連のエラーが発生すると、第 2 段階のブートストラップがエラーを報告します。 BIOS が返すものと同じエラーコードを使用し、例えば“Disk error 0x1 (lba=0x12345678)”などと報告します。エラーコードの一部のリストを示します:

0x1
不正な引数
0x2
アドレスマークが見つかりません
0x4
セクタが見つかりません
0x8
DMA オーバラン
0x9
64K 境界を越えて DMA を試みました
0xc
不正なメディア
0x10
訂正できない CRC/ECC エラー
0x20
コントローラの異常
0x40
シークの失敗
0x80
タイムアウト

: 古いマシンや EDD サポート (ディスクパケットインタフェースサポート) が無いマシンでは、ブートフェーズにアクセスされるブート関連の全ファイルと構造 (カーネルを含みます) は、ディスク上で (BIOS が理解するジオメトリにおいて) シリンダ 1023 以下に置かれることが必要です。第 2 段階のブートストラップが“Disk error 0x1”を報告する場合、通常はこの条件が満されていないことを意味します。

バグ

このバージョンの BSD で使用されている bsdlabel のフォーマットは、他のアーキテクチャで使用されている物とは全く異なっています。

空間の制約により、 -P オプションにより起動されるキーボード検出は、BIOS が“拡張”キーボードを検出したかを単にテストするだけです。“XT/AT”キーボード (F11, F12 キーなどを持ちません) を接続した場合、検出は、失敗します。

July 1, 2013 FreeBSD