Sun386iのNVRAM初期設定方法

Sun MicrosystemsのSun386iは、機器構成のパラメータと時刻情報をNon-volatile Random Access Memory (NVRAM)に持っている。 Sunで使われているNVRAMは、SRAMと時計、電池を一つのDual In-line Package (DIP)に封入したもので、電池部分が消耗してしまうと、時計が止まるだけでなく構成情報も失われ、正常に動作しなくなってしまう。 この作りはSun3やSun4と同じである一方、電池交換後の復帰方法が他の68000系またはSPARC系のSunと異なっていて手間取ったので、このページではいくつかの情報源をまたいで集めた情報から導き出した、実際動いた手順を紹介する。

電池切れになると何が起きるのか

ふつうのSunでは、NVRAMが電池切れになるとEthernet MACアドレスが ff:ff:ff:ff:ff:ff になってしまうのをしばしば見るが、Sun386i ではMACアドレスはNVRAMには持っていないので、起動時の表示でここは影響を受けない。 一方、Diagnosticsディスクを入れてCPU Testを実施すると以下のメッセージが出る。

*** CPU Test FAILED ***

Most likely replaceable unit is CPU board
Check for loose cables and try reseating the option boards

そのままSunOSのインストールを強行しようとしても、手元ではインストーラのramdiskの展開に失敗してしまいシェルまで到達できなかった。

電池交換

NVRAMの電池交換自体は通常のSunと同じで、[obsolyte.com]に記述がある感じでMK48T02を削って電池をつなぐだけだ。

48T02の電池を切り離してCR1220をソケットで接続した様子。
48T02の電池を切り離してCR1220をソケットで接続した様子。

豆知識で、この電池の接続の+・−を逆につなぐと、チップ内の保護用のダイオードを電流が通り、電池はすぐになくなるがチップが壊れることはない。 なぜこんな記述があるかはお察しください。

初期化手順

先述の通り、Sun386iではhostid/MACアドレスはNVRAMにはいないので、通常のSunのNVRAMの手順とは大幅に異なる。 大まかなステップは以下の4つ。

  1. まず時計が動いている状態にする [sun3arc.org]
  2. PCBのリビジョンを書き込む [1]
  3. 必要に応じてコンソールのデバイス指定などの追加の調整をする [1]
  4. Diagnosticsディスクで起動し、チェックを通すと各パラメータが書き込まれる [sunhelp.org]

以下では実際の出力のなかでそれぞれのステップを説明する。

9:  Mouse/Keyboard failed. Breakを送る
Abort at ffff71f4
>q 7f8 時計の状態を確認
NVRAM 7f8: ff?
NVRAM 7f9: 80?
NVRAM 7fa: ff?
NVRAM 7fb: ff?
NVRAM 7fc: ff? 止まっている
NVRAM 7fd: ff?
NVRAM 7fe: ff?
NVRAM 7ff: ff?
>q 7f8 ここから時計を動かす手順
NVRAM 7f8: ff? 80
NVRAM 7f9: 80? 09
NVRAM 7fa: ff?
NVRAM 7fb: ff? 80
NVRAM 7fc: ff? q
>q 7f8
NVRAM 7f8: 80? 80
NVRAM 7f9: 00?
NVRAM 7fa: ff?
NVRAM 7fb: 80? 0
NVRAM 7fc: ff? q
>q 7f9
NVRAM 7f9: 00? 0
NVRAM 7fa: ff? 0
NVRAM 7fb: 00? 0
NVRAM 7fc: ff? 4
NVRAM 7fd: ff? 11
NVRAM 7fe: ff? 1
NVRAM 7ff: ff? 96
>q 7f8
NVRAM 7f8: 80? 0
NVRAM 7f9: 00? q ここまでで時計が動いたはず
>q 7f8
NVRAM 7f8: 00?
NVRAM 7f9: 08? 秒針が動いてるか確認
NVRAM 7fa: 00?
NVRAM 7fb: 00?
NVRAM 7fc: 04?
NVRAM 7fd: 11?
NVRAM 7fe: 01?
NVRAM 7ff: 96?
>q 7f8
NVRAM 7f8: 00?
NVRAM 7f9: 17? 秒針が動いてるので成功
NVRAM 7fa: 00?
NVRAM 7fb: 00?
NVRAM 7fc: 04?
NVRAM 7fd: 11?
NVRAM 7fe: 01?
NVRAM 7ff: 96?
>q 111 マザーボードのリビジョンを設定
NVRAM 111: 00? 3 501-1413-xx and 501-1414-xx CPU Boards
NVRAM 112: 00? q
>q 492 diagnostic bootに設定
NVRAM 492: ff? 6
NVRAM 493: ff? q
>q 494 Auto config message flagをSun-3 (UNIX expert type messages)に設定
NVRAM 494: ff? 2
NVRAM 495: ff? q
>q 1f Primary TerminalをSerial Port Aに設定
NVRAM 01f: 00? 10
NVRAM 020: 00? q
>k 2 再起動
LED Register Test...
Boot PROM Checksum Test...
Serial Port A Internal Loopback Test...
NVRAM Diagnostic Area Test...
Verify Interrupt Vector Registers...
MUSCI Diagnostic Register Test...
Refresh Timer (1) downcount...
Start Refresh Timer, Wait State, Refresh regs...
Timer (0) downcount...
Speaker Timer (2) downcount...
Clock Tick Timer (3) downcount...
RAM Bus Access Test...
RAM Bus Data Path Test...
RAM Address Test...
RAM Data Test...
Sizing System Bus...
	Slot 4 (82) =>  Graphics board.
	Slot 3 (64) =>  SIMM board.
	Slot 2 (ff) =>  empty or no ID returned.
	Slot 1 (ff) =>  empty or no ID returned.
	Slot AT(ff) =>  empty or no ID returned.
	Slot AT(ff) =>  empty or no ID returned.

