まず、コンピュータの電源を入れると、コンピュータはすべてが稼働できる状態にあ るかを自己診断する。これは、パワーオンセルフテスト(Power on self test)と呼ば れる。次に ROM BIOS に置かれたブートストラップローダ(bootstrap loader)という プログラムが、ブートセクタを探す。ブートセクタとはディスクの先頭のセクタで、 オペレーティングシステムを(メモリに)ロードする機能を持った小さなプログラムが 乗っている。ブートセクタの 0x1FE(=510) バイト目には 0xAA55(=43605) のマジックナ ンバー(訳注:ファイル形式を判断するためのナンバー)がマークされている。マークさ れた位置はセクタの末尾 2 バイトに当たる。このマークの有無で、そのセクタが ブートセクタであるかどうかをハードウェア側で識別できるわけである。
ブートストラップローダには、ブートセクタを探すべき場所のリストが収められてい
る。わたしの古いマシンは、プライマリフロッピードライブを探したあと、プライマ
リハードドライブを探す。もっと新しいマシンでは CD-ROM のブートセクタを探すこ
ともできる。ブートセクタが見つかれば、そこにあるプログラムをメモリにロードし
それに制御を任せる。そしてそのプログラムが、オペレーティングシステムをロード
する。
典型的な Linux システムでは、そのプログラムとは lilo
の第一ステージ
のブートローダのことになるだろう。しかしシステム起動のための設定方法は多種多
様であるから、詳細については、LILO User's Guide (
日本語訳)を見てほしい。URL に
ついては下記を参照のこと。
LILO
PC のハードウェアの動作について語るべきことは確かにまだまだあるのだが、ここは それを述べるべき場所ではない。PC のハードウェアに関しては良書がそろっているから そのひとつを読んでほしい。
マシンはある種の自己情報を CMOS 内に保持している。その中には、どういうディス クや RAM がシステムに存在するのかという情報も含まれる。マシンの BIOS にあるプ ログラムを使えばそうした情報の設定変更ができる。電源を入れたときスクリーンに 表示されるメッセージに注意すれば、どうやってそのプログラムにアクセスするか分 かるだろう。わたしのマシンでは、オペレーティングシステムがロードされる前に delete キーを押すようになっている。
中古部品を使ってマシンを組み立てることは、PC ハードウェアを知る上で良い方法で ある。最低でも 386 CPU を手に入れよう。そうすれば、簡単に Linux を走らせるこ とができる。それほど費用はかからないだろう。周囲の友人に尋ねてみれば、必要な パーツを譲ってくれるかもしれない。
uniosをダウンロード
し、コンパイルしてブートディスクを作ること。(これまでは下記にホームページが
あったのだが、消えてしまった。
http://www.unios.org)
これは、ブート機能を持った簡単な (Hello World) プログラムであり、100 行ちょっ
とのアセンブラコードでできている。GNU のアセンブラである as
で理解で
きるフォーマットに変換されているので、見てみるとよい。
hex editor を使って unios のブートディスクイメージを開くこと。このイメージは
512 バイトあり、ちょうど 1 セクタ分である。マジックナンバー 0xAA55 を探すこ
と。起動用フロッピーディスクやコンピュータにあるブートセクタでも同じことをし
てほしい。dd
コマンドを使えば、それをファイルにコピーできる。dd if=/dev/fd0 of=boot.sector
if
(input file) と of
(output file) とを逆にしないように特に
注意すること!
LILO のブートローダのコードもチェックすること。