FreeBSD/レガシーブートプロセス
表示
< FreeBSD
FreeBSDのレガシーブート(BIOS起動)は、3段階のブートストラッププロセスを採用しています。この記事では、その詳細な手順と設定方法について解説します。
基本的な起動順序
[編集]デフォルトの起動シーケンス
[編集]一般的なi386 PCは、以下の順序で起動を試みます:
- フロッピーディスクドライブ0(ドライブA:)
- ハードディスクドライブ0(ドライブC:、BIOSでは0x80)
- 設定によっては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」が発生することがあります。
制限事項
[編集]- 現在のBSDラベル形式は、他のアーキテクチャとは異なります。
- -Pオプションによるキーボード検出は、「拡張」キーボードの存在確認のみを行います。古いXT/ATキーボードでは検出に失敗する可能性があります。
この起動システムは、シンプルながら柔軟な設定が可能で、様々なハードウェア構成に対応できる設計となっています。