NetBSD/sparc
このページは旧サイトからの転載です。元ページの最終更新は1999-11-26でした。
ELC にインストールして NetBSD の布教活動をする話です。さあ、あなたも学校などで腐りかけているマシンにインストールしてみましょう。xdmを立ち上げておいて、SunOS4のバイナリも動くようにしておけば見た目ではバレません。一応、Y2K対策だとか、IPv6に対応するためだとかいう大義名分もあります。
ターゲットの捕捉 †
折角なので、SPARCStation370 のスペックを調べたときに書いておいた情報をあげておきます。この手の情報はSunHELP(http://www.sunhelp.net/) に行くと良く分かります。
主要SSのスペック比較(*1)
CPU | MIPS | MFLOPS | Arch | |
SLC | MB86901A(20) or L64801 | 12.5 | 1.2 | 4c |
IPC | MB86901A(25) or L64801 | 15.8 | 1.7 | 4c |
SS1+ | L64801(25) or Weitek3172 | 15.8 | 1.7 | 4c |
SS370 | CY7C601(25) TI8847 | 16 | 2.6 | 4 |
ELC | MB83903(33) or Weitek W8701 | 21 | 3 | 4c |
IPX | MB86903(40) or Weitek W8701 | 28.5 | 4.2 | 4c |
SS2 | CY7C601(40) TMS390C601A | 28.5 | 4.2 | 4c |
Classic | microSPARC(50) | 59.1 | 4.6 | 4m |
SS5 | microSPARC2(70) | 4m | ||
SS10 | SuperSPARC(33) | 4m | ||
SS20 | SuperSPARC(50) | 86.1 | 4m |
(*1)モデルによってCPUが異なることがありますが、適当なモデルを選んであります。大抵は一番性能の低いものを選んであります。
今の時代SS10以下のマシンなんて使わないですね。普通は(^^;
でも、そんなことは気にせずに、ELCにインストールします。だいたい家でNetBSDをいれて使ってるマシンの方が遅いし。
ちなみに、ELCのメモリは8MB、HDDは200MBです。
インストール記録の保存 †
インストール時にはログを取っておくものですが、SparcStationの場合は、キーボードを外して、シリアル端子にリバースケーブルでダム端末等を繋いで起動することで、全ログが簡単に取れます。
特殊キーの割当てがどうなっていたかは忘れました。SUNOSのオンラインマニュアルでも見てください。
まずはOS本体のインストール †
インストール方法にはいくつか方法がありますが、既存のSunOS4上から miniroot を作成して、その後、ftpで必要なファイルを転送する方法をとりました。
ディスクレスマシンも作ったので、その方法についても後で書きます。
下ごしらえ †
まず、SunOS上からスワップパーティションに miniroot を作成します。通常はスワップパーティションにつくりますが、実際にはどこでもOKです。ただし、マウントされているところに作るのは危険なので、sd0a は止めておきます。
初めは、普通に自分自身のスワップパーティションに miniroot を作成したのですが、miniroot の起動時に「BAD FORMAT」と言われて止まってしまいました。スワップパーティションに置いてあるデータが破壊されているようです。当然 miniroot 作成時に使う SunOS はシングルユーザモードにしていたのですが、dump がスワップパーティションを使っているのがまずかったのかもしれません。
dump を切ってもいいのですが、別のHDD(ID=2)を用意して、そこにインストールすることにしました。折角なのでSunOS上でフォーマットしてパーティションも新たに割り振っておきます。
formatコマンドでフォーマット(SunOS) †
パーティションは以下のように割り当てました。
partition a - starting cyl 0, # blocks 32400 (100/0/0) partition b - starting cyl 100, # blocks 64152 (198/0/0) partition c - starting cyl 0, # blocks 406296 (1254/0/0) partition d - starting cyl 0, # blocks 0 (0/0/0) partition e - starting cyl 0, # blocks 0 (0/0/0) partition f - starting cyl 0, # blocks 0 (0/0/0) partition g - starting cyl 298, # blocks 309744 (956/0/0) partition h - starting cyl 0, # blocks 0 (0/0/0)
容量に直すと大体以下のようになります。1ブロックは512バイトです。
/ | sd0a | 15MB |
swap | sd0b | 31MB |
/usr | sd0g | 151MB |
/usr がパーティションGなのは、単に元のHDDがGを使っていたからという理由です。普通はDやEから使います。
ちなみに、NetBSD/sparc では Dは普通に使えるようですが、PC98 の NetBSD では Dはディスク全体を表していました。PC98 では、CはNetBSD の使えるファイルシステム全体、DはDOS領域を含むディスク全体を表します。4.2BSDに由来するものらしいです。
フォーマットが終わったところで miniroot を書きます。
# dd if=/usr/tmp/miniroot-133.fs of=/dev/rsd2b bs=20b conv=sync # sync;sync;sync;halt ok boot disk:b netbsd -s
miniroot での起動・インストール †
これで NetBSD の miniroot が起動しました。miniroot とはいえNetBSD さえ動いてしまえば、あとの操作は慣れているので例えインストーラがなくてもどうにかなります。この辺がマルチプラットホームの良いところです。とはいえ面倒なのでインストーラは使いますけど(^^;
配布ファイルのサイズ
tgz-file | gzipped[MB] | uncompressed[MB] |
base | 10.4 | 31.3 |
comp | 7.9 | 28.0 |
etc | 0.057 | 0.348 |
games | 3.1 | 7.8 |
man | 2.5 | 10.4 |
misc | 2.2 | 8.6 |
text | 1.0 | 4.0 |
xbase | 2.8 | 8.8 |
xcomp | 1.8 | 7.7 |
xcontrib | 0.2 | 0.7 |
xfont | 5.9 | 7.3 |
xserver | 3.3 | 8.7 |
SUM | 41.2 | 123.7 |
X以外(表で言うと base から text まで)をインストールしたところで、リブートします。その前に、root 以外の wheel グループのユーザを1つ作っておきます。念のため、そのユーザでログイン、SU ができることも確認しておきます。
Tips †
ユーザ追加方法 †
1、vipw でユーザを追加、uid, gid, パスワード、ホームディレクトリを適当に設定。
2、passwd USER でパスワードの変更
3、/etc/group にグループの追加。
ユーザの区切りはスペースなしの , です。
ここで、wheel グループに登録しておかないと、su でルートになれません。
4、mkdir -p /usr/home/USER などのようにホームディレクトリの作成。
5、/usr/share/skel/dot.* をホームディレクトリに dot を除いた名前でコピー。
# sh # for file in /usr/share/skel/dot.*; do > nfile=`echo $file | sed -e 's/dot//'` > cp $file /usr/home/USER/$nfile > done
で多分できます。
6、chown -R UID:GID /usr/hoem/USER でファイルのオーナーの変更。
7、rlogin -l USER 127.0.0.1 でログインできることを確認。
8、su でスーパユーザになれることを確認。
Xのインストールと設定 †
HDDの容量が心許ないので、tgz-file のあるディスクをNFSでマウントしてから展開しました。インストーラによる展開で text.tgz の終わりでエラーが出ていたので、念のため text.tgz も展開します。
# sh # for file in text.tgz xbase.tgz xcomp.tgz xcontrib.tgz xfont.tgz xserver.tgz; do > cat $file | (cd /; tar --unlink -zxvpf -) > done
ELCはグレイスケールですが、/usr/X11R6/bin/X のリンクはそのままでOKです(Xsunへのリンクになっています)。XsunMono? にリンクを張り直したりすると動かなくなります。
また、/usr/X11R6 を /usr/X11 とするシンボリックリンクを作成しておきます。
# ln -s /usr/X11R6 /usr/X11
キーボードの配列が少しおかしいかもしれませんが、X上では直るので平気です。
xinit でXが起動することを確認します。
/etc/rc.conf で
xdm = YES
にしてリブートすれば、自動的に xdm が起動します。
SunOSのバイナリが動くようにする †
SunOSのサーバの /usr を /emu/sunos/usr にマウントすればNetBSDでの設定は終わりです。
HDDのフォーマット †
NetBSDでのHDDフォーマットの仕方。ローレベルフォーマットをしたい場合はあらかじめ行っておきます。
手順1(方法1)、disklabel
ディスクラベルを直接編集する方法です。
disklabel -e sd0
手順1(方法2)、fdisk
DOSパーティションを編集する方法です。恐らく NetBSD/sparc では使えません。DOSパーティションというものが存在しませんから(^^;。つまり、i386とかPC98での話です。
fdisk -u /dev/rsd0
手順2、newfs
newfs /dev/rsd0a
これを swap(rsd0b) と whole(rsd0c) 以外の NetBSD で使うパーティションについて行いま
す。
手順3、bootstrap の書き込み
このディスクからブートする場合には必要です。
/usr/mdec/instboot /usr/mdec/biosboot.sym /dev/rsd0a
NetBSD/sparc だと、
/usr/mdec/binstall ffs /mnt
などのようにするようです。当然 /mnt にマウントされている場合です。
ディスクレスクライアント †
ここで説明する際に使用するIPなど
ディスクレスクライアント
・ホスト名:diskless
・IPアドレス:192.168.1.2
・MACアドレス:01:23:45:67:89
・アーキテクチャ:sun4c
サーバ
・ホスト名:server
・IPアドレス:192.168.1.1
・OS:SUN OS 4.1.4
ディスクレスクライアントのブート処理を順に追って説明します。しかし、実際に設定を行う場合には、サーバ側の設定を最後まで行ってからブートしてください。
1、ROMでのブート †
OKプロンプトで以下のようにしてブートするだけです。
ok boot net netbsd
うまく動くようになったら、NVRAMの環境変数を変えて自動的にネットワークブートするようにしますが、とりあえずは手動で良いでしょう。
2、RARPによるIPアドレスの取得 †
ここで失敗している場合には
ARP/RARP timeout
などのように表示されます。
サーバ上で以下の2つのファイルを編集して、rarpd を動かします。
/etc/hosts の編集
192.168.1.2 diskless
/etc/ethers の編集
01:23:45:67:89 diskless
server# rarpd -a
3、TFTPによるブートイメージの取得 †
ここで失敗している場合には、何も表示されずに止まります。
配布されている installation/netboot/boot.net を /tftpboot 以下に名前を変えてコピーします。名前はIPアドレスを16進数に変えた6桁の数値と、ディスクレスマシンのアーキテクチャ名により決定します。
192.168.1.2 => C0A80102
アーキテクチャ => SUN4C
以上より、ファイル名は C0A80102.SUN4C になります。全て大文字で書きます。
server# mkdir /tftpboot server# cp boot.net /tftpboot server# cd /tftpboot server# ln -s boot.net C0A80102.SUN4C
/etc/inetd.conf の tftp を有効にします。また、起動するデーモンの引数が /tftpboot になっていることを確認します。
その後、この設定を
server# kill -HUP inetdのPID
で有効にします。
4、bootparam によるブートパラメータの取得 †
bootparam を設定する前に、ディスクレスマシンが使うファイルを作成します。ここでは /export/diskless/root をディスクレスマシンのルートにする場合で説明します。
面倒なので、既存の NetBSD/sparc マシンのHDDを丸ごと持ってきました。通常は、配布ファイル(base.tgz など)を展開して作ります。
# sh # for file *.tgz; do > cat $file | (cd /export/diskless/root; tar --unlink -zxvpf -) > done
というあたりでしょうか。-z オプションが使えない場合は、あらかじめ gzip で伸張しておくと良いでしょう。ユーザIDを再現するために、この作業はスーパユーザで行う必要があります。
swap も作成します。
# dd if=/dev/zero of=/export/diskless/swap bs=1024k count=16 # mkdir -p /export/diskless/root/swap
ディスクレスマシンの /etc 以下を編集します。
/export/diskless/root/etc/fsta server:/export/diskless/root / nfs rw 0 0 server:/export/diskless/swap swap sw,nfs rw 0
既存のHDDから持ってきた時には以下のファイルを直す必要があります。特に hostname と ifconfig.le0 の2つは必ず直す必要があります。配布ファイルから展開した場合には、他にも設定するファイルがあります。
/export/diskless/root/etc/hostname /export/diskless/root/etc/ifconfig.le0 /export/diskless/root/etc/hosts
bootparam サーバの設定
/etc/bootparams の編集
diskless root=server:/export/diskless/root\ swap=server:/export/diskless/swap
server# rpc.bootparamd
で、rpc.bootparamd を動かします。リブートでも構いません。
ちなみに、SunOS4では、/tftpboot ディレクトリが存在していると、起動時に rarpd と rpc.bootparamd を自動で起動してくれます。
5、ルート、スワップをNFSでマウントする †
bootparam で得た情報と、マウントした /etc/fstab から、ルート以外のエントリは勝手にマウントされるので、ここでは特に設定することはありません。