NetBSD 1.2をAlphaにインストールする

または
赤貧的DEC AlphaマシンでNetBSD/Alphaを動かす

竹岡 尚三 (AXE, Inc.)

Copyright (c) 1996-1999 AXE, Inc. All rights reserved.

目次

  1. 赤貧的RISCマシン補完計画とは
  2. 主要部品
  3. 起動実験
  4. SRMモニタへの変更
  5. SRMの使い方
  6. NetBSD/Alphaの起ち上げ
  7. NetBSD/Alphaの各種設定
  8. HDDのディスクラベル再設定
  9. Zipドライブをブート可能HDDにする
  10. X Window
  11. Multiaというマシン
  12. おわりに
  13. 参考URL
  14. UNIXマガジン掲載時のマクラを読む

インデックス・ページに戻る

*本稿はUNIXマガジン1997/Jan, 1997/Marに掲載された竹岡の文章をもとにし ています。
赤貧的RISCマシン補完計画とは
目次へ前の章へ次の章へ

DEC Alphaは世界最高のクロック周波数を誇るRISCマシンです。
クロックが速けりゃいいもんじゃないという気もしますが、僕は PDP11を知っ たときからのDECファンでとってもAlphaが欲しかったのです。

また、Alphaの世界では、int(もっとも自然な整数)のビット幅は64bitです。
NetBSD/AlphaもDEC UNIXも Linux/Alpha も64bitの世界です。 OSのシステムコー ルもライブラリも各コマンドも64bitが基本です。
なかなかわくわくするでしょう。:-)

でも、ここで普通に出来あいのマシンを買っても楽しくありません。
そこでなるべく自分の手が入れられて、安くマシンを動かせる方法を探しまし た。
IBM PC互換機の世界では、マザーボードや匡体を買ってきて組み立てることは あたり前ですが、DEC Alphaでそれをしようというのです。
これを「赤貧的RISCマシン補完計画」としましょう。

この計画が動き出したのは、もう数年前になります。この計画にちょうどいい AXPpci33というボードが発売になったのです。AXPpci33にはWindowsNT版とDEC UNIX版がありました。 僕はすかさずそのUNIX版ボードを入手し、DEC UNIXを入れ、今も使っています。 AXPpci33上でDEC UNIXを動かした人間としては、僕は日本ではかなり早い方だっ たのではないかと思っています。しかし、DEC UNIXのライセンス料は只ではなく、 WindowsNT版ボードが羨ましく思えたものです。

そうしていると、Alphaの上で、Linuxが動くという話が聞こえてきました。僕 はフリーなUNIXが大好きなので、Linux/Alpha Blade0.2を入れました。これはこ れで使えなくはなかったのですが、やっぱりLinuxはLinuxです。だいたいネット ワーク管理コマンドが酷すぎます。パラメータが違うので、使いづらいことおび ただしい。

やはり本物のUNIX、それも本物のBSDを使いたい。なんの努力もせずにそのよ うに願っていたところ、ついにNetBSD/Alphaが聞こえてきました。NetBSD/Alpha 1.1-currnetは夏前より動きだしていました。 そして、この秋、NetBSD1.2がリリースされ、NetBSD/Alphaも正式にリリース されました。 ここで、UNIXのライセンス料金不要の本当の赤貧RISCマシン補完計画は完遂さ れたのです。 ということで、本稿は、手に入り易く安価なAXPpci33という、DEC Alpha 21064 233MHzの搭載されたマザーボードで、NetBSD 1.2/Alphaを動かすお話です。 自宅に DEC Alphaを置き、その上でNetBSDを動かすのも、一つのセカンド・イ ンパクトといえるでしょう(か?)。


主要部品
目次へ前の章へ次の章へ


起動実験
目次へ前の章へ次の章へ

組み立ては、5V電源のコネクタ(3.3V用電源コネクタもある)を間違えなければ、 あとは各コネクタの1番ピンに注意するだけです。マザーボードに付属のマニュ アルをよくみれば、なにも難しいことはありません。

