Milo をきちんとインストール・読み込み・実行できれば、 MILO (MIni LOader の略) というプロンプトが画面に現れます。 Milo には Linux カーネルイメージを起動するための 簡単なインターフェースが備わっています。 コマンドの概略を見たければ "help" とタイプするのが良いでしょう。
たぶん Milo で最も便利なコマンドでしょう:
MILO> help
MILO command summary:
ls [-t fs] [dev:[dir]]
- List files in directory on device
boot [-t fs] [dev:file] [boot string]
- Boot Linux from the specified device and file
run [-t fs] dev:file
- Run the standalone program dev:file
show - Display all known devices and file systems
set VAR VALUE - Set the variable VAR to the specified VALUE
unset VAR - Delete the specified variable
reset - Delete all variables
print - Display current variable settings
help [var] - Print this help text
Devices are specified as: fd0, hda1, hda2, sda1...
Use the '-t filesystem-name' option if you want to use
anything but the default filesystem ('ext2').
Use the 'show' command to show known devices and filesystems.
Type 'help var' for a list of variables.
注意:bootopt
コマンドは
AlphaPC64 (互換)システムにのみ存在します。
デバイス:
デバイスを使用可能にするコマンドを実行するまでは、
初期化されたデバイスがないというメッセージが出ます。
まず show
、ls
、boot
もしくは run
というコマンドで
Milo に入っているデバイスを初期化します。
デバイス名は Linux と全く同じになっています。
最初の IDE は 'hda' ですし、その最初のパーティションは 'hda1' です。
show
コマンドを使えば、どのデバイスが利用可能か表示されます。
ファイルシステム:
Milo は MSDOS、EXT2、ISO9660 ファイルシステムに対応しています。
デバイスが利用可能な状態になっていれば、
そのファイルシステム上にあるイメージを
list
したり boot
したり run
したりできます。
Milo のデフォルトのファイルシステムは EXT2
で、
それ以外のファイルシステムを使うときには Milo に指定せねばなりません。
ファイル名を使うコマンドでは -t [filesystem]
というオプションを使ってファイルシステムを指定できます。
SCSI CD ROM の中身を見たいときには次のようにタイプします
[訳注:scd0 ではなく sr0 の場合もあります
(linux/Documentation/devices.txt
を参照)]:
MILO> ls -t iso9660 scd0:
変数: Milo にはブートプロセスを補助する変数があります。 Milo を Windows NT ARC ファームウェアから読み込む場合は、 ファームウェアによって起動オプションの変数が設定されます。 AlphaPC64 のような一部のシステムでは、 変数はブートごとに変化しません [訳注:Milo がフラッシュメモリにある場合は変数が初期化されない(??)]。 変数には次のようなものがあります:
MILO> help var
Variables that MILO cares about:
MEMORY_SIZE - System memory size in megabytes
BOOT_DEV - Specifies the default boot device
BOOT_FILE - Specifies the default boot file
BOOT_STRING - Specifies the boot string to pass to the kernel
SCSIn_HOSTID - Specifies the host id of the n-th SCSI controller.
AUTOBOOT - If set, MILO attempts to boot on powerup
and enters command loop only on failure.
AUTOBOOT_TIMEOUT - Seconds to wait before auto-booting on powerup.
boot
コマンドはデバイスから Linux カーネルを起動します。
Linux カーネルは、EXT2 フォーマットの SCSI-HDD/IDE-HDD/フロッピーディスクか、
ISO9660 フォーマットの CD の上になければなりません。
イメージは gzip で圧縮されていてもよく、 .gz という拡張子であれば圧縮ファイルだとみなされます。
起動しようとしている Linux カーネルのバージョンと Milo のバージョンが同じかどうか確認しておきましょう。 次のコマンドで Linux を起動します:
MILO> boot [-t file-system] device-name:file-name [[boot-option] [boot-option] ...]
device-name
は使用するデバイスで、
file-name
は Linux カーネルのファイル名です。
それ以降の引数は Linux カーネルに直接渡されます。
もし RedHat をインストールしているならば、 次のようにしてルートデバイスを指定しなければならないでしょう:
MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1
Milo には vmlinux を作るときに設定したブロックデバイスが
自動的に入っています。
私はフロッピードライバと IDE ドライバ、NCR SCSI ドライバを試し、
うまく動いています。
SCSI コントローラのホスト ID がきちんと設定されていることも重要です。
MILO のデフォルトのホスト ID は 7 です。
普通はうまくいくはずが、明示的にホスト ID を指定することもできます。
n 番目の SCSI コントローラ指定するには、
環境変数 SCSI
n_HOSTID
を希望の値にセットします。
例えば最初の SCSI コントローラのホスト ID を 7 に設定したい場合は、
MILO のプロンプトで下のコマンドを実行します:
setenv SCSI0_HOSTID 7
動作中の Linux システムを再起動するには、
shutdown -r now
というコマンドを実行します。
すると、Linux カーネルは HALT CallPAL エントリポイントを経由して
Milo に制御を戻します。
Milo がメモリ内に自分自身の圧縮されたコピーを残しているのはこのためです。
そして HWRPB (HardWare Restart Parameter Block) に保持されている情報をもとに、
システムが再起動中であることを検知します。
それから前回 Linux カーネルを起動したのと同じコマンドで再起動を始めます。
このプロセスを中止したり別のカーネルを起動したりするために、
30 秒間のタイムアウトがあります。
AlphaPC64、EB164、EB66+ のようなフラッシュメモリが付いているシステムには
いくつかの起動選択肢が用意されており、
bootopt
コマンドによって変更できるようになっています。
このコマンドは一つの引数を取ります。
システムの電源をリセットしたり入れ直したりした時に起動するイメージのタイプを
10 進数で指定します:
0:評価用ボードデバッグモニタを起動する
1:Windows NT ARC ファームウェアを起動する
フラッシュメモリから Milo ファームウェアを起動するために、 N 番目のイメージを表すブートオプションを指定せねばなりません。 これは N に 128 を足した値になります。 つまり、もし Milo が 3 番目のイメージであれば、 次のコマンドを使います:
MILO> bootopt 131
注意:
このコマンドを使用する際には十分気を付けて下さい。
評価用ボードデバッグモニタを起動するために bootopt 0
とするのはやめたほうが良いでしょう。
システムのジャンパを使えば同じことができます。