13日(土)新ルータ機組み上げ

斜陽のMacPlus改ルーター
稼働中のMacPlus改G3 2NICルータ機のご臨終が近い。
HDD (元々G4 Cubeに入っていた物なので10年モノくらい)が時折I/Oエラーでうんともすんとも言わなくなったり、起動時に認識されなくなることが出てきた。
今さら3.5inch IDE HDDを新品で買い替えるのもなんだし、マシンその物も古いし(ガワでなく中身が)ということで、新しく組むことにした。
まず、マザーのサイズはMini-ITXで決定事項。
でもってsocket-Pで贅沢にP8400辺りでも積もうかなどと夢を見てみたが、それだとマザーとCPUだけで4万もする。
ルータにするには贅沢すぎる。
atomなら安い。
「atomで2NICが乗っているマザー」で検索してヒットした物をとりあえず注文してしまう。
そして後から気づいたのだが注文したマザーにはOS起動可能なCFソケットがついていたので、CFも買うことに。
筐体はふと目についたやつを勢いで、Trancendの300X CF 8GBと一緒に注文。

ブツ到着。
パーツ3個だけ。
お手軽である。
マザーはAIMB-210G2-S6A1E。
変態マザーの部類のようで納期は一週間だった。
ちなみにNICはRealtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)が2個。

CF装着。

元々X300に入っていたDDR2 1GBメモリを装着。

筐体のシャシーを引き出す。
この時点で、すでに嫌な予感がよぎる。
マザーをのっけると……予感的中。
マザー裏側のCFソケットがつかえて固定できません。
案の定こうなるんじゃないカナー、とは思ってはいたが。
この筐体、「オープンでいじりやすく叩き台にもってこい!」というのがウリらしいが、実際のところ組み心地に関してかなり設計が悪いと思われる。
製品の質、出来その物はよいのだが。
とりあえずそのうちブッシュなりスペーサーなりを買ってきてちゃんと固定するとして、今のとこは後部だけネジ止めしておく。
そのうちというところがかなりあやしい。

うわっ!電源ソケットがあわんっ……

と慌てていたら、コネクタが分離した。
焦った。
マシンを組む(他人のも含む)のはだいたい3年おきくらいなので、この辺のことはさっぱり覚えない。

その他、フロントパネル用のUSB、オーディオ(AC97)、パワー、リセットボタンのケーブル類を接続。
IDEのケーブルはOSインストールのために手持ちの光学ドライブを接続しようと思って付けたのだが、Cubeから取っ払ったスリムドライブはよく考えると変換基盤がないのでつなげられず、手持ちの5インチPlexstarはすでに死亡していて結局使えなかった。
ちなみにこの筐体は5インチベイは一応あるものの、IDEフラットケーブルは取り回せないと思われる。
ファンは上部のでかいのは最低速、後部のDCDC基盤用のファンは回すとかなりうるさいし、さほど発熱しないようなので電源は繋がず。
試しに完全にファン無しで30分ほど動かして見たところ、CPU周辺が46度辺りまで上がってほぼ止まった。
おそらくそのまま1日くらい放置しておくと徐々に56ー7度辺りまで上がると思われる。
マザーに液コンが載っていて危険なため完全ファン無し稼働はやめておく。

BIOS画面。
Hyper-Threading Enabledが見える。
Atom270はHTによって1コアのくせに2コアあるかのように振る舞う。

