Last Modified: Sunday, 21-Nov-1999 18:02:06 JST

Install Note for NetBSD/newsmips

この文書は、桝田(h-masuda@ootani.nagata.kobe.jp)が、 NetBSD/newsmips を 導入する最に行った作業と気が付いた点などをまとめたものです。
本文書に従った行ったすべての作業についての責任は、桝田にはありません。 あくまで無保証です。 しかし、コメントなどありましたら、 桝田まで連絡して いただければありがたいです。

もくじ

準備

現状(based on NetBSD-1.3)の NetBSD/newsmips は、fd device driver が ないため、自力で起動することはできません。 また、boot code や /boot のコードも提供されていません。 従って、最初の導入を行うためには、NEWS-OS 4.x が起動するだけの HDD と、 それとは別に NetBSD/newsmips を入れるための HDD が必要です。 さらに、NEWS-OS 4.x の、 /usr/mdec.mips/boot, /usr/mdec.mips/boot0 も必要です。
ここでは、最終的に HDD(ID=0)から NetBSD/newsmips が動いて欲しいでしょう から、HDD(ID=1)に NEWS-OS 4.x を入れておくこととして書いていきます。

準備するもの

NEWS-OS 4.x の入った HDD の ID を変更

たまたま NEWS-OS 4.x が入った HDD が手元にあったけども、ID=0 となって いた場合は、以下の話での HDD の ID まわりの対応が変わってしまいます。 変更するのは非常に簡単なので、以下にかきます。
  1. とりあえず、NEWS-OS 4.x を起動する(HDDのIDは0)。
  2. /etc/fstab内の、sd00sd01に書き換える。
  3. sd01 系列の device file の作成を確認する。
    ( cd /dev; ./MAKEDEV sd01 )
これで再起動すれば、ID=1 の SCSI disk からブートできます。

NEWS-OS 4.x の起動

NEWS ROM monitor

詳しくは NEWS-OS アドミニストレータガイド を見てもらうのが確実ですが、 一応、必要最低限だけは書いておきます。
bo
ブートします。
off
電源を切ります。

必要なツールを手元に導入 (on NEWS-OS 4.x)

NEWS-OS 4.x に付属のツールだけではすべての作業はできません。 とりあえず、以下に挙げるツールを、NEWS-OS 4.x 上で作成しておきます。
どれも GNU のツールですので、基本的に、 ./configure mips-sony-bsd && make && make install で作成可能です。
gzip
distribution の圧縮を伸長するのに必要です。
gzip-1.2.4.tar.gz を展開するだけでできます。
bash
MAKEDEV が想定している sh(1) の仕様が違う ので必要となります。
bash-2.01.1.tar.gz を展開するだけでできます。
GNUtar
distribution の tar ファイルを展開するのに必要です。 NEWS-OS 4.x 付属の /usr/bin/tar では正しく 展開できません。
tar-1.12.tar.gz を展開するだけでは、残念ながら、 mktime(3)がなかったり、 make(1)の仕様の違いにより、 コンパイルに失敗します。 従って、 libmissing.a や GNUmake が必要です。 env LIBS="-L/usr/local/lib -lmissing" ./configure && gmake MAKE=gmake && gmake MAKE=gmake install
GNUmake
GNUtar をコンパイルする為に必要です。
make-3.76.1.tar.gz を展開し、configure 時に env LIBS="-lmld" ./configure && make && make install として libmld.a をリンクするようにすればコンパイルできます。
SCSI HDD の geometry 情報を得るためのツールがあると嬉しいかも知れません。

HDD の 論理分割と newfs

