次のページ 前のページ 目次へ

5. Milo の読み込み

ほとんどのシステムが Windows NT ARC ファームウェアを載せていますので、 Milo を読み込む方法として最も汎用的です。 Windows NT ARC ファームウェアを含め、 以下のような様々な方法で Milo を読み込むことができます:

5.1 Windows NT ARC ファームウェアから Milo を読み込む

Alpha AXP ベースのシステムのほとんどには Windows NT ARC ファームウェアが載っています。 これは Milo や Linux を起動する手段として十分に薦められます。 Windows NT ファームウェアが動いており、 自分のシステムに適した Milo のイメージがあるならば、 どのシステムでもこの方法でうまくいきます。

Windows NT ARC ファームウェア環境では、プログラムを動かしたり ファームウェアを動作させるコールバックを作ったりできます。 これを行うのが Windows NT OSLoader です。 単に Milo の読み込みと実行だけをするのが linload.exe です。 linload.exe は適切なイメージファイルをメモリの 0x00000000 に読み込み、 それに対して swap-PAL PALcall を発行します。 この swap が必要なのは、Milo が Linux と同様に Windows NT とは異る PALcode を使うためです。 [訳注:ARC コンソールの段階では PALcode が WinNT 用になっているため、 これを Linux</Milo 用に置きかえなければいけません]。 Milo は自分自身を 0x200000 にリロケートし、 リセットエントリポイントから PALcode を再実行します。

Linux の選択項目をつけ加える前に、 Windows NT ARC ファームウェアが読み込める形の Milo と linload.exe をコピーしておかねばなりません。 DOS フォーマットのフロッピーから起動するような例を挙げておきます:

  1. ブートメニューで "Supplementary menu..." を選びます。
  2. "Supplementary menu""Set up the system..." を選びます。
  3. "Setup menu""Manage boot selection menu..." を選びます。
  4. "Boot selections menu""Add a boot selection" を選びます。
  5. "Floppy Disk 0" を選びます。
  6. osloader directory と name に "linload.exe" を入力します。
  7. operating system being on the same partition as the osloader には "yes" と答えます。
  8. operationg system root directory には "\" を入力します。
  9. name for this boot selection には私は "Linux" を入れています。
  10. you do not want to initialise the debugger at boot time には "No" と答えます。
  11. "Boot selections menu" に戻り、"Change a boot selection option" で 今作った項目を選びます。
  12. 下の矢印キーを押して "OSLOADFILENAME" を選び、 "noname.arc" のように使いたい Milo のイメージの名前をタイプします。
  13. "Boot Selections menu" に戻るために ESC を押します。
  14. "Setup Menu" を選ぶか ESC を押すかして、"Supplementary menu, and save changes" を選びます。
  15. ESC を押して "Boot menu" に戻ると、Milo が使えるようになります。 もしデフォルトで Linux を起動したくなければ、"Boot selections menu" で 優先順位を変えることができます。

上の作業が全て終わると、boot selection は次のようになっているはずです:

LOADIDENTIFIER=Linux
SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe
OSLOADPARTITION=multi(0)disk(0)fdisk(0)
OSLOADFILENAME=\noname.arc
OSLOADOPTIONS=

これで Milo と Linux を起動できるようになりました。 Windows NT が認識できる NTFS や DOS のファイルシステムから直接 linload.exe と Milo を読み込むこともできます。

OSLOADOPTIONS はコマンドとして Milo に渡されます。 Milo を止めずに Windows NT から Linux を直接起動するためには、 OSLOADOPTIONS を次のように設定します:

boot sda2:vmlinux.gz root=/dev/sda2

どのようなコマンドが使えるか、詳しくは Milo のユーザインターフェース を 参照してください。

WNT ARC ファームウェアを通して Milo を読み込む(ちょっと姑息な)手段として、 Milo を MS-DOS フロッピーに fwupdate.exe という名前で書き込み、 "Upgrade Firmware" を選ぶという技もあります。

5.2 評価用ボードデバッグモニタから Milo を読み込む

評価用ボード(もしくはその互換ボード)は Alpha 評価用ボードデバッグモニタをサポートしています。 この方法で Milo を起動しようとする前に、 自分のシステムに付いているドキュメントを参照してください。 次のシステムがデバッグモニタをサポートしていることが判っています:

