- ベストアンサー
システム起動時のブートファイルについて
Solarisのシステム立ち上げ時に読み取られるブートファイル等について、 詳しく教えて下さい。 特に、以下のプログラム(ファイル?)は、具体的にどのような動作を行うための ものなのでしょうか? ・ブートブロック ・ufsbootファイル ・カーネル(Static Core) よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
typoですすいません。 spaec -> sparcです。 講習されるとのことなので次の質問に備えましょう :-) "ブートローダおよびカーネルのロードされるメモリ上のアドレスはどうなってますか?かち合っていたらカーネルのロードができなくなりませんか?" PCの場合BIOSでアクセスできるメモリ領域は限られているのでブートローダはBIOSからアクセスできる部分の一番後ろの方に展開され、実行されるのに対し、カーネルはメモリの先頭から展開されるのであとで展開されたカーネルのコードでブートローダが上書きされることはありません。 そのため、カーネルのサイズにも制限ができてしまいます。このメモリ制限を回避するためにバイナリ化されたドライバなどをモジュールとして後でカーネルに組み込むことでカーネルのサイズ制限を乗り越えることができます。 sparcの場合はどうなっているかしりませんが、PCのBIOS制限のようなものはないので純粋にメインメモリの後ろのほうに読み込まれて実行されると思います。
その他の回答 (2)
- mph
- ベストアンサー率54% (39/72)
sparcマシンの場合で説明します。 内蔵ROMのプログラム(PCの場合はBIOS)は設定されたディスク(起動ディスク)の特定の領域(設定不可)からプログラムを読み出し、メモリ上に展開して、制御をそのプログラムにわたします。 このとき、特定の領域という場所がブートブロックです。 このとき読み出されるプログラムがブートローダでsolaris(sparc)の場合はufsbootですし、linuxではliloが良く使われますし、Windows NT系ではNTローダというやつがこれにあたります。 ufsブートは事前に書き込まれているパーティションがUFSであり、カーネルが決まったパス名で存在すると思って読み出しにかかります。 読んだカーネルをメモリに展開していき、作業が終了するとカーネルの先頭にジャンプし、カーネルの実行が開始されます。 PCの場合はブートブロックにあたるMBRが512byteのためあまり複雑な作業はできません。 そのため、MBRのプログラムからさらにどこかのパーティション上のプログラムを読み出し、それからカーネルを読み出すというような多段構成になっている場合もあります。(例: intelソラリスやGNU grub, システムコマンダーなど) カーネルが何をするものかはここでは説明しませんが、OSの一番えらい人です :-) カーネルがどのようなものかを詳しく知りたければOSの教科書(大学等で使うもの)が一番わかりやすいかと思います。
- mph
- ベストアンサー率54% (39/72)
intelとspaecで動作が微妙に違います。 どちらでしょうか?
お礼
spaecって何ですか? 私のマシンには、UltraSPARC IIe プロセッサが搭載されてます。 この補足で合っているんでしょうか。 全くの素人なので、よくわからないのですが・・・。 実は、Solarisマシンの起動・停止の仕組みについての講習を行わなければ ならなくなり、本を参考に資料を作っていたのですが、ブートプログラムと カーネルの読み取りの動作が、今ひとつ理解できずに困っています。
お礼
無事、講習を終えることができました。 丁寧なご回答、ありがとうございました。