scorpius.txt

	ここで、scorpius と称する内蔵ローダは、Ver 4.x では Extended-IPL
	と呼ばれていたものと同一のものです。大容量ハードディスクが廉価で
	入手できる時世ですから、LBA モードをサポートしていない scorpius
	の用途は限られると思います。
	しかし、ver 5.x が default でインストールする gemini の仕様を決め
	るうえでのベースになっていますので、scorpius.txt として添付してお
	きます。




1. scorpius をフロッピーから使う

本来デバッグ用に作ったものをそのまま残したものです。マスタブートプログラムには
まったく触らずに scorpius の機能を忠実に再現させることができます。もちろんアク
ティブ領域を変更後にブートさせることも可能です。テストするにはフォーマット済み
のフロッピーディスクをユニット #0 に入れて

	# extipl fdtest fd0 @scorpius

と、iplname として "scorpius" を指定して extipl を使います。この時確認を求めら
れますので "y" で答えてください。"Ok." と表示されればフロッピーユニット #0 に
あるディスクのブートセクタに FD用の scorpius コードが書き込まれています。

フロッピーから使う前に C-MOS setup でブート順序が必ず "A -> C" となっているこ
とを確認してください。さもないとフロッピーディスクから優先してブートさせること
ができません。
scprpius を書き込んだフロッピーディスクを入れたままマシンをリブートしてくださ
い。いかがですか？ 今までハードディスクからブートさせていたときと何か変化があ
りましたか？「なんにも変わりなし、からかってるのか！」と怒らないでください。
「変化なし」が正常なのです。フロッピーユニット #0 のアクセスランプが消えると
同時に HD のアクティブ領域になっている OS が起動したはずです。では、もう一度リ
ブートし、フロッピーディスクのアクセスランプが点灯している間にシフトキーを押し
てみてください。
	---------
	このタイミングの取り方は慣れないと少し難しいかもしれません。数回テスト
	してみてください。コツは BIOS の初期化が済んで、ドライブ A: からブート
	しようとしている時をねらうことです。ドライブ A: のアクセスランプを注意
	して見ると BIOS の初期化時の recalibrate で点灯し、その後ブートセクタ
        を読むためにもう一度点灯するはずです。この2度目をねらうのです。
	---------

すると、画面左上にパーティション情報と System-ID が表示され、"Boot#0:0.?" と
選択を促されるはずです。このときに表示される "Boot#0:0.?" の意味は次のように
なっています。

	Boot#0:0.1
	     | | +-- アクティブ領域番号。アクティブ領域がなければ "1"
	     | +---- 拡張領域に入った時の深さを示す。マスタテーブルは "0"
	     +------ ハードディスクのユニット番号。１台目は "0"

ここで、そのまま <Enter> キーで答えると今まで HD からブートした時と同じ動作を
します。もし、アクティブ領域ではないけれどもブート可能領域があるならば、その領
域番号を1〜4の数字で指定し、<Enter> キーを押す事によりブートすることができます。
	---------
	うまくブートできるか否かはそこから起動される OS のローダに依存します。
	OS ローダが scorpius から示されたメモリ上に置かれた partition table
	だけを参照するのならば問題無く起動できます。しかし、数ある OS のローダ
	の中には master IPL から知らされる partition 情報を無視して自分でブート
	セクタの partition table を確認する生真面目なものもあります。
	scorpius 等 extipl が内蔵するローダはメモリ上に置かれた partition table
	の active flag を操作するだけですからこのような真面目なローダには相手
	にされませんので注意してください。
	---------

この状態では <End> キーでブートさせない限りマスタブートセクタの内容は変化しませ
んので安心して使えます。しばらくはこの状態で scorpius の雰囲気に慣れてください。
もちろん、このままずっと使い続けても構いません。


2. scorpius をハードディスクにインストール

フロッピー版は疑似体験するためのもので、立ち上げ用のフロッピーディスクが残って
いて不便です。覚悟ができたならば master-IPL を scorpius に取り替えることにしま
しょう。心の準備ができていない人はこの項目はどうぞパスしてください。怖いもの見
たさで読んでも構いません。

ハードディスクへ scorpius をインストールするには extipl を使って

	# extipl install wd0 @scorpius