この方法を試す前に、 現バージョンの評価用ボードデバッグモニタにビデオドライバや キーボードドライバが入っていないことを確認しておきましょう。 また、デバッグモニタを使えるように、 シリアルポートに他のシステムを繋げておいてください。 このインターフェースは非常に単純で、 help と打てば使えるコマンドが全て表示されます。 そのうち、 bootload という文字が入っているコマンドがよく使われます。

評価用ボードデバッグモニタは、 ネットワーク (netboot) やフロッピー (flboot) から イメージを読み込むことができます。 どちらの場合でも、イメージを起動する前に > bootadr 200000 として、 ブートアドレスを 0x200000 にしておかねばなりません。

もしイメージがフロッピーにある場合(DOS フォーマットのフロッピーにのみ対応)、 次のようなコマンドを打込みます:

     AlphaPC64> flboot <Milo-image-name>

5.3 緊急用(failsafe)ブートブロックフロッピーから Milo を読み込む

AxpPCI33 だけが 緊急用(failsafe)ブートブロックフロッピーをサポートしていることが 判っています( Nonameを参照)。

もしコンパイル済みの標準的な Milo の .dd イメージがなければ、 SRM ブートブロックフロッピーを作らねばなりません。 Milo がすでに作ってあれば、 Digital Unix が動いているマシンで次のようにします:

     fddisk -fmt /dev/rfd0a
     cat mboot bootm > /dev/rfd0a
     disklabel -rw rfd0a 'rx23' mboot bootm

もしくは Linux が動いているマシンで次のようにしても良いでしょう:

     cat mboot bootm > /dev/fd0 

もし標準 Milo イメージ(ここでは milo.dd としましょう)があるならば、 次のコマンドでブートブロックフロッピーを作ることができます:

     dd if=milo.dd of=/dev/fd0 

5.4 フラッシュメモリから Milo を読み込む

Windows NT ARC ファームウェアを使う代わりに、 フラッシュメモリに Milo を入れて直接起動できるシステムも数多くあります:

5.5 SRM コンソールから Milo を読み込む

SRM (System Reference Manual の略) コンソールは ファイルシステムやパーティションは認識しないことがわかっています。 SRM は、 2 番目のブートストラップローダが、 物理ディスクのあるオフセットから連続した領域を確保すると仮定しています。 2 番目のブートストラップローダの情報(大きさとオフセット)は ブロックの先頭から512 バイトに収められています。 SRM を使って Milo を読み込むには、SRM がアクセスできるデバイス (例えばフロッピーディスク)に mbootbootm と呼ばれるストラクチャを作らねばなりません。 mboot は最初のブロック(もしくはブートの記述領域)で、 Milo イメージを 512 byte 境界で切り上げたものです。

Milo をブートブロックデバイスから読み込むには、 mbootbootm を作り、 次のコマンドで起動デバイスに書き込みます:

        $ cat mboot bootm > /dev/fd0

もしくは、適切な milo.dd を Web サイトから取ってきて、 RAWRITE.EXEdd を使って起動デバイスに書き込んでください。

これで SRM コンソールを起動して そこから Milo を起動できるようになりました。 例えば、ブートブロックフロッピーから Milo を起動するには 次のコマンドを使います:

        >>>boot dva0
        (boot dva0.0.0.0.1 -flags 0)
        block 0 of dva0.0.0.0.1 is a valid boot block
        reading 621 blocks from dva0.0.0.0.1
        bootstrap code read in
        base = 112000, image_start = 0, image_bytes = 4da00
        initializing HWRPB at 2000
        initializing page table at 104000
        initializing machine state
        setting affinity to the primary CPU
        jumping to bootstrap code
        Milo Stub: V1.1
        Unzipping Milo into position
        Allocating memory for unzip
        ####...

次のシステムが SRM コンソールをサポートしていることが判っています:

5.6 システムに固有の情報

AxpPCI33 (Noname)

Noname ボードは Milo を Windows NT ARC ファームウェア ( Windows NT ARC ファームウェアから Milo を読み込むを参照)、 SRM コンソール ( SRM コンソールから Milo を読み込むを参照)、 緊急用ブートブロックフロッピー ( 緊急用ブートブロックフロッピーから Milo を読み込むを参照) から読み込めます。

Noname の起動を制御するには、 ボード上のジャンパ J28,J29 を設定します。

                    4
        J29     2 x x x 6
                1 x x x 5

        J28     2 x x x 6
                1 x x x 5
                    3

J28 の 1-3 ピンを繋げるとフラッシュメモリから起動します。 J29 の 1-3 ピンを繋げると ブートブロックフロッピーから起動します。 後者は Noname ボードで最初に Milo を起動するのに必要な設定の一つです。 [訳注:私は Windows NT ARC ファームウェアからいけましたが…]

