コンテンツにスキップ

FreeBSD/レガシーブートプロセス

出典: フリー教科書『ウィキブックス(Wikibooks)』

FreeBSDのレガシーブート(BIOS起動)は、3段階のブートストラッププロセスを採用しています。この記事では、その詳細な手順と設定方法について解説します。

基本的な起動順序

[編集]

デフォルトの起動シーケンス

[編集]

一般的なi386 PCは、以下の順序で起動を試みます:

  1. フロッピーディスクドライブ0(ドライブA:)
  2. ハードディスクドライブ0(ドライブC:、BIOSでは0x80)
  3. 設定によってはCD-ROMドライブ

多くのBIOSでは、この起動順序をBIOS設定で変更することが可能です。

3段階ブートストラッププロセス

[編集]

第1段階と第2段階(ブートブロック)

[編集]

ブートブロックは、ディスクやスライスの限られた固定領域に配置される初期のブート処理を担当します。起動後、以下のようなプロンプトが表示されます:

</syntaxhighlight> >> FreeBSD/x86 BOOT Default: 0:ad(0,a)/boot/loader boot: </syntaxhighlight>

第3段階(loader)

[編集]

より高度な制御が可能なloader(8)プログラムが実行されます。この段階で様々なブート設定のカスタマイズが可能になります。

ブートコマンドのオプション

[編集]

基本構文

[編集]

</syntaxhighlight> bios_drive:interface(unit,[slice,]part)filename [-aCcDdghmnPprsv] [-Sspeed] </syntaxhighlight>

主要なコンポーネント

[編集]
  • bios_drive: BIOSが認識するドライブ番号(0が最初のドライブ)
  • interface: 起動コントローラの種類
    • ad: IDE/SATA等のディスク
    • fd: フロッピーディスク
    • da: SCSIディスク
  • unit: インターフェース上のドライブ番号
  • slice,part: BSDパーティション指定

重要なブートフラグ

[編集]
  • -a: ルートファイルシステムのマウントデバイスを尋ねる
  • -C: CD-ROMからルートファイルシステムをマウント
  • -D: デュアルコンソール設定で起動
  • -h: シリアルコンソールを強制
  • -s: シングルユーザーモードで起動
  • -v: デバイス検出時の詳細表示

重要なシステムファイル

[編集]
  • /boot.config: ブートブロックの設定(オプション)
  • /boot/boot1: 第1段階ブートストラップ
  • /boot/boot2: 第2段階ブートストラップ
  • /boot/loader: 第3段階ブートストラップ
  • /boot/kernel/kernel: デフォルトカーネル
  • /boot/kernel.old/kernel: 以前のカーネル(オプション)

一般的なエラーと診断

[編集]

ディスク関連エラーコード

[編集]
  • 0x1: 無効な引数
  • 0x2: アドレスマークが見つからない
  • 0x4: セクターが見つからない
  • 0x8: DMAオーバーラン
  • 0x10: CRC/ECCエラー
  • 0x20: コントローラー障害
  • 0x40: シーク失敗
  • 0x80: タイムアウト

注意事項

[編集]

古いマシンやEDDサポートのない環境では、起動関連ファイル(カーネルを含む)はシリンダー1023以下に配置する必要があります。この要件を満たさない場合、「Disk error 0x1」が発生することがあります。

制限事項

[編集]
  1. 現在のBSDラベル形式は、他のアーキテクチャとは異なります。
  2. -Pオプションによるキーボード検出は、「拡張」キーボードの存在確認のみを行います。古いXT/ATキーボードでは検出に失敗する可能性があります。

この起動システムは、シンプルながら柔軟な設定が可能で、様々なハードウェア構成に対応できる設計となっています。