NetBSD/gigalandisk のインストール

注意事項

必要なもの

Giga LANDISK の動作確認

バラす前に動作確認しておくのは嗜みというもの。 Windows マシンがあるならば、説明書のとおりセットアップしてみるのもよい。

DHCP でアドレスをふる

固定アドレスを振っておくのが無難。dhcpd がいる状態で Giga LANDISK を起動すると Mac アドレスがわかるので以下略。 以下の例ではホスト名を ichigo、アドレスを 192.168.17.11 とする。

smbclient で中が見えることを確認する

ichigo の中を見る。見たのね……アレを。

% smbclient '\\ichigo\disk' -U guest
added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0
can't determine netmask for sip0
Password: (空)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.14a-Debian]
smb: \> ls
  .                                   D        0  Thu Jun 23 14:42:20 2005
  ..                                  D        0  Fri Sep  2 16:07:54 2005

                58576 blocks of size 4194304. 57973 blocks available
smb: \> 

こんな感じで見えてれば多分正常。 まあ smbclient するまでもなく、dhcpd のログを見れば十分という気もする。

sets を作っておく

NetBSD マシン上でふつーにクロスで作ればいい(不親切)。

ポイント

バラして HDD を取り出す

バックアップ

元に戻せるよう念のためバックアップ。 Linux での手順が ここ にあるので併せて読むと良いかも。ここでは NetBSD での手順。

HDD を NetBSD マシンに挿す

Giga LANDISK の MBR のパーティションテーブルの構造は PC と互換性がある。 よって、NetBSD/i386 が良い。sparc とかの人は根性で解決せよ。 以下 wd1 として認識しているものとする。

パーティションテーブルを記録しておく

fdisk -v wd1 の内容をファイルに落としておくと良い。 戻すときは手で戻せ。

内蔵ソフトをバックアップ

注意: 公開時、if と of が逆でした。今は直ってます。

たぶん放っておくと wd1e がパーティション 0、wd1f がパーティション 1、 wd1g がパーティション 2 (swap)、wd1h がパーティション 4、 wd1i がパーティション 5 になってるので、 このうち wd1e と wd1f と wd1h のディスクイメージを吸い出しておく (私の記憶があいまいだから正しいかどうかわかんないので注意)。 要するに DOS パーティション 0, 1, 4 を吸い出す。 すごく古い NetBSD を使ってる奴は自分で in-core label 書け。

dd bs=63b if=/dev/wd1e of=sda1.dd
dd bs=63b if=/dev/wd1f of=sda2.dd
dd bs=63b if=/dev/wd1h of=sda5.dd

ファイル名は上の記事と揃えてみた。

パーティションの切り直し

DOS パーティションの切り直し

パーティション 0 はブートに必要なのでそのままにしておいて、 残りのパーティションを開放する。 fdisk -u wd1 で、5 から順番に 1 まで開放するとよい。 fdisk の使い方は自分でなんとかしてくれ。

開放したら、パーティション 1 に sysid 169 で残り全部を割り当てる。

disklabel を書く

ブートパーティションのリネーム

in-core label はこの時点で wd1e が DOS パーティション 0 になっているはずだが、正直邪魔なので wd1i あたりにリネームしておく。 i は IPL の i。 たくさんパーティションを切りたいパーティションフェチなら、 もっと後ろのパーティションにしておいてもよい。

ここで disklabel を終了せず、そのまま次の作業に進むとよい。

各パーティションの割り当て

私は単純に /, swap, /usr, /var, /home をそれぞれ wd1a, wd1b, wd1e, wd1f, wd1g に割り当てた。/home 以外は 1GByte、/home は残り全部。

#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   2097152    417690     4.2BSD      0     0     0  # (Cyl.    414*-   2494*)
 b:   2097152   2514842       swap                     # (Cyl.   2494*-   4575*)
 c: 489817062    417690     unused      0     0        # (Cyl.    414*- 486343)
 d: 490234752         0     unused      0     0        # (Cyl.      0 - 486343)
 e:   2097152   4611994     4.2BSD      0     0     0  # (Cyl.   4575*-   6655*)
 f:   2097152   6709146     4.2BSD      0     0     0  # (Cyl.   6655*-   8736*)
 g: 481428454   8806298     4.2BSD      0     0     0  # (Cyl.   8736*- 486343)
 i:    417627        63 Linux Ext2      0     0        # (Cyl.      0*-    414*)