ジャンパでフロッピーからの起動を選んだら、 Milo を書き込んだ SRM ブートブロックフロッピーを フロッピードライブに入れて再起動します。 しばらくするとフロッピーのライトが消えて画面が白く点滅し、 Milo のプロンプトが出ます。

技術的な説明をします。 Noname はフロッピー上のイメージを物理アドレス 0x104000 に読み込み、 フラッシュメモリ上のイメージを 0x100000 に読み込みます。 そのために、Milo はその PALcode が 0x200000 から始まるように作られています。 Milo は最初に読み込まれた時に、 自分自身を適切な場所へ移動します(リロケートを参照)。

AlphaPC64 (Cabriolet)

AlphaPC64 は NT ARC ファームウェア ( Windows NT ARC ファームウェアから Milo を読み込むを参照)と SRM コンソール ( SRM コンソールから Milo を読み込むを参照)と 評価用ボードデバッグモニタ ( デバッグモニタから Milo 読み込むを参照)を サポートしています。 これらのイメージはフラッシュメモリに格納されており、 Milo をフラッシュメモリから直接起動するための空きもあります。 Milo が動けば Milo からフラッシュメモリマネージメントユーティリティが 実行できますので、Milo をフラッシュメモリに書き込むことができます ( フラッシュメモリマネージメントユーティリティの実行を参照)。 このシステムは Milo の環境変数に対応しています。

Milo がフラッシュメモリに入っているならば、 TOY clock の NVRAM に保存されている番号のイメージを起動するか、 フラッシュメモリの最初のイメージを起動するかを、 ジャンパの組み合わせで決めます。

ジャンパ J2 の SP の bit 6,7 には次のような意味があります:

bit 7 を外すと、 常にフラッシュメモリの最初のイメージ、 すなわちデバッグモニタが起動します。 bit 7 を入れると、 TOY clock に書かれた番号に従って起動するイメージが選択されます。 デバッグモニタ、 Windows NT ARC ファームウェア、 Milo それぞれで起動する順番を指定できますが、 十分注意して使わねばなりません。 特に、Windows NT ARC ファームウェアを動かした直後には、 起動するイメージとして Milo を選ぶことができません(??)。 次に選べるのは デバッグモニタか Windows NT ARC ファームウェアだけです。

評価用ボードデバッグモニタで Milo をフラッシュメモリに書き込むためには、 フラッシュメモリ用のイメージが必要です。 普通にイメージを作ると milo.rom という名前になりますが(??)、 ボードに付いてくるデバッグモニタにある makerom ツールを使って イメージを作ることもできます:

    > makerom -v -i7 -l200000 Milo -o mini.flash

(makerom と打てば引数の意味が出てきます。 7 は SROM が使う[SROM が TOY Clock の NVRAM の内容を見て、 起動するフラッシュメモリイメージを起動します] フラッシュメモリのイメージ番号で、 -l200000 はイメージを 0x200000 に読み込むことを意味します。)

デバッグモニタの flload や netload といったコマンドを使って、 イメージをメモリの 0x200000 に読み込み、 次のようにしてフラッシュメモリに書き込みます:

     AlphaPC64> flash 200000 8

(200000 は書き込むイメージがメモリのどこにあるかを表し、 8 はイメージを書き込むセグメントの番号を表します。 フラッシュメモリには 1024*64 バイトのセグメントが 16 個あり、 デバッグモニタはセグメント 0 に、 Windows NT ARC ファームウェアはセグメント 4 にあります。)

SROM がイメージを起動できるように、その番号を TOY clock に書き込みます:

     AlphaPC64> bootopt 131

(131 は 3 番目のイメージという意味です。 129 は 1 番目、130 は 2 番目、というふうに番号付けされています。)

電源を切って、ジャンパ 7 を on にして電源を入れなおし、 Milo が起動するかどうか見てください。 起動しなかった場合はジャンパ 7 を off に戻してデバッグモニタを起動しましょう。

EB66+

EB66+ にも他の Alpha 評価用ボードと同じように 評価用ボードデバッグモニタが付いていますので、 同じようにして Milo を読み込むことができます ( デバッグモニタから Milo を読み込むを参照)。 また、これらのボードの亜流のボードは、ほとんど全部といっていいほど NT ARC ファームウェアを載せています ( Windows NT ARC ファームウェアから Milo を読み込むを参照)。 Milo が動けば Milo からフラッシュメモリマネージメントユーティリティが 実行できますので、Milo をフラッシュメモリに書き込むことができます ( フラッシュメモリマネージメントユーティリティの実行を参照)。 このシステムは Milo の環境変数に対応しています。

