NetBSD 1.3.2をSUN3にインストールする


竹岡 尚三 (AXE, Inc.)

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

目次

  1. はじめに
  2. NetBSD/Sun3の稼働するハードウェア
  3. 本稿で使用したSun3について
  4. シリアル・ポートをコンソールにする
  5. 各種サービスを提供するマシン
  6. インストール方法について
  7. Sunのネットワーク・ブートについて
  8. インストール1 サーバの設定
  9. インストール2 ディスクレス・マシンのためのファイルの展開
  10. sun3のブート
  11. NetBSD/sun3の設定
  12. おわりに
  13. 参考URL

インデックス・ページへ

はじめに
目次へ次の章へ

NetBSD/Sun3は MPUに680X0を使用したSun3シリーズのためのNetBSDである。

本文書は、NetBSD-1.3.2をSun3にポーティングした

NetBSD1.3.2/sun3
について述べる。
本文書では、NetBSD/Sun3のインストール方法を紹介する。

以下にNetBSD/Sun3の概要を列挙する。

Sun3はそもそもBSD(SunOSも当時はUNIX BSD/Sun Versionであった)が動作する いにしえの名機であり、そのハードウェアで最新のBSDが動作するのは、楽しい。
Sun3は今では非常に遅いものの、様々なサーバとして、それなりに使い道 があるだろう。
なんといっても、ハードウェアを保有しているマニアとしては、 実働できる最新OSが入手できることに意味があるだろう。

NetBSD1.3.2/Sun3は、非常に安定して動作している。十二分に実用に耐える。

なお、本文書で紹介するインストール方法は、 FreeBSD の動作するマシンを必要とする。
BSD UNIXのネットワーク管理に慣れた読者なら、FreeBSDではなく、他のOSでも代 替できる。


NetBSD/Sun3の稼働するハードウェア
目次へ前の章へ次の章へ

NetBSD1.3.2/sun3のインストールには、

が必要である。

実用的に使うには、少なくとも8MB、X windowを使用する場合は16MBの メモリが必要だとされている。

ディスク容量は次の通り

表: パーティションごとに必要なディスクの容量
パーティション推奨推奨(Xwin使用)最小最小(Xwin使用)
root (/)20M20M15M15M
user (/usr)95M125M75M105M
swap実メモリの2倍実メモリの2倍実メモリの2倍実メモリの2倍
local (/usr/local)ありったけありったけありったけありったけ

NetBSD/sun3 1.3.2のサポート機種は
                3/50, 3/60, 3/110
                3/75, 3/150, 3/160
                3/260, 3/280, 3/E
 
である。
なお、 3/80, 460, 470, 480 は、NetBSD/sun3xでサポートされている。

NetBSD/sun3でのサポート・デバイス:
シリアル・ポート (RS232C)
内臓 ttya, ttyb
ビデオ・アダプタ
bwtwo, cgtwo, cgfour
ネットワーク・インターフェース
オンボード Lance Ethernet (le)
オンボード または VME の Intel Ethernet (ie)
Sun3/E SCSI/Ethernet board
SCSI (ほとんどの SCSI ディスク, テープ, CD-ROM, etc.)
オンボード "si" (SCSI-3)
VME "si" (SCSI-3) ボード
Sun3/E SCSI/Ethernet ボード
SMD ディスク (巨大な 8inchディスク)
Xylogics 450/451
Xylogics 753/7053
入力デバイス
Sun キーボード、マウス
その他
バッテリ・バックアップされたリアルタイム・クロック

本稿で使用したSun3について
目次へ前の章へ次の章へ

本稿のために筆者が使用したSun3の構成は、

本体
Sun3/160
メモリ
4MBytes
キーボード
Type3 英語キーボード
マウス
Sun製標準の光学マウス
ビデオ・アダプタ
CG2
SCSIインターフェース
VME SC(サポート外なので、動作せず)

Sun3のメモリは4MBを試用した。 4MBのメモリは非常に苦しい。仮想記憶に よってかろうじて動作するものの、マルチユーザ・モードで使用するには無理が ある。可能ならば8MB以上を搭載すべきであろう。

今回試用したキーボードは、SunのType3キーボードである。東芝から日本 語キーボードが供給されていたが、NetBSDでどうなるかは不明である。

Sun3はキーボードやディスプレイ・ユニットが無くても、シリアル・ポー トにキャラクタ端末を接続することで使用することができる。 (参照:シリアル・ポートをコンソールにする)


シリアル・ポートをコンソールにする
目次へ前の章へ次の章へ


Sun3はキーボードやディスプレイ・ユニットが無くても、シリアル・ポー トにキャラクタ端末を接続することで使用することができる。
まず。RS232CのAポートに