ジャンパJ8は、リセット・スイッチを本当のリセットとするか、割り込みとす るかの切り替えですが、我々には、リセットの方が便利なので、Reset (Pin1-2 ショート)にしておきます。

部品を組み上げたら、とりあえず電源を入れて起動実験を行います。一番最初 は、HDDはつないでおかない方がいいかも知れません。

異常がなければ、モニタ・ソフトウェアが起ち上がります。

UNIX版マザーボードならば、画面が暗いままの状態で数秒経過したあと、SRM モニタが起ち上がります。
SRMが使える場合は、NetBSDのインストールに進みます。

WindowsNT版マザーボードならば、ARCモニタが起動します。

ARCでハードウェアの確認をするには、

  1. "Boot menu:" において "Supplementary menu..."を選び
  2. "Supplementary menu:" において "Display hardware configuration"を選ぶ
とハードウェア一覧が表示されます。
接続してあるハードウェアがすべて表示されていれば問題ないでしょう。

AXPpci33のSCSIバスは高速動作を行うので、SCSIデバイスが見つからないこと があります。
そういう時は、ターミネーションを確認して、必ずSCSIバスの両端にだけター ミネータが存在するようにします。また、SCSIデバイスはパリティをイネーブル しておきます。

ハードウェアに問題ない場合、WindowsNTのインストールならそのまま始めら れます。(ちなみにWindowsNT V4 日本語ファイナルβは、このマシンで快調に動 作しています)


SRMモニタへの変更
目次へ前の章へ次の章へ

ARCモニタの場合は、NetBSDのために、モニタ・ソフトウェアをSRM にします。

ARCからSRMへモニタを取り換えるためには、ファームウェア・アップデイト・ ソフトウェアを入手しなければなりません。

ファームウェア・アップデイト・ソフトウェアはDEC社のftpサイト ftp://ftp.digital.com/pub/DEC/Alpha/firmware/ から入手可能です。

ftp://ftp.digital.com/pub/DEC/Alpha/firmware/v3.7/decaxppci33/ には、以下のようなファイルがあります。

-r--r--r--   1 0        0         904704 Aug 19 08:11 decaxppci33_v1_4.exe
-r--r--r--   1 0        0         905216 Aug 19 08:11 decaxppci33_v1_4.sys
-r--r--r--   1 0        0         903168 Aug 19 08:11 decaxppci33_v1_5.exe
-r--r--r--   1 0        0         903680 Aug 19 08:11 decaxppci33_v1_5.sys
-r--r--r--   1 0        0           1854 Aug 19 04:04 fwreadme.txt
 
ここではv1.5を使用しました。

以下、ARCでのファームウェア・アップデイト・ソフトウェアの使用方法です。

  1. decaxppci33_v1_5.exeをgetします。

  2. 1.44MBytesのDOSファイルシステムのフロッピにdecaxppci33_v1_5.exeを FWUPDATE.EXEという名のファイルとして書き込みます。
    FreeBSD等でmtoolsがインストールされている環境なら、
    	% mwrite decaxppci33_v1_5.exe a:fwupdate.exe
     
    とします。
    当然ながら、この作業は、DOS FATファイルシステムがアクセスできるなら、 どんなシステムで行っても構いません。

  3. フロッピをAlphaマシンのフロッピ・ドライブに入れ、ARCの
    1. "Boot menu:" において "Supplementary menu..."を選び
    2. "Supplementary menu:" において "Install new firmware..."を選ぶ。
    すると、自動的にCD-ROMとフロッピをチェックし、フロッピからアップデイ ト・ソフトウェアをロードした後、それに制御を移します。

  4. プロンプトが表示されたら、アップデイトコマンドでモニタをSRMにします。
    	Apu-> u srm
     
    イメージをRAMにロード、ベリファイ後、最終確認プロンプトが出るので、
    	APU-I ****** READY TO PROGRAM DEVICE ? (Y/N ) ****** y
     
    'y'を入力します。このあと、電源異常などでシステムが落ちないように緊 張しながら待ちます。:-)
    	Rom Update Successful
     
    と表示されたら終了です。

  5. 自動的にベリファイされていますが、気休めにベリファイするのもいいでしょう。
    	Apu-> v srm
     


  6. ハード・リセットすると、次からはSRMが起動します。