これらのシステムはフラッシュメモリ上に複数のブートイメージを持っており、 その起動の順番をジャンパで設定することができます。 Alpha チップを上にしたときに、 ボードの下の真中あたりに、 2 つのジャンパのある J18 と J16 というバンクがあります。 これを使って、 TOY clock の NVRAM に保存されている番号のイメージを起動するか、 フラッシュメモリの先頭にあるイメージを起動するかを制御します。

J18 のジャンパ 7-8 にジャンパを入れると、 NVRAM に書かれている番号のイメージを起動します。 J18 のジャンパ 7-8 を外すと、 評価用ボードデバッグモニタを起動します。

評価用ボードモニタを使ってイメージをフラッシュメモリに書き込む方法は、 AlphaPC64 と全く同じです( AlphaPC64を参照)。

EB64+/Aspen Alpine

このシステムは、 AlphaPC64 から Milo を入れることのできるフラッシュメモリを取り除いたものです。 EB64+ には 2 つの ROM があり、 ひとつには Windows NT ARC ファームウェアが ( Windows NT ARC ファームウェアから Milo を読み込むを参照)、 もうひとつには評価用ボードデバッグモニタ ( デバッグモニタから Milo を読み込むを参照) が入っています。

Aspen Alpine には Windows NT ARC ファームウェアの入った ROM しか 載っていません。

Universal Desktop Box (Multia)

非常にコンパクトにまとめられた 21066 ベースのシステムで、 TGA(21030) グラフィックデバイスが載っています。 ボックスにはハーフハイトの PCI グラフィックカードがちょうど入りますが、 XFree86 が TGA に完全に対応するのを待ったほうが良いでしょう。 このシステムには Windows NT ARC ファームウェアが載っていますので、 それを使いましょう ( Windows NT ARC ファームウェアから Milo を読み込むを参照)。

EB164

EB164 にも他の Alpha 評価用ボードと同じように 評価用ボードデバッグモニタが付いていますので、 同じようにして Milo を読み込むことができます ( デバッグモニタから Milo を読み込むを参照)。 また、これらのボードの亜流のボードは、ほとんど全部といっていいほど NT ARC ファームウェアを載せています ( Windows NT ARC ファームウェアから Milo を読み込むを参照)。 また、SRM コンソールも使うことができます ( SRM コンソールから Milo を読み込むを参照)。 Milo が動けば、 Milo からフラッシュメモリマネージメントユーティリティが 実行できますので、Milo をフラッシュメモリに書き込むことができます ( フラッシュメモリマネージメントユーティリティの実行を参照)。 このシステムは Milo の環境変数に対応しています。

これらのシステムはフラッシュメモリ上に複数のブートイメージを持っており、 その起動の順番をジャンパで設定することができます。 Alpha チップを上にしたときに、 ボードの下の真中あたりに、 2 つのジャンパのある J1 というバンクがあります。 これを使って、 TOY clock の NVRAM に保存されている番号のイメージを起動するか、 フラッシュメモリにあるイメージを起動するかを制御します。

J1 のジャンパ SP-11 を入れると、 NVRAM に書かれている番号のイメージを起動します。 J1 のジャンパ SP-11 を外すと、 評価用ボードデバッグモニタを起動します。

評価用ボードモニタを使ってイメージをフラッシュメモリに書き込む方法は、 AlphaPC64 と全く同じです( AlphaPC64を参照)。

XL266

XL266 は Avanti というシステムの一つです。 このメインボードには、 Alpha チップとキャッシュを載せたライザカードが垂直に挿さっています。 このライザカードは互換性のある Pentium ボードと差し替えることができます。

Avanti には SRM コンソールが載っているものもありますが、 XL266 には Windows NT ARC ファームウェアしか載っていません ( Windows NT ARC ファームウェアから Milo を読み込むを参照)。

以下が私の調べた互換リストです:

注意:私が Milo を開発・テストしたシステムは XL266 ですから、 XL266 についてのみにしか動作保証できません。 しかし、上述のシステムは技術的には互換性があります。 同じチップセットをサポートし、割り込みのハンドリング機構も同じです。

Platform2000

233MHz の 21066 ベースのシステムです。


次のページ 前のページ 目次へ