とします。iplname として "scorpius" を指定するのを忘れないでください。途中で現
在の master-IPL を保存するファイル名の入力を促されますので適切なファイル名を入
力してください。ファイル名にはパスを含んでも構いません。その後、本当に書き換え
て良いかどうか確認されます。もし良ければ "y" で答えてください。"Ok." が返れば
scorpius のインストールは完了です。
なお、この作業は root で行ってください。常識的にはブートセクタへは一般ユーザの
書き込み権が与えられていません。


3. scorpius の起動

scorpius は IBM 製の HD-IPL と完全互換ですからユーザから特別な指示がない限り１
台目のハードディスクのアクティブ領域からブートします。

scorpius の選択機能を呼び出すにはブート時に <Shift> キーを押すことにより行ない
ます。scorpius は起動時にシフトキーが押されているとアクティブ領域からの自動起動
を中止し、パーティションテーブルの内容を表示し、あなたからの起動領域指定を待ち
ます。下記はその一例で、簡単な説明を加えたものです。

	-------------------
	 Part  Sys
	  1    s01		;; パーティション番号と OS 識別子
	  2    sA5		;;	   〃
	  3    s05		;; 拡張 DOS 領域
	  4			;; 空き領域
	 Boot#0:0.2		;; プロンプト
	-------------------
	      | | |
	      | | +---- ブートする領域番号
	      | +------ 対象パーティションテーブル番号
	      +-------- HD unit 番号