これで、NetBSDのインストール準備完了です。

また、万が一、ARCに戻したくなった時のために、 ftp://ftp.digital.com/pub/DEC/axppci/fw_v1_4.image も入手しておくべきです。
これは、SRMでブート可能なfirmware V1.4のフロッピ・イメージです。このイ メージがなければ、SRMをARCに戻すことはできません。

このイメージをfwupdate.exeから作ることは、DEC UNIXが稼働していれば可能 です。が、そういう環境はめったにないでしょうから、イメージで入手しておき ましょう。

このイメージを、FreeBSDなどで、

	% dd if=fw_v1_4.image of=/dev/rfd0a bs=40960
 
などとしてフロッピに書き込みます。
このフロッピはSRMでブート可能です。

SRMからフロッピをブートする場合には、

	>>>b dva0
 
とします。

ここで作成したフロッピはFlashROM内のモニタが壊れた時の修復にも使用でき るので重宝します。(モニタが壊れた時には、SROM SelectジャンパJ29の1-3 を ショートし、このフロッピをブートに使用して、モニタを修復できる)


SRMの使い方
目次へ前の章へ次の章へ

SRMが起動したら、まずハードウェアの確認をしましょう。

	>>>sho dev
 
SCSIデバイスは、dka?00と表示されます。'?'はSCSI-Idと同じ数字です。 フロッピはdva0、EtherI/Fはewa0です。 メモリ容量の確認は
	>>>sho mem
 
です。 もっと詳しい情報が欲しい時には、
	>>>sho config
 
とします。
単に、
	>>>sho
 
とすると、現在の環境や変数が表示されます。
これらの値はsetコマンドで変更可能です。
SRMモニタは、コンソールをシリアル・ラインにも切り替えられます。
	>>>set console serial
	>>>init
 
これで、シリアルラインCOM1に接続した端末をコンソールにできます (通信条 件: 9600bps, 8bit, NoParity)。
コンソールをVGAディスプレイにもどすには、
	>>>set console graphics
 
とします。
SRMではキーボードを接続していないと、シリアル・ポートがコンソールにな ります。


NetBSD/Alphaの起ち上げ
目次へ前の章へ次の章へ

NetBSD1.2はftp.netbsd.orgなどから手に入ります。
日本国内ならば、国内のミラーサイトから入手すべきでしょう。

最初のインストールには、

	NetBSD-1.2/alpha/binaries/rz25-image.gz
 
だけあれば大丈夫です。

このrz25-image.gzは400MBytesのHDD全体のイメージをddで読みだしてgzipし たものです。
インストールするには、逆にgzipを解きながら、ddしてHDDに書き込むだけで す。簡単ですね。しかしなんというダイナミックさ! :-)

この作業を行うには、gunzipが動作し、HDDにddできる機械が必要です。
僕は、DEC UNIXの動作しているAXPpci33で作業を行いましたが、FreeBSDマシ ンやSUNなどでも同様でしょう。

適当な機械にHDDを接続し、

	% gunzip < rz25-image.gz | dd of=/dev/rsd?c  obs=409600
 
などとするだけです。('?'は書き込みたいHDDによる)
ブロック・サイズは適当で良いのですが、あまりに小さいと、とんでもなく時 間がかかります。
また、最近のBSDのddはBlockSizeに満たない最終ブロックのデータを書き込ま ないので、conv=syncオプションの指定が必要です。

HDDにイメージが書き込めたら、AXPpci33に接続し、SRMよりブートします。


	>>>boot dka?00
 