のシリアル・キャラクタ端末を接続する。
端末としてPCを使用する場合は、接続ケーブルにクロスケーブルを使用する。

ttya(RS232CポートのA)にキャラクタ端末を接続し、 本体裏にある「diag/normスイッチ」をdiag側に倒して電源を入れる。 するとdiag(自己診断)モードで起動し、自己診断が行われる。
Type a character within 10 seconds to enter Menu Tests... (e for echo mode) 
 
が表示されたら、すばやく端末のなにかのキーをたたく。
その後、自己診断が一通り終ったところでプロンプト「Cmd=>」が出るの で、「q」を入力し、モニタへ移る。
Cmd=>q
>
 
続いて、モニタのPROM変更コマンドで
>q1f
EEPROM 01F: 12? 10
EEPROM 020: 12? .
 
とする。
この後、diag/normスイッチをnorm側にもどし、電源を切断した後、再度投入し直 す。
これ以降、コンソールがシリアル・ポートとなる。


各種サービスを提供するマシン
目次へ前の章へ次の章へ

Sun3本体以外に、ファイル・サービス、その他各種サービスを提供するサーバ 機として、

本体
Intel DX4/100MHz
OS
FreeBSD 2.2.7
メモリ
20MBytes
HDD
1.6GBytes
を使用した。ファイルサービス以外に、大した負荷がかかるわけではないので、 旧型マシンでも充分に使用に耐える。

具体的には、 RARP, tftp, bootparamd, NFS をサービスする。


インストール方法について
目次へ前の章へ次の章へ

NetBSD/Sun3のインストール方法には

の3通りがある。
しかし、もはや、まともにSunOSが稼働しているSun3はほとんど存在しないだろう。
また、通常はインストール・テープを作成することもできないだろう。 筆者のサイトにもQICテープ・ドライブはあるが、Sun3のテープは密度 が低すぎて、もはや書き込むことができなかった。

よって、ここでは、現在、一般的であると思われる、ネットワークを使用し たインストールを紹介する。

また、本稿で使用したSun3ではSCSIインターフェースが動作しないため、こ こでは、ディスク・レスでの使用を具体例とする。

ネットワーク・インストールの前に、次に述べる、Sunのネットワーク・ブート 手順を理解しておいた方が良い。トラブル・シューティングを円滑に行うには、 ブート手順の理解が不可欠だろう。


Sunのネットワーク・ブートについて
目次へ前の章へ次の章へ

ここでは、Sun3のネットワーク・ブート手順を記述する。

Sun3のブート手順

  1. コンソールより
    > b ie()

    と入力することでネットワーク・ブートが開始される。
    ここで、マシンによってはle()を指定しなければならない。
    (マシンに装備されているEthernetインターフェースによる)

  2. SunがRARP要求を出す。
    RARPは自分のEtherNetアドレスを元に、自機のIPアドレスを要求するプロト コルである。RARP要求にはサーバ上のrarpdが返答する。

  3. SunはRARPによって自機のIPアドレスを得た後、 RARPを返答したマシンに 向かって、ファイルを要求する。
    このファイル要求はfttpプロトコルを使用して、第2段階のブート・プログラム を読み込むものである。NetBSDでは、この第2段階のブート・プログラムとして、 NFSを使用するブート・プログラムが用意されている。
    第2段階のブート・プログラムとして、Sun3が要求するファイル名は、 Sun3のIPアドレスを16進数で表記したものとなっている。(具体的には後述)

  4. tftpによって第2段階のブート・プログラムが読み込まれ、実行がはじまる と、Sun3は、次にbootparamによって、ファイル・システムとNFSの情報を要求す る。
    サーバ上のbootparamdによって、必要な情報が返答される。

  5. bootparamによって得た情報をもとに、サーバ上のファイル・システムを NFSマウントし、ブートを完遂する。

以下のインストールでは、主にこのブート手順に使用されるサーバの設定を行 う。 FreeBSDのサーバでは、ネットワーク・ブートで必要とされる機能を提供す るように設定する
Sun3に向かっているよりも、FreeBSDの設定を行っている時間の方が長いだろう。


インストール1 サーバの設定
目次へ前の章へ次の章へ

ここで設定するインストールするSun3は
ホスト名sun3
IPアドレス192.47.224.8
Ehternetアドレス8:0:20:1:67:6c
とする。

サーバであるFreeBSDマシンは
ホスト名gigi
IPアドレス192.47.224.156
とする。

Sun3のためのファイル・システムはFreeBSDマシンの

/usr/home/export/sun3/root
以下にもつことにする。
よって、sun3 のためのすべてのファイルは /usr/home/export/sun3/root/以下に入る。

