検索

Google
Web www.icefree.org

RSS of recent changes

 

NetBSD/sparc

2017-06-20 (火) 23:23:54 (2991d)

 このページは旧サイトからの転載です。元ページの最終更新は1999-11-26でした。


 ELC にインストールして NetBSD の布教活動をする話です。さあ、あなたも学校などで腐りかけているマシンにインストールしてみましょう。xdmを立ち上げておいて、SunOS4のバイナリも動くようにしておけば見た目ではバレません。一応、Y2K対策だとか、IPv6に対応するためだとかいう大義名分もあります。

ターゲットの捕捉

 折角なので、SPARCStation370 のスペックを調べたときに書いておいた情報をあげておきます。この手の情報はSunHELP(http://www.sunhelp.net/) に行くと良く分かります。

主要SSのスペック比較(*1)

CPUMIPSMFLOPSArch
SLCMB86901A(20)
or L64801
12.51.24c
IPCMB86901A(25)
or L64801
15.81.74c
SS1+L64801(25)
or Weitek3172
15.81.74c
SS370CY7C601(25)
TI8847
162.64
ELCMB83903(33)
or Weitek W8701
2134c
IPXMB86903(40)
or Weitek W8701
28.54.24c
SS2CY7C601(40)
TMS390C601A
28.54.24c
ClassicmicroSPARC(50)59.14.64m
SS5microSPARC2(70)4m
SS10SuperSPARC(33)4m
SS20SuperSPARC(50)86.14m

(*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バイトです。

/sd0a15MB
swapsd0b31MB
/usrsd0g151MB

 /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-filegzipped[MB]uncompressed[MB]
base10.431.3
comp7.928.0
etc0.0570.348
games3.17.8
man2.510.4
misc2.28.6
text1.04.0
xbase2.88.8
xcomp1.87.7
xcontrib0.20.7
xfont5.97.3
xserver3.38.7
SUM41.2123.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 から、ルート以外のエントリは勝手にマウントされるので、ここでは特に設定することはありません。