とします。('?'はSCSI-Id)

すると、NetBSD/Alphaのブートが始まります。
基本的なブートが終ったあたりで、日付のエラーを報告しつつ、強制的にシン グル・ユーザ・モードになり、 shellを尋ねてきます。それには、[return]を押 下するだけで、/bin/shが起動します。
ここまでくれば、一安心です。あっけないでしょう。

さて、ここで、fstabを適切に変更しなければなりません。
デフォールトの/etc/fstabは

/dev/sd0a	/	ffs	rw	1 1
/dev/sd0b	none	swap	sw	0 0
/dev/sd0d	/usr	ffs	rw	1 2
 
となっています。
NetBSDを入れたHDDがもっともSCSI-Idの小さな物なら、 NetBSDにsd0と認識さ れており問題はありません。

NetBSDの入っているHDDがsd0でない場合は、以下の手順でfstabをエディット します。(UNIXマガジン読者なら書くまでもないでしょうが)
ここでは、/dev/sd2にNetBSDが入っているとします。

	# mount -u /dev/sd2a /
	# cd /etc
	# ed fstab
	1,$s/sd0/sd2/
	wq
	#
 
とします。

この後、shellをexitすると、マルチ・ユーザ・モードへ移行します。
これで、NetBSD/Alphaの起ち上げは完了です。

なお、コンソールのターミナル・タイプは'sun'とするべきらしいのですが、 エディタなどが今一つうまく動きません。スクリーン・エディタを使う場合には、 別なホストからrloginなどして、別な端末を使った方が楽なようです。


NetBSD/Alphaの各種設定
目次へ前の章へ次の章へ

NetBSD/AlphaはBSDの伝統に従っているので、BSDでは常識的な設定ばかりです。
以下にNetBSD/Alphaで必要な設定項目を列挙します。

以上でNetBSD/Alphaが使えるようになるでしょう。

最後に、NetBSDをシャットダウンし、SRMで

	>>>set boot_osflags A
 
としておくと、以降、自動的にマルチ・ユーザモードに入るようになります。
また、
	>>>set bootdef_dev dka?00
 
(?はSCSI-Id)としておくと、bootコマンドで、デバイスを指定する必要がなく なります。


HDDのディスクラベル再設定
目次へ前の章へ次の章へ

今どき400MBytesのHDDなんか無いので、たぶん、インストール直後はHDDが無 駄になっていますね。
そこで、早いうちにディスクラベルを書き換えて、400MB以上の部分も使える ようにします。

今入っているNetBSDを消すと、再度入れ直す手間が生じるので、 今回は新たにパーティションを追加することにします。

NetBSD/Alpahは

としているので、新しいパーティションは'e'とします。

Sector/track, track/cylinder, cylinder数などは、あらかじめわかっている とします。

僕は、ここではQuantumのLightning 730Sという720MBytesHDDを使用していま す。
またHDDは/dev/sd2であるとしています。

disklabelコマンドを-eオプション付で起動します。

	# disklabel -e /dev/sd2c
 
とすると、ディスク・ラベル情報をバッファに持ったエディタが起動します。

まず、下記のエントリを、HDDに合わせて適切に編集します。

sectors/track: 97
tracks/cylinder: 4
sectors/cylinder: 388
cylinders: 3658
total sectors: 1431760
 
次に、パーティション情報を
5 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:   111600        0    4.2BSD     1024  8192    16   # (Cyl.    0 - 287*)
  b:   111600   111600      swap                        # (Cyl.  287*- 575*)
  c:  1431760        0    unused        0     0         # (Cyl.    0 - 3690*)
  d:   600408   223200    4.2BSD     1024  8192    16
  e:   608152   823608    4.2BSD     1024  8192    16
 
のように編集します。
これで、エディタを終了すると、ディスク・ラベルが更新されます。

