trunk では evbarm port の一部になってます。だいぶ obsolete してます。
「dd の if/of が逆だった」「disklabel のオプションが間違っていた」のを修正 (enami さんに感謝。というか三ヶ月くらい忘れててすみません)。
2005/10/22 ごろの current で確認しました。
ある程度 NetBSD の知識があること前提。ない奴は 3 年 POM れ。
Giga LANDISK
NetBSD/i386 (ext2fs が読み書きできること)
current のソース
20050816-nbsd-gigalandisk.tar.bz2
20051017-rs5c372.c.diff.bz2 (最近は不要だと思う)
DHCP が使える LAN 環境(動作確認に必要)
smbclient(動作確認に必要)
プラスドライバーとバラす勇気
シリアルケーブルがあると便利
バラす前に動作確認しておくのは嗜みというもの。 Windows マシンがあるならば、説明書のとおりセットアップしてみるのもよい。
固定アドレスを振っておくのが無難。dhcpd がいる状態で Giga LANDISK を起動すると Mac アドレスがわかるので以下略。 以下の例ではホスト名を ichigo、アドレスを 192.168.17.11 とする。
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 のログを見れば十分という気もする。
NetBSD マシン上でふつーにクロスで作ればいい(不親切)。
current のソースを展開
20050816-nbsd-gigalandisk.tar.bz2 を展開
pax -rwpe あたりを使って後者を前者に重ね合わせコピーする
src/build.sh に gigalandisk を追加する
カーネルコンフィグに rootdev を明記しておかないとハマる
最近の current だと SYMTAB_SPACE が足りないので 512000 くらいにしとく
最近の current だと sys/arch/gigalandisk/conf/std.gigalandisk に conf/std のインクルードを追加しとかないとダメ
/etc/mk.conf で WARNS=0 しといたほうがいいね
obio.c で「locdesc_t なんてシラネーヨ」って言われたら、 locdesc_t を int にする
上下のプラスチック製の蓋を止めているネジが背面にあるので、それを外す。
プラスチック製の蓋は後ろにスライドすると外れる。
側板は後ろを少し浮き上がらせて引っ張ると外れる。
HDD は四本のネジを外して線を抜く。 例によって IDE のケーブルが抜きにくいけど根性で引っこ抜け。 電源線はコネクタの両脇を摘まんで少しずつ揺り動かしながら引っ張れば抜ける。
元に戻せるよう念のためバックアップ。 Linux での手順が ここ にあるので併せて読むと良いかも。ここでは 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
ファイル名は上の記事と揃えてみた。
パーティション 0 はブートに必要なのでそのままにしておいて、 残りのパーティションを開放する。 fdisk -u wd1 で、5 から順番に 1 まで開放するとよい。 fdisk の使い方は自分でなんとかしてくれ。
開放したら、パーティション 1 に sysid 169 で残り全部を割り当てる。
in-core label はこの時点で wd1e が DOS パーティション 0 になっているはずだが、正直邪魔なので wd1i あたりにリネームしておく。 i は IPL の i。 たくさんパーティションを切りたいパーティションフェチなら、 もっと後ろのパーティションにしておいてもよい。
disklabel -iI wd1 する
? で使い方を読む
P でパーティションテーブルを表示する
i で wd1i を wd1e と全く同じ値に設定する
e で wd1e を unused にしておく
ここで 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
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
とりあえずこんな感じ:
/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 はマウントしない。
後の作業を telnet でやるなら、 一般ユーザを追加しないとルートになれない(ttys 書き換えてもいいけど)。 シリアルケーブル持ってるなら後でもいい。 vipw -d /mnt でてきとーなユーザを追加して、 vi /mnt/etc/group でそいつを wheel に入れておくこと。
とりあえず 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 するといい。