インストールしている OS などによって Sys の下にならぶ OS 識別子は変ります。
この例では 1 台目ハードディスク(HD unit #0)で３つのパーティションが使われて
います。そして、1 には DR-DOS(12bit FAT)が、2 には FreeBSD が、インストールさ
れ、3 は拡張 DOS 領域に設定されており現在のアクティブ領域は 2 の FreeBSDに設
定されていることが分かります。

この画面で OS のインストールしてあるパーティションを 1 〜 4 の数字で指定し、
<Enter> キーで確定することによりブートさせることができます。もし、空き領域が
指定されたならば BELL を鳴らして警告を出しブートはしません。また、起動したい
OS のブートセクタの 511 バイト目から 0xaa55 が無い場合も正規のブートセクタ
とは認めず処理を行いません。

    <Enter>
	一般的なブート開始キーで、ほとんどの OS はこれで起動できるはずです。

    <End>
	このキーで領域を確定させると選択した領域をアクティブパーティションに変
	更してからブート動作に移ります。次回の自動起動領域はこのときに選択され
	たパーティションに変ります。なお、ブート標識の変更ができるのは 1 台目の
	ハードディスクに限られます。2 台目以降や、拡張 DOS 領域内の場合には書き
	戻されません。
	----------
	scorpius が active flag を変更したパーティションテーブルをブートセクタ
	に書き戻す意味はアクティブ領域の変更ではなく、ブートセクタにあるパーテ
	ィションテーブルの active flag を確認する OS に対応させるためです。
	<Enter>、<End>どちらのキーを使って起動すべきか迷ったならば、まず<Enter>
	キーでブートを試みてください。失敗するようならば <End> キーでもう一度た
	めしてみてください。それでも失敗したならば？？
	----------


4. ブート対象ハードディスクの変更

これはまったくの個人的な願望の産物として付加したもので、ただでさえ狭いコード領
域に入り込んでますから顰蹙は覚悟の上です。本来 IBM 機はハードディスク 1 台目の
みがブート対象で、それ以外からは不可能です。ところが、scorpius にはブートパーテ
ィションの選択時にブートさせたいハードディスクを切り換える機能も付加されていま
す。

少し使い込むと分かると思いますが、scorpius はブート領域を選択する時に "1..4"
以外にも、"0" を受け付けます。もし、 HD が複数接続されており、選択画面で "0" が
指定されたならば次のハードディスクのブート領域選択画面に変り、そのハードディス
クの任意の領域からブートできます。MS-DOS をはじめほとんどの OS は 1 台目からの
起動を前提としているので実際にはブートできない OS が多いと思います。
これは scorpius の責任ではなく、該当する OS のローダの制限によるものです。

現在選択対象となっているハードディスクの番号はプロンプト "Boot#" に続いて
"0, 1, 2 .." として表示されます。"0" による対象ハードディスクの変更は巡回動
作をしますから、ブートキーを押さない限り 1 台目と 2 台目、 .... n 台目のハード
ディスクの領域を順次表示します。(最後の n 台目までいくと、1 台目の HD に戻る)

仮に 2 台の HD からなるシステムを使っていて、[4.3] の画面で "0" を押したとしま
す。すると scorpius は 2 台目の HD のパーティションテーブルを読みそれを表示しま
す。

	-------------------
	Part  Sys
	 1    s06		;; パーティション番号と OS 識別子
	 2    s81		;;	   〃
	 3	     		;;  空き領域
	 4
	Boot#1:0.1		;; プロンプト、 2 台目は "#1:0.1" となる
	-------------------

上記はその一例です。2 台目の HD にはアクティブ領域が無いのが一般的ですからプロ
ンプトに続く数字は常に "1" になります。いま、ここから minix を起動したいならば
、 "2" を指定してから <Enter> キーを押します。あるいは、ここでもう一度 "0" で
対象 HD の切り替えを行なうと DISK BIOS から見て次の HD のブートセクタを読みに
いきます。もし、HD が 2 台だけならば 1 台目の HD に戻るサイクル動作をします。


5. 拡張領域内からのブート

さて、ここで [3] で示した例で DOS拡張領域の 3 を選んでみましょう。すると、
scorpius は DOS 拡張領域内部に用意されたパーティションテーブルを新たに読み込
んでその内容を表示し次のような画面に変わります。

	-------------------
	 Part  Sys
	  1    s83		;; パーティション番号と OS 識別子
	  2    s05		;;	   〃
	  3
	  4
	 Boot #0:1.1		;; プロンプト
	-------------------

選択が DOS 拡張領域内に入ったことを示すために、プロンプトが "Boot #0:" に続く
テーブル番号が +1 されたことに注意してください。この例では、拡張領域内の最初
が Linux native になっており、さらにもうひとつ拡張領域が設定されています。こ
こで、さらに拡張領域を選択すると、さらにその内容をダンプしてきます。

ここで、1 を選択すると Linux を起動させることができます。確定キーとして [End]
も使うこともできますが、ブート領域を再設定するための書き戻しは行いません。
scorpius が書き戻せる対象は１台目のマスタテーブルのみです。
(ブート領域を変更したい時には extipl のサブコマンド "cghboot" を使ってください)

なお、拡張領域を表示している時に基本領域の選択に直接戻ることはできません。どう
しても戻りたい時には、HD 切替えキーの "0" を使います。scorpius は HD の切替え
を行いますから、これを必要回数行って "Boot#0:0.?" としてください。もし、HDが
1 台だけならば、1 度の切替え操作で基本領域にもどることができます。

迷子にならないためには "Boot" に続く数字に注目してください。


[6] scorpius の使い方・番外編

(1) ブート時に active 領域を変更する
    scorpius は真面目な OS ローダのために <End> キーで active 領域を変更
    したパーティションテーブルをブートセクタに書き戻すことができます。
    これを逆手にとれば今回起動する OS を次回から自動起動とすることができます。
    結果として自動起動領域を変更してから OS を起動できるわけです。

(2) ブート領域の強制選択
    通常の master-IPL はパーティションテーブルからブート標識がセットされている
    領域が見つからないとエラーで停止します。しかし、scorpius はブート標識が
    見つからないと強制的にブート領域の選択状態になります。毎回どの OS をブート
    させるか迷う浮気者(?)を自認する方は extipl の clrboot によりすべての領域を
    非アクティブに設定してください。scorpius はあなたの気持ちが定まるまでいつ
    までも待ち続けます。:-)
    このときにプロンプト "Boot #?:0." に続く数字はアクティブ領域ではなく、使わ
    れている最初の領域番号です。（通常は "1" になるはずです）
    但し、ROM IPL のチェックが厳密だと scorpius が走る前にエラー停止するこ
    とがあります。

========
/*  $Id: scorpius.seed,v 1.1.1.1 2000/11/29 11:58:18 takamiti Exp $  */
# end of scorpius.txt