disklabel を書き込んで終了。

インストール

ファイルシステムの作成

newfs /dev/rwd1a
newfs /dev/rwd1e
newfs /dev/rwd1f
newfs /dev/rwd1g

sets の展開と MAKEDEV

mount /dev/rwd1a /mnt
mkdir /mnt/usr
mkdir /mnt/var
mount /dev/rwd1e /mnt/usr
mount /dev/rwd1f /mnt/var
cd /mnt
tar zxfp どこか/sets/base.tgz
tar zxfp どこか/sets/etc.tgz
tar zxfp どこか/sets/comp.tgz
tar zxfp どこか/sets/games.tgz
tar zxfp どこか/sets/man.tgz
tar zxfp どこか/sets/misc.tgz
tar zxfp どこか/sets/text.tgz
cd dev
./MAKEDEV all

etc の設定

fstab

とりあえずこんな感じ:

/dev/wd0a / ffs rw,noatime 1 2
/dev/wd0b none swap sw 0 0
/dev/wd0b none swap dp 0 0
/dev/wd0e /usr ffs rw,noatime 1 1 
/dev/wd0f /var ffs rw,noatime 1 1 
#/dev/wd0g /home ffs rw,noatime 1 3

動かなかったとき、 でかいパーティションをマウントしてるとしょんぼりするので(f*ck!)、 とりあえず /home はマウントしない。

一般ユーザの追加と wheel への追加

後の作業を telnet でやるなら、 一般ユーザを追加しないとルートになれない(ttys 書き換えてもいいけど)。 シリアルケーブル持ってるなら後でもいい。 vipw -d /mnt でてきとーなユーザを追加して、 vi /mnt/etc/group でそいつを wheel に入れておくこと。

rc.conf と inetd.conf

とりあえず telnet でログインできる状態にしとく。 rc.conf には、末尾に以下のようなのを追加:

rc_configured=YES
hostname="ichigo"
auto_ifconfig=YES
ifconfig_wm0="inet 192.168.17.11 netmask 0xffffff00"
sshd=YES                        sshd_flags=""
powerd=YES

ifconfig とか hostname については myname とか使うなりなんなり好みでなんとかしてください。

inetd.conf は telnet を有効にしておくこと。 ssh があるのでいらないという噂もあるけど。

カーネルのインストール

パーティション 0 のルートにある zImage というファイルを置き換える。 生のバイナリイメージじゃないと駄目なので .bin 付きのほうを使う。 インストールするファイルを間違えないように。

cd /
umount /mnt
mount /dev/wd1i /mnt
cd /mnt
mv zImage zImage.linux
zcat どっか/gigalandisk/binary/kernel/netbsd.bin-GENERIC.gz > zImage
cd /
umount /mnt

ブートするかどうかの確認

ここまでやっておけば、あとは HDD を戻して各種配線をつないで電源を入れるだけ。 リモートでログインして適当に設定してください。

その他

シリアルの結線

ファンのすぐ横にある DIP ピッチ 5 ピンのスルーホールがシリアル。 ▼マークのある側から Vcc, RxD, TxD, GND, ダミー。 逆挿ししても壊れないのがポイント。 3.3V ロジックなので、 Giga じゃない LANDISK の場合 を参考にしててきとーにガンバレ。スルーホールのピンアサインが違うのと、 この回路図だと LANDISK 側が DCE 端になっていることに注意 (つまり別のコンピュータ(DTE)とはストレートケーブルでつなぐ)。 DTE 端にしたければ D-SUB の 2 と 3 を入れ換える。

シリアルコンソールの設定

115200bps ノンパリ。NetBSD マシンなら /etc/remote に

console:dv=/dev/tty00:br#115200:pa=none:dc:

とか書いといて tip console するといい。