ディスク・ラベルを書き終えたら、'e'パーティションをnewfsします。

	# newfs /dev/sd2e
 
とし、ファイルシステムとして使用可能にします。
これで、約300MBytesの'e'パーティションができ、HDDが無駄なく使えます。


Zipドライブをブート可能HDDにする
目次へ前の章へ次の章へ

NetBSDでは、ZipドライブはHDDと同じに見えます。
ZipドライブからNetBSDがブートできると便利です。
とくにOSをとっかえひっかえして試している時には、Zipドライブが役に立ちま す。
また、自分のミスで HDDを消してしまったときなど、NetBSD/Alpha は復旧が面 倒ですが、Zipで最低限のシステムをもっておくと、再インストールも楽です。
(僕は実際にそういう目に会っています ;-))

ここに記述するのは、HDDをブータブルにするのと同じ方法です。
ターゲットのZip(またはHDD)は、ディスク・ラベルも書き、aパーティション はnewfs も終ったものを使用します。
ここの例では、/dev/sd3aとします。

	# mount /dev/sd3a /mnt
	# cd /usr/mdec
	# cp boot /mnt
	# sync
	# sync
	# ./installboot -v /mnt/boot ./bootxx /dev/sd3c
 
これで、ブータブルなZipが得られます。

このあと、/netbsd, /bin, /sbin, /etc, /usr中の必要なファイルをコピーし、 /tmp,/varなどのディレクトリを作り、/dev/で必要なデバイスをMAKEDEVすれば、 完全に単独で起動するディスクになります。
なお、このZipメディアの/etc/fstabを適切に設定しておくと、非常時に慌て なくてよいでしょう。


X Window
目次へ前の章へ次の章へ

バイナリで供給されているXクライアントは、他のXサーバに接続して調子良く 動きます。

Xサーバは、前述どおりTGAボードでしか使用できません。
またNetBSD/AlphaのX WindowサーバはPS/2マウスしか使用できません。
DEC UNIX 用マザーボードであれば、PS/2マウスを接続して、すぐにX Windowサー バが使用できます。

NT版マザーボードの場合は、自分でサーバを改造するして、シリアル・マウス を使用できるようにするしかないでしょう。(XFree86のサーバを真似すれば、きっ と簡単)

なお、NetBSD/Alphaのチームは、現在、TGAボードとPS/2マウスしかサポート する気がないらしく、Linux/AlphaのXFreeサーバなんぞを参照をする気もまった くない様子です。
(Linux/AlphaのXサーバはXFree86を元に、数種類のビデオ・カードをサポート しています)


Multiaというマシン
目次へ前の章へ次の章へ

AXPpci33は基板での販売ですが、AXPpciとよく似たアーキテクチャを持ち完全 なシステムとなっているものもDECより売り出されています。

これがMultiaまたはUDB(Universal Desktop Box) と呼ばれるマシンです。
これらの機械も NetBSD/Alphaのサポート・リストに載っています。
(Multiaと UDB は正確にはその位置付けが違うのですが、ユーザにはとっては 大した意味はないでしょう)

Multiaは非常に小さくてかわいい匡体内に Alpha CPUをはじめ、TGA、音源、 Ethernet, HDDなどすべてを収めた上で、最小構成定価が20万円を切る画期的な Alphaマシンでした。が、残念なことにすでに製造中止となっています。