FreeBSD側の設定
FreeBSDでは、

の設定を行う。
ここでは、既述の通り、FreeBSD 2.2.7を実例として使用する。

●bpf
FreeBSDでrarpd, bootparamdを使用するには、 bpf(Berkley Packet Filter)が カーネルで使用できるようになっていなければならない。
カーネルのconfigファイルを確認して、bpfが入っていない場合は、

 pseudo-device   bpfilter        4       #Berkeley packet filter
という行を加えてFreeBSDカーネルを再構築する。
その後、/devで、
# sh MAKEDEV bpf[0-9]
 
とする。

●rarpd

rarpdは/etc/ehtersというファイルを参照する。
/etc/ethersは次のような内容である。

8:0:20:1:67:6c sun3
1行に1エントリづつ書く。
ここのEthernetアドレスにはリーディング・ゼロを付けてはいけない(例えば8 を08と書いてはいけない)。
/etc/ethersが書けたら、rarpdを起動する。
rarpdを手動で起動するには、
 # rarpd ネットワーク・インターフェース名
とする。
ネットワーク・インターフェース名はed0などである。
ネットワーク・インターフェース名が不明な時は、
 # ifconifg -a
 
とすると、現在使用可能なネットワーク・インターフェースが表示される。

/etc/rc.conf中のrarpdに関する設定を、次の様に行うと、次のブートからは自 動的に rarpdが起動する。
rarpd_enable="YES"               # Run rarpd (or NO).
rarpd_flags="ed0"                  # Flags to rarpd.
 
rarpd_flags="ed0"には、自分の使用したいネットワーク・インターフェース名 を入れる。
rarpdは前述通りbpfを使用する。

●tftpd

tftpdを使用可能にするには、/etc/inetd.conf中のtftpdに関する以下のエント リを追加する。

tftp    dgram   udp     wait    nobody  /usr/libexec/tftpd      tftpd /tftpboot
 
inetd.confファイルを編集した後は、
# kill -HUP `cat /var/run/inetd.pid`
 
として、intedに変更を通知する。
次に
/tftpboot
というディレクトリを作成する。
/tftpbootには、NetBSD-1.3.2/sun3/boot.../netboot.gzをgunzipしながらコピー する。
# gunzip < NetBSD-1.3.2/sun3/boot.../netboot.gz >/tftpboot/netboot
 
その後、
 # cd /tftpboot
 # ln -s netboot C02FE008
 
とする。ここで、C02FE008はSun3のIPアドレス192.47.224.8を16進数で表記し たものである。(必要ならば、リーディング0を付け、1バイトを2桁で表記せねば ならない)
Sun3のROMのブート・プログラムはtftpによって第2段ブートのファイルを要求 する時、 C02FE008のようなファイル名で要求を出すのである。

tftpの実験はtftpコマンドで行える。
とりあえず、任意のマシンから、次の様にする

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 RRQ 
received DATA 
sent ACK 
		:
received DATA 
sent ACK 
received DATA 
Received 15360 bytes in 0.1 seconds [1228800 bits/sec]
tftp> quit
gyopi%
 
このようにファイルが取れれば、OKであろう。
うまく行かない場合、トレース結果を見れば、どこで失敗しているかわかるの で、原因の推測が容易である。


●bootparamd

bootparamdの設定ファイルは、/etc/bootparamsである。
/etc/bootparamsには次の様に記述する。

sun3    root=192.47.224.156:/usr/home/export/sun3/root \
        swap=192.47.224.156:/usr/home/export/sun3/swap \
        dump=192.47.224.156:/usr/home/export/sun3/swap
 
sun3はサービスを受けるホスト名である。
root=はrootパーティションをNFSでマウントすべき、サーバとそのパスの指定 である。サーバのホスト名は解決できないので、IPアドレスを数字で書き下さな ければならない。
ただし、現在のNetBSDのバージョンでは、swap、dump指定は無効である。

/etc/bootparamsが書けたら、

# bootparamd
 
として、bootparamdを起動する。
/etc/bootparamsの記述を変更したら、bootparamdをkillして再起動すること。
必要ならば、/etc/rc.localの最後にbootparamdの起動を記述する。
実験中は、
# bootparamd -d
 
とすると、bootparamの振舞いが観察できる。


●NFS

NFSの設定は/etc/exportsを記述する。

/usr/home/export/sun3/root -maproot=0
 
とする。
クライアントとなるNetBSDはrootパーティションをroot権限でアクセスするた め-maproot=0指定は必ず必要である。
(-maprootオプションはOSによって記述法が様々である)


●tcpdump

