本文へ飛ぶ。

NetBSD/sgimips: よくある質問

全般的な質問

他の情報源


全般的な質問

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 を参照してください。おおまかな手順は以下のとおりです:

    1. etc.tgz と base.tgz を、たとえば /home/indy/root 以下に展開します。 展開した root/dev ディレクトリーで "sh MAKEDEV all" を実行します。
    2. マシンの PROM に入り、 MAC アドレスを調べます。調べるには、 "printenv eaddr" とします。
    3. 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 コマンドで、カーネル名として指定できなくなります。

    4. 再度マシンの PROM に入り、 IP アドレスが正しく設定されているか 確認してください:
      >> printenv netaddr
      netaddr=1.2.3.4
      >> setenv netaddr 10.0.0.15
      >> printenv netaddr
      netaddr=10.0.0.15
    5. /etc/inetd.conf で tftp が使えるようになっていることを確認し、 それから適切なカーネル (たとえば netbsd.IP22 とする) を /tftpboot に置きます。
    6. 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
      ...
    7. ルートデバイスを尋ねられたら、選択肢を調べるために "?" と入力します。たとえば "sq0" は Indy のイーサネットです。
    8. ダンプデバイスは、単に RETURN を押します
    9. ブート用のディスクを用意していなければ、 ルートファイルシステムはきっと nfs 経由のものでしょうから、 ルートデバイスとしては "nfs" と答えます。
    問題が起きた場合は、 tcpdump(8) か pkgsrc/net/wireshark を使って ネットワークトラフィックのデバッグをしてください。 PROM コマンドの より詳しい説明は、 Irix prom マニュアルページを見てください。
  • それから、 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) バージョンによる、 いくつかの問題があります:

  1. 古いバージョンの SASH には、メモリーマップを誤って報告するという 問題があります。ブート (copyright message 以前でも) 時に、カーネルが UVM 絡みのメッセージとともに panic する場合は、 sash を介さずに PROM から直接カーネルをブートしてみてください (IRIX 6.x にアップグレード前の (5.3 が動作している) I2 にもこの問題があります) 。
  2. もうひとつの古い 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 に戻る