組みあがってリモートから整備中の図。
ルーターとしてかなり意味のない容姿であるところがよい。
MacPlusに負けず劣らずインパクトはある。
ルーターにインパクトはいらないのだが。
光学ドライブ無しでどうやってOSをインストールするのかといえば、X300にて外部USB-HDDにLinuxをインストールし、それをルータ機に接続、起動、CFにシステムを丸コピー、という感じで執り行う。
OSはSlackware-12.2を放り込んで、kernelはリリースされたばかりの2.6.30に。
kernelのコンフィグはCore2扱いでSMP、HTをオン。
しかし、MBRからのブートシーケンスが立ち上がらない。
X300でも同じ。
標準で組み込まれるliloがダメっぽい。
liloはあまりよく知らないのでなんともいえないのだが。
ほんじゃまあ、慣れているgrubをインストールして起動……しません。
X300では起動するがルータ機で起動しない。
どうも64bit機でインストールしているせいなのか、32bit機でstage2を読み込めないという感じである。
linux32の32bit環境でしっかり32bitターゲット指定でビルドしてもダメ。
とにかくダメ。
だったら、あまりビルド環境に依存しなさそうなsyslinuxを一旦USBメモリにインストールして、initramfsからUSB-HDD内のシステムを呼び出すようにしよう、とやってみたところカーネルの起動まではこぎつけた。
しかしUSB-HDDが認識されない。
なんでかなー、と思ったらSlackのmkinitrdで作ったinitrdが読み込まれてはいるのに実行されておらず、USB関係ドライバが読み込まれていなかった。
またか。
よくわからんがbusyboxのせいにちがいない。
仕方なく自前のbash式のブート機構を組み直してinitrdを作って……やっと起動できた。
変換基盤を買ってきてスリムドライブを搭載してしまえば話が早かったのだが、近所の某工房に見に行ってみるもやはり置いておらず。
もうあそこには買い物行きません。
品揃え悪すぎである。
ようやくルータ機本体で整備。
ドライブがCFカードなため、SSDと同じ扱いかな?と思い、
ここを参照して初回のfdiskは、
# fdisk -H 224 -S 56 /dev/sda
とやる。
X300も同じ風にしてある。
いわゆるセクタ境界問題への対処らしいが、ちゃんと効果があるのかCFでも同じなのかどうかは不明。
ともあれ、1個目のパーティションを100MBでext2ブート用、2個目のパーティションを残りext4システムとして切る。
でもってシステムをCFに丸コピー。
気分よし。
ブート機構はgrubをインストール。
実機でやると普通に素直に起動した。
書き換え寿命問題に関しては、ext4でマウントオプションにnoload,noatime,nodiratimeを付けているくらいで、特に何もしておらず。
/var/log辺りは何か考えないとダメかもである。
dfすると以下のとおり。
# df -ahT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 7.4G 4.1G 3.0G 59% /
/proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
usbfs usbfs 0 0 0 - /proc/bus/usb
/dev/sda1 ext2 101M 34M 63M 35% /boot
tmpfs tmpfs 501M 0 501M 0% /dev/shm
ところでCFをHDD代わりにすると、べらぼうに遅く正味使えないともっぱらの評判であるが、
# time tar xjf linux-2.6.30.tar.bz2
をやってみたところ、ルータ機CF(Transcend TS8GCF300)で1分43秒、X300(SAMSUNG MCCOE64G8MPP-0VA) で41秒だった。
削除はルータ機が3~4秒、X300が1.5秒だった。
どちらもext4。
体感的には遅めの2.5HDDよりさらにちょっと遅いという感じであるが、遅くてまるで使えないというほどではない。
(追記:X300の話だがwrite cacheをオフにしてあったのをオンにして再度やってみたところ、展開に27秒、削除に1秒だった。
このSSDではwrite(read) cacheはオンにしておくべきらしい。。。
いやしかし、そんなことでこんなに変わるか?と再度オフにしてやってみると、ほとんど変わらなかった。
どゆこっちゃ)
atomのパフォーマンスは、速いといえば速いし、遅いといえば遅い。
カーネルのビルドなんかをさせてみるとX300(C2D 1.2GHz L7100)の半分ちょいくらいの速度で速くはない。
いやまあ、それでも速いのだが。
MacPlus(G3 250MHz)でiptablesのルールの読み込みがかったるかったのが、一瞬で終わるところはさすがである。
当たり前か。
という感じで、OSのセットアップは2時間で済ませるつもりだったのが、手抜き→修正、手抜き→修正、の繰り返しで結局丸二日つぶれたのであった。