超小型 FreeBSDマシンを作る

UPDATE版
(このページは更新されません)

UNIX Magazine 2000年 10月号の特集 「いつでも使えるインターネット」 の中で Linuxを使った超小型の ルータが紹介されていました。 3.5inch FD 8枚分くらいの大きさで 2Ether を持った PC/AT互換機 の様です。 これに FreeBSDを入れれば、超小型の FreeBSD マシンとして 使えるはずです。

子羊ルータ LAMB-RT-01

Linux を使った超小型のルータとは ワイルドラボ社の 子羊ルータ LAMB-RT-01 シリーズです。 購入は 同社の Webから または SPモデルのみ 秋葉原にあるアミュレット で出来ます。 外形は 93x91x30(mm) (取扱説明書より)と小さく 側面に Serial port, 背面に 10BaseT Ether x 2, ステータスLED, SHUTDOWN SW, 電源コネクタが ありました。電源は ACアダプタ経由で供給されます。 ステータスLED は shutdown などをするときに その進行状況を知らせる ためのもので、 SHUTDOWN SW を押すと shutdownシーケンスに入り、 電源を切って良い状態になると 消灯する様になっています。 他に SW等 はなく、電源を切るには AC アダプタを抜いて切ります。

PHOTO1 左の写真は ケースのフタを開けたところです。 写真の下側が 正面側で、16MB のCF に Linux が入っている様です。 CF の右側に 上下に並んでいる chipが NIC 用のchipで NE2000互換 (RTL8019AS) と書いてあります。
PHOTO2 ケースから メインの基板を取り出し、その裏側の写真です。 基板の裏には DIMMタイプのソケットがあります。 そこに実装 されているのがドイツ製の PC/AT互換のモジュールということ です。
PHOTO3 DIMMソケットに実装されているCPUモジュールを取り出してみます。 右側に AMDのロゴの入ったモジュールが見えます。 これが CPUだと 思います。左側には シールが貼られた IC があります。 おそらく チップセットの ASICなのではないか、と思います。
PHOTO4 CPUモジュールの裏側の写真です。RAM らしい ICが実装されて います。 これが 16MBのメインメモリ用の ICだと思います。
PHOTO5 再び 組み立ててケースに収めます。 これでいろいろ遊んでみるには 16MB という容量は少なすぎる と思います。という訳で 別途購入しておいた Microdrive (340M) を入れてみました。
PHOTO6 このマシンは FDDがなく、IDEも 1ch しかありません。さらに、 NICも network boot に対応していません。 唯一起動可能な ドライブは CF (or Microdrive) です。 従って このマシン 単体では どんな OSもインストールすることが不可能 という ことになります。 そこで PCMCIA I/F を持った Note PCなど で予め OS を CF (Microdrive) に書き込み、それを 差し込んで 起動させるという方法を採ります。
途中の手順は あと回しにして、 とりあえず FreeBSD を Microdrive に書き込み、 Serial console の状態に設定して 起動させてみた結果です。
無事 Serial console で起動し、login できる状態に なりました。

dmsgの結果

dmesg の結果です。 CPU は AMD 486として認識されています。 取扱説明書にも i486互換/66MHz と記載されているので、正しく 認識されているのでしょう。
内蔵の NIC も それぞれ ISAバス上に ed0, ed1 として認識されて います。 IP アドレスを割り振って 他の PCと通信させてみたところ、 ちゃんと通信もできました。

# dmesg
Copyright (c) 1992-1999 FreeBSD Inc.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California. All rights reserved.
FreeBSD 3.5-RELEASE #4: Sun Oct  1 11:08:24 JST 2000
    root@??????.ryuchi.org:/usr/src/sys/compile/COMPAT
Timecounter "i8254"  frequency 1193182 Hz
CPU: AMD Unknown (486-class CPU)
  Origin = "AuthenticAMD"  Id = 0x4a4  Stepping = 4
  Features=0x0
real memory  = 16777216 (16384K bytes)
avail memory = 14106624 (13776K bytes)
Preloaded elf kernel "kernel" at 0xc0273000.
Probing for PnP devices:
Probing for devices on the ISA bus:
sc0 not found
ed0 at 0x300-0x31f irq 10 on isa
ed0: address 00:30:f5:00:3b:21, type NE2000 (16 bit) 
ed1 at 0x200-0x21f irq 3 on isa
ed1: address 00:30:f5:00:3b:20, type NE2000 (16 bit) 
atkbdc0 at 0x60-0x6f on motherboard
atkbd0 irq 1 on isa
psm0 not found
sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
sio0: type 16550A, console
wdc0 at 0x1f0-0x1f7 irq 14 on isa
wdc0: unit 0 (wd0): <IBM-DMDM-10340>
wd0: 342MB (700560 sectors), 695 cyls, 16 heads, 63 S/T, 512 B/S
vga0 not found
npx0 on motherboard
npx0: 387 emulator
RTC BIOS diagnostic error 20<config_unit>
changing root device to wd0s1a
stray irq 7
# 

FreeBSDマシンとして

HDDが CF である、FDDがない、KBがない、Video がないなど ちょっと特殊な事情があるものの、基本的には ごく普通のPC/AT 互換機です。FreeBSD で使うときも Serial console で使う分には 普通のPC/AT互換機として使えます。
スペックとしては 下記の様な感じ....
CPU i486/66MHz (SX互換らしい)
メモリ 16MB
HDD CF (Microdrive対応)
FDD None
キーボード None
ビデオ None
シリアル 1ch
パラレル 1ch (コネクタは実装されていない)
NIC NE2000 互換 x2
その後、 カーネルのソースコードを copy して カーネルの make をさせて みました。 ちょっと時間がかかるけど、 ちゃんと コンパイルすることも できました。
NICまわりは それなりに性能が出ている様です。 13MBあるファイルを コピーさせたところ 500kbytes/sec 位の速度が出ていた様です。
参考文献など