NEWS-OS 4.x も、tahoe label が書けますので、disklabel(8)を とりあえず NEWS-OS 4.x から行います。 論理分割は、 /(/dev/rsd00a),swap(/dev/rsd00b),/var(/dev/rsd00d),/usr(/dev/rsd00f) と分割してみます。 メモリがあるならば、/tmp は md で行ってもいいですが、どうやら、 compile 時などに /usr/libexec/cc1 が Interrupted System Call(errno=4) などで落ちるので、/tmp(/dev/rsd00e)を別途用意してもいいでしょう。 ここでは、/ に同居させます。 (md でやるつもりで動かし始めたけど、動き出してからうまくいかないことが 判明したので、/tmp が別途用意できなかっただけ、ともいいます。既に 直っているかも知れませんけど。)
/
20MB ぐらい使われますので、kernel の入れ換え用などを想定して、 32MB。/tmp を同居させるなら、48MB ぐらいでしょうか。
/var
2MB ほど使われます。mail server などの server 用途を考えるなら、 100MB 程度あると安心です。ユーザの HOME directory を、/var/home などに入れるなら、もうちょいあるといいかもしれません。
/usr
256MB くらいあれば、full install 可能でしょう。 X Window System の server は用意されてませんが、client だけなら 32MB くらいで導入可能です。 source を展開して current をおっかけたい、とか思うと、source 領域に 320MB くらい、それ以外に 300MB くらいの compile 用領域が 必要となります。 pkg までいくと予想もつきません (^^;)
swap
まあ、main memory より多くないと、crash dump が出来ませんので、 それ以上にしましょう。
次に論理分割をした partition に対してファイルシステムを作成します。 newfs(8) を、NEWS-OS 4.x から行った partition も使えますが、 mount_union(8)などが出来ないので、とりあえず、/ partition のみ newfs(8) をかけておきます。 newfs /dev/rsd00a 他の partition に対しては、NetBSD/newsmips が起動してから newfs(8) を実行することにします。

趣味の論理分割

いまどきの SCSI disk は、単純に cylinder 毎に同じ sector 数ではない ものがほとんどです。ですが、UNIX の論理 partition は未だに cylinder 単位の切り方になっています。従って、1 cylinder を、head数 x sector数 としたくても、disk 自体の geometry とはどうせ一致させることはできま せん。

さて、いまどきの SCSI disk も容量が十分に大きいので、少々の無駄など に気を使っても仕方ないかも知れませんが、すみまで使えてないと気持ち 悪いので、以下の方針で disklabel の値を決めていきます。

NetBSD/newsmips の導入

とりあえず、NetBSD/newsmips の snapshot を導入する予定のNEWS-OS 4.xの動作している計算機からアクセス可能なところに コピーしておきます。

HDD の中身の準備

$ mount /dev/sd00a /mnt
$ mkdir /mnt/usr /mnt/var
$ mount /dev/sd00d /mnt/var
$ mount /dev/sd00e /mnt/usr
$ cd /mnt
$ for d in /dist/snapshot/*.tgz; do
gnutar zxfp $d
done
$ ln -s netbsd vmunix
$ mv /bin/sh /bin/sh- && cp /usr/local/bin/bash /bin/sh
$ cd /mnt/dev
$ sh MAKEDEV all
$ mv /bin/sh- /bin/sh
/bin/shbash に入れ換える手続きは若干強引ですが、 /mnt/dev/MAKEDEV の中に記述されているshを全部 bashに替えるか、PATHの記述に、/usr/local/bin などを入れて、ここに、bashsh として置く、など の対応でもいけます。

設定ファイルの編集

networkに接続されてないなどの状況を確認の後、再起動すると NetBSD/newsmips が、single user mode で動き出すはずです。

/etc/fstab
/etc/rc.conf
適当に変更する。
/etc/ifconfig.le0
le0 の network 設定値をかく。
/etc/group
root に su できるユーザを wheel group に登録しておく。
/etc/hosts.allow
アクセス制限をしたければ適当にかく。
/etc/hosts.deny
アクセス制限をしたければ適当にかく。
/etc/resolv.conf
手近に DNS サーバがあれば適当にかく。
passwd root
root のパスワードをつけておく。
vipw
ユーザの entry や、NIS map を見るための設定を しておく。

最後に

関連しそうな情報源を書いておきます。
先頭へ

h-masuda@ootani.nagata.kobe.jp
h-masuda@jm3spa.felix.or.jp
h-masuda@mangajin.org
h-masuda@mangajin.net
h-masuda@toklab.ics.es.osaka-u.ac.jp
h-masuda@rd.ecip.osaka-u.ac.jp