tcpdumpはネットワークをモニタリングするためのコマンドである。
tcpdumpも bpfを使用する。
tcpdumpはrarpd,bootparamd, tftpの動作を確認するのに、非常に有用である。
tcpdumpは次のように使用する。

# tcpdump
 
tcpdumpはEthernet上のすべてのパケットを見ることができるので、rarpのブロー ドキャストなども確認できる。ただし、CPUやbpfデバイスの処理能力によっては、 パケットを落すこともあるので、それを前提として使用すべきである。
また、自機のパケットについては実際のEhternetから得るのではなく、ソフト ウェア的に処理している。よって、できれば、サーバとは別のマシンで tcpdump を実行した方がよいだろう。
なお、rarpdを使用するとbpfを1つ使用する。 tcpdumpを使用するには、bpfに 余裕がなければならない。もしも、DHCPクライアントなども動作している時には、 bpfの数に注意しよう。




インストール2 ディスクレス・マシンのためのファイルの展開
目次へ前の章へ次の章へ

今回は、ディスクレスでの使用であるから、ファイルの展開はサーバとなる FreeBSDマシンで行ってしまう。

base, etcをまず展開し、続いてcomp, man, misc, text, games を展開する。
実用的な使用には、base,etc,compを展開するべきだろう。

なお、tgzファイルの展開はrootで行わなければ、ownerなどが正しく設定され ない。
必ず、rootで行おう。

# cd /usr/home/export/sun3/root
# tar xvzpf NetBSDの収めてあるディレクトリ/sun3/binary/sets/base.tgz
とします。同様に、etc,compなどを展開する。

カーネルファイルを展開する。

# gunzip < NetBSDの収めてあるディレクトリ/sun3/binary/kernel/netbsd-gen.gz >netbsd

その後、デバイスも作ってしまう。

# cd /usr/home/export/sun3/root/dev
# sh MAKEDEV all

次に、sun3の/etc/fstabを設定する。

# cd /usr/home/export/sun3/root/etc
# vi fstab

今回は、スワップはスワップ・ファイルを使用することとした。
そこで、 swap指定は通常のファイルを記述する。当然ながら、このスワップ・ ファイルは NFSファイルシステム上にある。
/etc/fstabに次の様に記述する。

192.47.224.156:/usr/home/export/sun3/root / nfs rw,-r=1024,-w=1024
/var/swap none swap sw 0 0

以上で準備完了である。


sun3のブート
目次へ前の章へ次の章へ

sun3の電源を投入する。

通常は、自動的にHDDからのブートを行おうとするので、「L1」キー と「A」キーを同時に押下し、モニタへ戻す。
シリアル・コンソールでは、Breakの送出(tipコマンドを使用しているなら「 ~#」)で、同様の効果がある。
sun3のモニタ、SunOSでは、いかなる場合も、L1+Aの押下(またはシリ アル・コンソールからのBreak)でモニタへ戻るようになっている。

モニタに戻ったら、既述のように、

> b ie()
で、ネットワーク・ブートがはじまる。

今までの設定が正しければ。問題無くブートが完了し、シングルユーザモード で NetBSD/sun3が起動するだろう。


NetBSD/sun3の設定
目次へ前の章へ次の章へ

シングルユーザモードで起動したら、sun3が使用可能である。

/etc/rc.confを編集してみよう。

# vi /etc/rc.conf
以下はNetBSD/sun3の/etc/rc.confである。
(前略)

# If this is not set to YES, the system will drop into single-user mode.
rc_configured=YES

# Basic network configuration
hostname="sun3" # 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=""

(後略)
まずは、この3項目の設定するのみでよいだろう。

BSDの場合、シングルユーザ・モードのshellをexitすると、自動的にマルチユー ザモードへ移行する。
メモリが少ない場合は、非常に時間を要するが、問題は出ないだろう。

なお、ネットワーク設定のコマンド等は、通常のBSD系OS とまったく同じである。


おわりに
目次へ前の章へ次の章へ

NetBSD 1.3.2/sun3は、現段階で充分、実用的に使える。

このように十分に使えるUNIXが動作することで、骨董品的なSun3を実際に 稼働させ、サーバとして使用することも可能だろう。

好事家の諸氏ならSun3の魅力がわかるだろう。

なお、この文書をもとにした文章が技術評論社ソフトウェアデザイン 1999/Febに掲載されています。



参考URL
目次へ前の章へ

本稿を書くにあたって、参考にしたWWWページのURL を以下に挙げる。これ らに注目しておけば、 NetBSD/Sun3のバージョンアップ情報などが得られるであ ろう。

http://www.netbsd.org/
NetBSD.orgの公式ホームページ
http://www.netbsd.org/Ports/sun3/
NetBSD/sun3の公式WWWページ

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



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