Video RAM Address Test...
Video RAM Data Test...
Keyboard/Mouse Internal Loopback Test...
Keyboard Reset Test...
9:  Keyboard Reset Test failed. No Keyboard Found. Breakを送る

Abort at ffff71f4
>b fd ()
Boot: fd(0,0,0) SunOSのDiagnosticsフロッピーを起動
root on fd0a fstype 4.2
Boot: vmunix
Size: 30630+167080+413688 bytes

HARDWARE DIAGNOSTICS         Rev. 2.5                Built: 09/13/88 13:36:32
メニューが出るので適当に項目を選ぶ
Testing CPU, Takes 1.5 Minutes...
Testing Floating Point, Takes 1 Second...
Testing Ethernet, Takes 2 Seconds...
Testing Memory, Takes 45 Seconds...


Testing Complete...

--- Remove diskette and press <Return> to restart your system --- 言われるまま再起動する
LED Register Test...
Boot PROM Checksum Test...
Serial Port A Internal Loopback Test...
NVRAM Diagnostic Area Test...
Verify Interrupt Vector Registers...
MUSCI Diagnostic Register Test...
Refresh Timer (1) downcount...
Start Refresh Timer, Wait State, Refresh regs...
Timer (0) downcount...
Speaker Timer (2) downcount...
Clock Tick Timer (3) downcount...
RAM Bus Access Test...
RAM Bus Data Path Test...
RAM Address Test...
RAM Data Test...
Sizing System Bus...
	Slot 4 (82) =>  Graphics board.
	Slot 3 (64) =>  SIMM board.
	Slot 2 (ff) =>  empty or no ID returned.
	Slot 1 (ff) =>  empty or no ID returned.
	Slot AT(ff) =>  empty or no ID returned.
	Slot AT(ff) =>  empty or no ID returned.

Video RAM Address Test...
Video RAM Data Test...
Keyboard/Mouse Internal Loopback Test...
Keyboard Reset Test...
9:  Keyboard Reset Test failed. No Keyboard Found.

Abort at ffff71f4
>b fd () SunOSの1番目のフロッピーを入れる
Boot: fd(0,0,0)
root on fd0a fstype 4.2
Boot: vmunix
Size: 598016+98304+54564 bytes
SunOS Release 4.0.1 (INSTALL) #9: Tue Nov 15 17:33:04 EST 1988
Copyright (c) 1988 by Sun Microsystems, Inc.
mem = 12288K (0xc00000)
avail mem = 11476992
64. level 1 page tables, 64. level 2 page tables
Ethernet address = 8:0:20:2:2d:af
wds0 at obmem 0xfb000000 irq 16 pri 2
sd0 at wds0 slave 0
sd1 at wds0 slave 8
sd2 at wds0 slave 16
st4 at wds0 slave 32
fdc0 at atmem 0x1000 irq 14 pri 2
fd0 at fdc0 slave 0
fd2 at fdc0 slave 1
ie0 at obmem 0xd0000000 irq 21 pri 3
bwtwo0 at obmem 0xa0200000
bwtwo0: resolution 1152 x 900
zs0 at obmem 0xfc000000 irq 9 pri 6
zs1 at obmem 0xa0000020 irq 9 pri 6
pp0 at atio 0x378 irq 15 pri 2
Insert Application SunOS diskette 2, confirm (y/n): y
Initializing ram disk from diskette: done.
WARNING: clock gained 2609 days -- CHECK AND RESET THE DATE!
root on rd0a fstype 4.2
swap on ns0b fstype spec size 9652K
dump on ns0b fstype spec インストールは続く

ここから先のコツは、端末の設定を7bitにしておくことで、なぜか各バイトのMSBが立っている出力を送ってきても文字が読めるようにしておくことだ。

参考文献

  1. Mike Persichetty and Gerri Roe. Field engineer handbook. Technical Volume I. Sun Microsystems, Inc. Customer Service Division. 800-4006-04. 1990. [bitsavers.org]