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ページ