しかし、Multiaとほとんど同じ構造の機械が、「Digital's Easy Web Server」 として、今でも販売されているかもしれません。
(DECのWWWページ http://www.digital.com/info/internet/brochure/ews_abs.html が現在もあります)

さて、今回、Multiaも入手できたので、NetBSD/Alphaを試用してみました。

MultiaのファームウェアはSRMとARCをFlashROMに同居させ、モニタ・コマンド で簡単に切り替えられるので、非常に便利です。

MulitaがARCになっている場合は、

  1. "Boot menu:" において "Supplementary menu..."を選び
  2. "Supplementary menu:" において "Switch to OpenVMS or Digital UNIX console"
を選択。
その後、電源を再投入するとSRMに切り替わっています。

SRMが起動したあとは、AXPpciとまったく同様にNetBSD/Alphaが稼働します。
なお、僕が入手したMultiaのTGAはX Windowが1024×768で動作するモードに設 定されていました。(内部ジャンパの変更で画面解像度が変更できるようですが、 僕は確認していません)

ファームウェアをSRMからARCにするには、SRMプロンプトで

	>>> arc
 
とするだけです。

Mulitaは日本の家庭やオフィスにぴったりの機械なので、生産中止になったこ とは非常に残念です。


終りに
目次へ前の章へ次の章へ

僕のAXPpciは昔に購入したものなので、旧版のCPUが載っており、実は、 166MHzでしか動いていません。

そのマシンで少しばかり、ベンチマークを行ってみました。
比較のために同一AlphaマシンのDEC UNIXと、SparcStation10でも、同じベン チマークを行いました。
OS,cc(Cコンパイラ)のバージョンは次の表の通りです。
表: テストに使用したOSなど
マシン OSCコンパイラ dhrystoneオプションwhetstoneオプション
Alpha NetBSD1.2/Alpha gcc version 2.7-95q4 -O4 DREG=register -O4 whetd.c -lm
Alpha DEC OSF/1 V3.0B (Rev. 358.78);
Wed Nov 16 02:23:47 EST 1994
The DEC OSF/1 AXP Compiler Driver 3.11 -O4 DREG=register -O4 -migrate -float_const -ansi_alia whetd.c -lm
SparcStation10 SunOS Release 4.1.4-JLE1.1.4 (GENERIC) #1:
Mon Nov 21 19:44:32 JST 1994
SunOS標準 -O4 DREG=register -O4

ベンチマーク結果は次表の通りです。
表: ベンチマーク結果
Dhrystone1.1
(2nd cache=1MB)
Dhrystone1.1
(2nd cache無)
Whetstone double
(2nd cache=1MB)
Whetstone double
(2nd cache無)
NetBSD/Alpha 116279 dhrystones/sec 92592 dhrystones/sec 30303 KIPS 25641 KIPS
DEC UNIX 186955 dhrystones/sec 121951 dhrystones/sec 80128 KIPS 58823 KIPS
DEC UNIX
(ccオプション-O4のみ)
- - 50658 KIPS 37037 KIPS
SS10 87719 dhrystones/sec - 38461 KIPS -

なお、DEC UNIXのwhetstoneでは、コンパイラ・オプションを変えて同一ベン チマークを行ってみました。(表中に「(オプション-O4のみ)」と記述)

巷の評判通り、DECのCCは性能が良いようです。
また、2次キャッシュがなければ、折角のAlphaの性能が出ないようですね(当 然 :-))。

なお、数値計算の高速化に関しては、Linux/Alphaの日本のメイリング・リス ト(linux-alpha-jp)に、ライブラリやgcc, f2cに手を入れて、努力されている人 が多数おられます。数値計算性能をチューニングしたい場合は、 linux-alpha-jp (majordomo@kuamp.kyoto-u.ac.jp)に入るべきかも知れません。

166MHzで上記の性能が出ていますから、233MHzだともっと期待できますね。
さぁ、貧しい中にも楽しいAlphaの世界が開けてきたでしょう。
AXPpciは安くてもそれなりに速い機械です。みんなが持ってるIntelより、浮 動小数点演算が速いので、3Dポリゴンゲームを実行すると楽しいです。

なお、現在、NetBSD/Alpha-currentはECOFFバイナリ対応のために大幅な変更 が加えられているようです。 が、currentを追いかけるには体力が必要なので、NetBSD/Alphaについては、 これで一応の完としておきます。;-)


参考URL
目次へ前の章へ



(たけおか しょうぞう AXE, Inc.)



目次へ前の章へ
インデックス・ページに戻る