NetBSD/sgimips: よくある質問
全般的な質問
- Indy のシリアルコンソールに関して知っておく価値のある事柄
- NetBSD/sgimips のブートの方法は?
- sgimips カーネルをクロスコンパイルする方法は?
- sgimips 用のブート可能なインストール CD をクロス構築する方法は?
- IP22 その他で $eaddr をリセットする方法は ?
- PROM tftp クライアントがデフォルトの設定の NetBSD の tftpd との組み合わせでうまく動きません
- このほかにありそうな PROM の問題
- ブートローダーを (sgivol を使って) 更新する
他の情報源
全般的な質問
Indy のシリアルコンソールに関して知っておく価値のある事柄 (top)
この情報は他の機種にも適用できるかもしれないことに留意しておいてください。 マシンをシリアルコンソールでブートできるようにするため、 マシンを立ち上げるときはキーボードを外しておいてください。 シリアルコンソールは、デフォルトでは serial #1 で、 9600、 8N1 で動作します。
PROM モニターで "setenv console d" とすることでコンソールを
serial #1 に、 "setenv console d2" とすることで serial #2
にすることもできます (デフォルトは "g" です) 。また、
コンソールの速度は "setenv dbaud <bps>" で設定できます。
これらの PROM 変数を設定した後は、 "init" するか、マシンを
リブートする必要があります。
Irix をコンソールからブートした場合、シリアルコンソール上でのログインが できなくなります。 /etc/inittab を編集して下記の行を追加することで、 ログインできるようになります。
st:23:respawn:/sbin/getty systty co_9600 # serial console - HF
このあと、忘れずに "init q" して inittab を再読み込みしてください。
シリアルポートのピン配置は SPARC システムのシリアルポートと同じですので、 ハードウェアハンドシェーキング線を使わない用途に限れば、 Macintosh のシリアルケーブルはシリアルコンソール用のケーブルとしてしっかり使えます。 詳細については、 NetBSD シリアルポート入門を参照してください。
NetBSD/sgimips のブートの方法は? (top)
NetBSD 3.0 以降の sgimipscd.iso イメージはブート可能です。 NetBSD をマシンにインストールするための最も簡単な方法は、このイメージを CD に焼いて、その CD でブートすることです。 CD からブートする方法の説明は ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-4.0/sgimips/INSTALL.html#Install%20via%20a%20bootable%20CD-ROM にあります。 もちろん、対象のマシンに CD ドライブがあることが前提です。 CD ドライブがない場合は、 ネットブートすることになるでしょう。
-
CD ドライブがない場合は、 SGI の ARCS firmware を使ってカーネルを ネットブートすることが必要です。ネットブートの設定についての詳細は Diskless NetBSD HOW-TO を参照してください。おおまかな手順は以下のとおりです:
問題が起きた場合は、 tcpdump(8) か pkgsrc/net/wireshark を使って ネットワークトラフィックのデバッグをしてください。 PROM コマンドの より詳しい説明は、 Irix prom マニュアルページを見てください。- etc.tgz と base.tgz を、たとえば /home/indy/root 以下に展開します。
展開した root/dev ディレクトリーで "
sh MAKEDEV all" を実行します。 - マシンの PROM に入り、 MAC アドレスを調べます。調べるには、
"
printenv eaddr" とします。 -
DHCP を設定します。以下のような内容を
/etc/dhcpd.confに書きます:ddns-update-style none; subnet 10.0.0.0 netmask 255.255.255.0 { # Adjust host indy { hardware ethernet 08:00:69:09:93:78; # Adjust to your MAC address fixed-address 10.0.0.15; # Adjust #filename "/netbsd"; # XXX Do NOT set! option root-path "/home/indy/root"; server-name="10.0.0.3"; } }"
filename" は設定できないことに注意してください。 設定してしまうと、それ以外の値を、後述する PROM のbootコマンドで、カーネル名として指定できなくなります。 - 再度マシンの PROM に入り、 IP アドレスが正しく設定されているか
確認してください:
>> printenv netaddr netaddr=1.2.3.4 >> setenv netaddr 10.0.0.15 >> printenv netaddr netaddr=10.0.0.15
-
/etc/inetd.confで tftp が使えるようになっていることを確認し、 それから適切なカーネル (たとえばnetbsd.IP22とする) を/tftpbootに置きます。 - PROM に、ネットブートして "netbsd.IP22" カーネルをロードするよう
指示する:
>> boot -f bootp():/netbsd.IP22 Setting $netaddr to 10.0.0.15 (from server 10.0.0.3) Obtaining /netbsd-IP22 from server 10.0.0.3 ... - ルートデバイスを尋ねられたら、選択肢を調べるために "
?" と入力します。たとえば "sq0" は Indy のイーサネットです。 - ダンプデバイスは、単に RETURN を押します
- ブート用のディスクを用意していなければ、
ルートファイルシステムはきっと nfs 経由のものでしょうから、
ルートデバイスとしては "
nfs" と答えます。
- etc.tgz と base.tgz を、たとえば /home/indy/root 以下に展開します。
展開した root/dev ディレクトリーで "
- それから、 NetBSD の FFS とディスクラベルを持つセカンドハードディスク を用意します。さらに、セカンドディスク上の root/swap を使うよう カーネルに指示します。ただし、現在、 firmware は FFS ファイルシステムから カーネルをブートすることができません。今のところは、ネット経由で ブートする必要があります。
ブートを始めるには以下のファイルが必要です:
sgimips カーネルをクロスコンパイルする方法は? (top)
NetBSD 1.6 およびそれ以降のシステムでは、ベースシステムのクロス構築を完全にサポートしています。 これは、構築するユーザーが root でなくても、また、 NetBSD 以外のホスト上ででも可能です。 詳細は、 NetBSD ドキュメンテーションのページ 以下にある NetBSD のクロス構築 をご覧ください。
sgimips 用のブート可能なインストール CD をクロス構築する方法は? (top)
クロスコンパイルの説明に従って、
sgimips のリリースをクロス構築します (たとえば build.sh release) 。
構築後、 src/etc ディレクトリーへ移動し、
ツールディレクトリーに作成されたラッパースクリプト nbmake-sgimips を使ってブート可能な cd を作ります。
$TOOLDIR/bin/nbmake-sgimips iso-image
できあがったイメージは、普通の cd 書き込みツールを使って CD-RW に焼くことができます。
IP22 その他で $eaddr をリセットする方法は ? (top)
ここに示すのは、少なくとも Indy と、おそらく HPC3 を持つ他のマシンでも 使える、イーサネットアドレスの設定方法です。
一切の責任を持たないので…以下省略。
PROM プロンプトで:
dump -w -x 0xbfbe04e8
この出力の妥当性チェックとして、 'ec0: bad ethernet address' エラーメッセージで示されるアドレスと一致するかどうか調べます。 もし一致していなければ、なにも上書きすべきではないでしょう。
fill -w -v 0xGG 0xbfbe04e8 fill -w -v 0xHH 0xbfbe04ec fill -w -v 0xII 0xbfbe04f0 fill -w -v 0xJJ 0xbfbe04f4 fill -w -v 0xKK 0xbfbe04f8 fill -w -v 0xLL 0xbfbe04fc
ここで、 GG:HH:II:JJ:KK:LL が、予定しているイーサネットアドレスになるように します。マシンに附属してきたアドレスを使うのがよいでしょう。 わからなければマシンの背面を調べてください。
電源を落とし、一分間待ってから電源を入れます。これで、 $eaddr 以外の すべての変数は、 resetenv コマンドを使ったときのようにリセットされています。
PROM tftp クライアントがデフォルトの設定の NetBSD の tftpd との組み合わせでうまく動きません (top)
SGI マシンの PROM tftp クライアントは、デフォルトの設定の NetBSD の tftpd との組み合わせで、うまく動作しないことがあります。そのマシンの PROM が 符号ビットの立ったポート番号に対応していないせいかもしれません。 これに対する次善策は、匿名コネクション用のポート番号の上限を 32767 にすることです。次のように調整すると解決するはずです:
# sysctl -w net.inet.ip.anonportmin=20000 # sysctl -w net.inet.ip.anonportmax=32767
このほかにありそうな PROM の問題 (top)
PROM バージョンやインストールされた OS (SASH) バージョンによる、 いくつかの問題があります:
- 古いバージョンの SASH には、メモリーマップを誤って報告するという 問題があります。ブート (copyright message 以前でも) 時に、カーネルが UVM 絡みのメッセージとともに panic する場合は、 sash を介さずに PROM から直接カーネルをブートしてみてください (IRIX 6.x にアップグレード前の (5.3 が動作している) I2 にもこの問題があります) 。
- もうひとつの古い PROM の問題 -- 古い PROM は ELF を扱えないため、 ECOFF カーネルが必要かもしれません。これの回避策は sash (IRIX 5.x においてでも ELF を理解するようです) を使うことですが、 問題 #1 を見てください。
ブートローダーを (sgivol を使って) 更新する (top)
sysinst を使って NetBSD をインストールすると、ディスクの先頭部分が、 PROM がブートローダーを読み込むためなどのパーティション用として確保されます。 このパーティションは、ボリュームヘッダーと呼ばれます。 このパーティションには、最低限 3135 ブロックが必要です (/usr/include/sys/bootblock.h の SGI_BOOT_BLOCK_SIZE_VOLHDR を参照)。disklabel の例を以下に示します。 パーティション i がボリュームヘッダーとなっており、 これは SGI の流儀 (パーティション 8 を使う) と同様です。
sgimips# disklabel sd0 # /dev/rsd0c: type: SCSI disk: mydisk label: fictitious flags: bytes/sector: 512 sectors/track: 135 tracks/cylinder: 8 sectors/cylinder: 1080 cylinders: 4078 total sectors: 4404240 rpm: 7200 interleave: 0 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 3377306 3183 4.2BSD 1024 8192 45640 # (Cyl. 2*- 3130*) b: 1024000 3380489 swap # (Cyl. 3130*- 4078+) c: 4404489 0 unknown # (Cyl. 0 - 4078+) i: 3183 0 unknown # (Cyl. 0 - 2*)
NetBSD のインストール後、sgivol ユーティリティー (/usr/mdec にあります) を使って、このパーティションを操作することができます。まだセットアップされていない場合は、 以下のようにして、初期化する必要があります (注意: sysinst は適切にセットアップをおこないます)。
sgivol -i sd0
ブートローダーを更新する (あるいは、別機種のマシンにディスクを移した場合に変更する) ためには、まず、既存のファイルを消去します。
sgivol -d boot sd0
次に、新しいブートローダーを、ボリュームヘッダーに 'boot' というファイル名でコピーします。
sgivol -w boot /usr/mdec/ip2xboot sd0
複数のブートローダーを (別々の名前にして) 置いておくこともできます。 別バージョンの NetBSD をブートする場合 (たとえば、新しい INSTALL カーネルを使って NetBSD 3 から -current にアップグレードする場合) には、 非常に便利です。というのも、bootinfo の変更により、 NetBSD 4.0 以前のカーネルは新しいブートローダーとの組合せでは動作しないからです。
ボリュームヘッダーの内容は、以下のコマンドを使って見ることができます。
sgivol sd0
出力例は以下のとおりです。
disklabel shows 4404240 sectors checksum: 00000000 root part: 0 swap part: 1 bootfile: /netbsd Volume header files: sgilabel offset 2 blocks, length 512 bytes (1 blocks) ide offset 3 blocks, length 322048 bytes (629 blocks) sash offset 632 blocks, length 322048 bytes (629 blocks) boot offset 1261 blocks, length 53296 bytes (105 blocks) SGI partitions: 0:a blocks 3377306 first 3183 type 4 (BSD4.2) 1:b blocks 1024000 first 3380489 type 3 (Raw) 8:i blocks 3199 first 0 type 0 (Volume Header) 10:k blocks 4404489 first 0 type 6 (Volume)
さらなる情報については、boot(8) および sgivol(8) マニュアルページをご覧ください。
他の情報源
NetBSD ドキュメンテーション (top)
サイト外のドキュメンテーション (top)
NetBSD/sgimips Port Page に戻る
