DEC(現Compaq)のAlphaはIBMのPowerPCと地上最高のクロック周波数を競いなが らも、ほぼ常に地上最高クロック周波数を保持しているマイクロプロセッサである。
Alphaの世界では、int(もっとも自然な整数)のビット幅は64bitである。Alphaで動作するUNIXとしては
本文書はNetBSD1.2/Alphaをインストールする手順を述べている。
NetBSDが動作するハードウェアは
筆者が入手して動作確認したハードウェアについては、別文書
フリーUNIXの動作するAlphaマシンについて
を用意した。詳しくはそちらを参照して頂きたい。
Alphaマシンには
一般の販売店で売られているシステムはARCになっている可能性がある。
モニタ・プログラムをSRMにする方法は、マシンによって異なる。
各機種についての記述は フリーUNIXの動作するAlphaマ
シンについてを参照して頂きたい。
NetBSDのX windowサーバは
TGAと呼ばれるDEC純正のビデオカードしかサポートしていない。
以下に、NetBSD/Alphaに共通なハードウェアについて概説する。
このビデオカードは、AXPpciのDEC UNIXが要求した。
AXPpciのDEC UNIXでは、X windowサーバが快調に動作する。
当然ながら、NetBSDではキャラクタ・コンソールにしかならない。
TGAはDEC純正のビデオカードである。
NetBSD/AlphaのX windowサーバは現在、このカードしかサポートしていない。
TGAと呼び習わされているカードにも何種類か存在する。
僕が入手した物は、ZLXp-E1 (PBXGA-AA)という型番のものである。このビデオ
カードは8プレーンなので、256色のX Windowサーバが動作する。
しかし、このカードを通常の販売店で入手するのは、困難である。
通常のシステムには標準でEthernet I/Fが搭載されている。
しかし、AXPpciの様にEthrenetカードを調達しなければならない場合もある。
またPCIバスマシンには、100Base Ethernetカードを装着することもできる。
Ethrenetカードについては AXPpciマシンの作り方
を参照して頂きたい。
通常のAlphaマシンの場合、ハードディスク(以下HDD)は、SCSIディスクならな
んでも良い。
ただし、NetBSD1.2/Alphaの最初のインストールには、406MBytes以上の容量が
必要である。
それというのも、NetBSD1.2/Alphaはrz25という406MBytesのHDDイメージをそ
のまま配付しており、最初はそのイメージをそのままHDDに書き込んでブートさ
せるしか起ち上げ方法がないからである。
ハッカーの仕事というのは、かく有りたいものである。:-P :-)
本文書では、NetBSD起ち上げ後、ディスク・ラベルを編集してHDDの容量を使 い切ることとする。
そのために、あらかじめ、 sector/track, track/cylinder, cylinder 数など
を調べておく。
これらを知るには、
通常のAlphaマシンは、パリティー付きのRAMを使用する。
NetBSD1.2/Alphaは最低32MBのメモリを必要とする。
大抵のAlphaマシンの場合、キーボードが接続されていないと、シリアル・ポー
トをコンソールとして起動する。
NetBSD/AlphaのX Windowサーバは、3ボタン・マウスを必要する。
NetBSD1.2のインストールには、フロッピ・ドライブは必要無い。
NetBSD1.3.2のインストールには、フロッピ・ドライブがあったほうがよい。
ZipドライブはNetBSDからはHDDにみえる。
WindowsNT4では、リムーバブル・ドライブとして認識される。
OSのブートにも使用できるので、色々な OSを切り替えて使う時には便利である。
アクセス速度はフロッピに毛が生えたようなものだが、 OSが一揃い入って、ブー
トできるという利点は侮りがたいものがある。
後ほど、Zipドライブを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による)
HDDにイメージが書き込めたら、Alphaマシンに接続し、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がsd0でない場合は、以下の手順でfstabをエディット
する。
(ここでは、/dev/sd2にNetBSDが入っているものとする)
# mount -u /dev/sd2a / # cd /etc # ed fstab 1,$s/sd0/sd2/ wq #とする。
この後、shellをexitすると、マルチ・ユーザ・モードへ移行する。
これで、NetBSD/Alphaの起ち上げは完了である。
なお、コンソールのターミナル・タイプは'sun'とするべきらしい。
しかし、コンソールではエディタなどが今一つうまく動作しない。
スクリーン・エディタを使う場合には、別なホストからrloginなどして、別な
端末を使った方が楽なようだ。
NetBSD/AlphaはBSDの伝統に従っているので、BSDでは常識的な設定ばかりである。
以下にNetBSD/Alphaで必要な設定項目を列挙する。
inet ホスト名を入れる。(ホスト名は/etc/hostsに存在すること)
# rm /etc/localtime # ln -s /usr/share/zoneinfo/Japan /etc/localtimeとする。
nfs_server=NO nfs_client=NOを
nfs_server=YES nfs_client=YESとする。
最後に、NetBSDをシャットダウンし、SRMで
>>>set boot_osflags Aとしておくと、以降、自動的にマルチ・ユーザモードに入るようになる。
>>>set bootdef_dev dka?00(?はSCSI-ID)としておくと、bootコマンドで、デバイスを指定する必要がなく なる。
今どき400MBytesのHDDなぞ無いので、たぶん、インストール直後はHDDが無駄
になっていだろう。
そこで、早いうちにディスクラベルを書き換えて、400MB以上の部分も使える
ようにしよう。
今入っているNetBSDを消すと、再度入れ直す手間が生じるので、今回は新たに パーティションを追加することにする。
NetBSD/Alpahは
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とし、ファイルシステムとして使用可能となる。
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クライアントは、他のXサーバに接続して調子良く 動作する。
Xサーバは、前述どおりTGAボード
でしか使用できない。
またNetBSD/AlphaのX Windowサーバは3ボタン・マウスしか使用できない。
なお、NetBSD/Alphaのチームは、現在、TGAボードしかサポートする気がない
ようだ。彼らは「Linux/AlphaのXFreeサーバはI/Oアクセスをダイレクトに行う
ので、NetBSDでは使えない」と言い切っている。
(Linux/AlphaのXサーバはXFree86を元に、数種類のビデオ・カードをサポート
している)
筆者のAXPpciは昔に購入したものである。旧版のCPUが載っており、実は、
166MHzでしか動作していない。
そのマシンで少し
ベンチマーク
を行ってみた。
なお、数値計算の高速化に関しては、Linux/Alphaの日本のメイリング・リス ト(linux-alpha-jp)に、ライブラリやgcc, f2cに手を入れて、努力されている人 が多数おられる。数値計算性能をチューニングしたい場合は、 linux-alpha-jp (majordomo@kuamp.kyoto-u.ac.jp)に入るべきかも知れない。
AlphaマシンはIntelよりも、浮動小数点演算が速いので、3Dポリゴンゲームを
実行すると楽しい。
なお、現在、NetBSD/Alpha-currentはECOFFバイナリ対応のために大幅な変更 が加えられているようである。