NetBSD/Sparcは MPUにSparcを使用したSun4シリーズのためのNetBSDである。
本文書は、NetBSD-1.3.2をSparcにポーティングした
NetBSD1.3.2/sparcについて述べる。
3Mips程度の680X0等のCISCマシンが全盛の時代に、Sparcは10Mipsを越える
RISCとして登場した。
Sparcの登場によって、メインフレーム(大型機)、ミニコンなどの性能は完全に
時代遅れとなった。絶対性能でミニコンを、コストパフォーマンスでハイエンド・
メインフレームを駆逐してしまった。
Sparcアーキテクチャはレジスタウインドウを持ち、そのアーキテクチャのタチ
の悪さは衆目の一致するところである。しかし、Sparcの高いコストパフォーマ
ンスと、 SunOS 4.Xの優れた使用感よりSun4は広く使用された。
NetBSD/SparcはそのSun4にNetBSDをポーティングしたものである。
なお、本文書で紹介するインストール方法は、
FreeBSD
の動作するマシンを必要とする。
BSD UNIXのネットワーク管理に慣れた読者なら、FreeBSDではなく、他のOSでも代
替できる。
NetBSD1.3.2/sparcのインストールには、
実用的に使うには、少なくとも16MB以上のメモリが必要だとされている。
NetBSD/sparc 1.3.2のサポート機種は
sun4c (SS1, SS1+, SS2, IPC, ELC, IPX, SLC) sun4 (4/100, 4/200, and 4/300. (4/400のサポートは不完全である)) sun4m (Classic, LX, SS4, SS5, SS10, SS20)である。
- sun-4/400 (lacking support for the I/O cache, and has ethernet problems) - sun4d (sparc center 2000) - sun4u (Ultrasparcs)である。
NetBSD/sparcでのサポート・デバイス:
現在サポートされないハードウェア
- sun4c/sun4m sbus ビデオ:
- cgsix, cgthree, bwtwo
- cgfourteen, tcx フレームバッファ (制限付きの"emulation"モード)
- sun4 ビデオ (not thoroughly tested?):
- P4 on-board bwtwo, VME cgtwo カード
- シリアル・ポート:
- ttya, ttyb (必要ならばコンソールにできる)
- ethernet:
- オンボードの AMD Lance ethernet ("le0")
- Sbus AMD Lance ethernet カード
- オンボードのIntel 82586 ethernet (4/100や4/200のie0)
- VME Intel 82586 ethernetカード
- SCSI:
- オンボードの"esp" SCSI コントローラ (sun4c, sun4m, 4/300)
- sbus "esp" SCSIコントローラ
- Sun "SUN-3"/"si" VME SCSI コントローラ (ポーリング・モードのみ。遅し)
- Sun "SCSI Weird"/"sw" オンボード・コントローラ(4/110のみ,ポーリング)
- VME disks:
- Xylogics 7053 VME/SMD ディスク・コントローラ ("xd")
- Xylogics 450/451 VME ディスク・コントローラ ("xy")
- [注意: VME/IPI ディスクはサポートされない]
- sun floppy disk drive
- sun キーボード、マウス
- sun4c オーディオ
- SparcStation Classicのsun4m オーディオ
- マルチプロセッサの sun4m マシン
- SparcStation Classic以外のsun4m マシンのためのオーディオ・ドライバ
- sun-4/100, sun-4/200のための割り込み駆動のSCSIドライバ
本稿のために筆者が使用したSparcは
SparcStation IPX (4/50)である。
- 本体
- SparcStation IPX (4/50)
- メモリ
- 64MBytes
- キーボード
- なし
- マウス
- なし
- ビデオ・アダプタ
- なし
今回は、変則的だが、シリアル・ポートに端末を接続しシリアル・コンソール でインストールを行った。
Sunはキーボードやディスプレイ・ユニットが無くても、シリアル・ポー トにキャラクタ端末を接続することで使用することができる。 (参照:シリアル・ポートをコンソールにする)
Sunはキーボードやディスプレイ・ユニットが無くても、シリアル・ポー
トにキャラクタ端末を接続することで使用することができる。
まずRS232CのAポートに
Sun本体以外に、ファイル・サービス、その他各種サービスを提供するサーバ 機として、
FreeBSD 2.2.7の稼働する80X86マシンを使用した。
具体的には、 RARP, tftp, bootparamd, NFS をサービスする。
NetBSD/sparcのインストール方法には
ここでは、インストールとしては多少変則的ではあるが、ディスク・レスでの
使用を具体例とする。
NetBSD/sparcをメインマシンとしない多くのユーザに取っては、ディスクレス
が便利だと思われる。
ここで設定するインストールするSparcは
ホスト名 | sun4 |
---|---|
IPアドレス | 192.47.224.226 |
Ehternetアドレス | 8:0:20:a7:f5:e6 |
ホスト名 | gigi |
---|---|
IPアドレス | 192.47.224.156 |
Sun4のためのファイル・システムはFreeBSDマシンの
/usr/home/export/sun4/root以下にもつこととする。
今回、スワップはネットワークで行うこととする。
スワップのための領域は
/usr/home/export/sun4/swapというファイルとして持つ。
よって、sun4 のためのすべてのファイルは/usr/home/export/sun4/ 以下に入る。
以下、サーバとなるFreeBSD/x86マシンの設定を列挙する。
rarpdは/etc/ehtersというファイルを参照する。
また、クライアントのIPアドレスが解決できるように、/etc/hostsにはクライ
アント・マシンの IPアドレスとマシン名を書くなどする。(hostsファイルの記
述ではなくNISやDNS設定でもよい)
/etc/ethersは次のような内容である。
1行に1エントリづつ書く。8:0:20:a7:f5:e6 sun4
/etc/ethersが書けたら、rarpdを起動する。
/etc/ethersを変更した場合には、rarpdを一度killしてから再起動する。
rarpdを手動で起動するには、
とする。# rarpd ネットワーク・インターフェース名
ネットワーク・インターフェース名が不明な時は、
とすると、現在使用可能なネットワーク・インターフェースが表示される。# ifconifg -a
/etc/rc.conf中のrarpdに関する設定を、次の様に行うと、次のブートからは自
動的に rarpdが起動する。
rarpd_flags="ed0"には、自分の使用したいネットワーク・インターフェース名 を入れる。rarpd_enable="YES" # Run rarpd (or NO). rarpd_flags="ed0" # Flags to rarpd.
tftpdを使用可能にするには、/etc/inetd.conf中のtftpdに関する以下のエント
リを追加する。
inetd.confファイルを編集した後は、tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
として、intedに変更を通知する。# kill -HUP `cat /var/run/inetd.pid`
その後、# gunzip < NetBSD-1.3.2/sparc/installation/netboot/boot.net >/tftpboot/netboot.sun4c
とする。ここで、CO2FE0E2はSparcのIPアドレス192.47.224.226を16進数で表記 したものである。(必要ならば、リーディング0を付け、1バイトを2桁で表記せね ばならない)# cd /tftpboot # ln -s netboot.sun4c CO2FE0E2.SUN4C
tftpの実験はtftpコマンドで行える。
とりあえず、任意のマシンから、次の様にする
このようにファイルが取れれば、OKであろう。gyopi% tftp tftp> tra Packet tracing on. tftp> verb Verbose mode on. tftp> bin mode set to octet tftp> conn 192.47.224.156 tftp> get netboot getting from 192.47.224.156:netboot to netboot [octet] sent RRQreceived DATA sent ACK : received DATA sent ACK received DATA Received 15360 bytes in 0.1 seconds [1228800 bits/sec] tftp> quit gyopi%
bootparamdの設定ファイルは、/etc/bootparamsである。
/etc/bootparamsには次の様に記述する。
sun4 root=192.47.224.156:/usr/home/export/sun4/rootsun4はサービスを受けるホスト名である。
/etc/bootparamsが書けたら、
# bootparamdとして、bootparamdを起動する。
# bootparamd -dとすると、bootparamの振舞いが観察できる。
NFSの設定は/etc/exportsを記述する。
/usr/home/export/sun4 -maproot=0 -alldirsとする。
今回は、ディスクレスでの使用であるから、ファイルの展開はサーバとなる FreeBSDマシンで行ってしまう。
base, etcをまず展開し、続いてcomp, man, misc, text, games を展開する。
実用的な使用には、base,etc,compを展開するべきだろう。
なお、tgzファイルの展開はrootで行わなければ、ownerなどが正しく設定され
ない。
必ず、rootで行おう。
# cd /usr/home/export/sun4/rootとする。同様に、etc,compなどを展開する。
# tar xvzpf NetBSDの収めてあるディレクトリ/sparc/binary/sets/base.tgz
カーネルファイルを展開する。
# gunzip < NetBSDの収めてあるディレクトリ/sparc/binary/kernel/netbsd.GENERIC_SCSI3.gz > netbsd
今回は、ネットワークでスワップを行うこととした。
クライアントにおいて /swap となるべきディレクトリを作成する。
# mkdir swap
スワップの準備としてswapファイルを最大サイズで作っておく。(ここでは、16MB)
# cd /usr/home/export/sun4/ # dd if=/dev/zero of=swap bs=16k count=1024 1024+0 records in 1024+0 records out 16777216 bytes transferred in xxx secs (yyy bytes/sec)
その後、デバイスも作ってしまう。
# cd /usr/home/export/sun4/root/dev
# sh MAKEDEV all
次に、sun4の/etc/fstabを設定する。
# cd /usr/home/export/sun4/root/etc
# vi fstab
/etc/fstabに次の様に記述する。
今回は、スワップはネットワークでスワップを行うので、それも記述する。
192.47.224.156:/usr/home/export/sun4/root / nfs rw 0 0 192.47.224.156:/usr/home/export/sun4/swap none swap sw,nfsmntpt=/swap
以上で準備完了である。
SPARCstation IPX, No Keyboard ROM Rev. 2.9, 64 MB memory installed, Serial #6366287. Ethernet address 8:0:20:a7:f5:e6, Host ID: 5761244f.
>n ok .idprom Format/Type: 1 57 Ethernet: 8 0 20 a7 f5 e6 Date: 0 0 0 0 Serial: 61 24 4f Checksum: c0 Reserved: d8 b9 d5 79 f7 6d 53 dd 7 6 5 4 3 2 1 0
Sparcの電源を投入する。
通常は、自動的にHDDからのブートを行おうとするので、「L1」キー
と「A」キーを同時に押下し、モニタへ戻す。
シリアル・コンソールでは、Breakの送出(tipコマンドを使用しているなら「
~#」)で、同様の効果がある。
Sparcのモニタ、SunOSでは、いかなる場合も、L1+Aの押下(またはシ
リアル・コンソールからのBreak)でモニタへ戻るようになっている。
モニタに戻ったら、NewMonitorに入り次のように設定する。
ok setenv sunmon-compat? false sunmon-compat? = false ok setenv security-mode none security-mode = nonenewMonitorならば、
ok boot net netbsdで、ネットワーク・ブートがはじまる。
今までの設定が正しければ。問題無くブートが完了し、シングルユーザモード で NetBSD/sparcが起動するだろう。
シングルユーザモードで起動したら、sparcが使用可能である。
/etc/rc.confを編集してみよう。
# vi /etc/rc.conf以下はNetBSD/sparcの/etc/rc.confである。
(前略)まずは、この3項目の設定するのみでよいだろう。
# If this is not set to YES, the system will drop into single-user mode.
rc_configured=YES
# Basic network configuration
hostname="sun4" # if blank, use /etc/myname
(中略)
# Set this to YES if you have purposefully setup no swap partitions and
# don't want to be warned about it
no_swap=""
(後略)
BSDの場合、シングルユーザ・モードのshellをexitすると、自動的にマルチユー
ザモードへ移行する。
メモリが少ない場合は、非常に時間を要するが、問題は出ないだろう。
なお、ネットワーク設定のコマンド等は、通常のBSD系OS とまったく同じである。
この後次の各種設定などを行うとよい。
クライアント自身と、サーバを追加
# rm /etc/localtime # ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
NetBSD/sparcでは、X windowが動作する。
本章では、X windowを動作させる方法を述べる。
NetBSD-1.3.2/sparc/binary/sets/中の
を展開する。
- xbase.tgz
- X windowの基本的なクライアントのバイナリや設定ファイル等
- xcontrib.tgz
- X windowのクライアントのコントリビュート・ソフトウェアのバイナリ
- xcomp.tgz
- X windowクライアントを開発する時に必要なライブラリ等
- xserver.tgz
- X windowサーバ
が含まれる。
- Xsun : CG2/CG3/CG4/CG6用8-bitカラー・サーバ
- XsunMono : BW2用 白黒・サーバ
- Xsun24 : CG8用 24-bitカラー・サーバ
- xfont.tgz
- フォント。サーバを動作させる時のみ必要
SunのコンソールでXサーバを動作させないならば、xserver.tgz, xfont.tgzの
展開は不要である。
また、X クライアントの開発(コンパイル、リンク)を行わないなら、xcomp.tgz
の展開は不要である。
展開直後は /usr/X11R6/bin/X が Xsun へのシンボリック・リンクになってい
る。
本稿ではSparcStationIPXのCG6を使用するので、そのまま使用した。
ハードウェアに応じて
XsunMono(BW2用)へとシンボリック・リンクである/usr/X11R6/bin/Xを変更する。
Xsun24(CG8用)
# rm /usr/X11R6/bin/X # ln -s /usr/X11R6/bin/XsunMono /usr/X11R6/bin/X
X windowのバイナリは、/usr/X11R6/lib中のシェアード・ライブラリを使用し
ている。
従って、シェアード・ライブラリの設定を行わなければならない。
/etc/rc* などの中で、
ldconfig /usr/X11R6/lib /usr/local/libとする。
各ユーザの.cshrc等の中で、path に /usr/X11R6/bin を追加。
必要に応じてホーム・ディレクトリに .xinitrc .twmrc 等を作成し、設定する。
SparcStationIPXでは、1152×900で問題無くX windowサーバが動作した。
NetBSD 1.3.2/sparcは、実用的に使える。
ソースのあるBSD系OSがかなり新しいSparcマシンで使用できるのは、非常に楽
しい。
本稿を書くにあたって、参考にしたWWWページのURL を以下に挙げる。
これらに注目しておけば、 NetBSD/Sparcのバージョンアップ情報などが得られ
るであろう。
- http://www.netbsd.org/
- NetBSD.orgの公式ホームページ
- http://www.netbsd.org/Ports/sprac/
- NetBSD/sparcの公式WWWページ