SVX日記
2007-01-03(Wed) 新年早々サーバ立ち上げ
最初は見よう見まねで、ハウツー本を片手に構築したRedHat7.2。ハードは余っていたAthronの600MHzマシン。よく覚えていないが、覚えたばかりのPerlで自分用のサービスをいくつか立ち上げていた気がする。
2代目が現在のサーバ。RedHatのサポート打ち切りに失望したので、OSはDebian3に変更。ハードは以前に主力で使っていたCUB-XマザーのCPUをPentiumIIIの1GHzに載せ替えたもの。獲物をRubyに持ち替え、ラジオの録音やら、テレビの録画やら、自製のグループウェアやらを載せて、イジリ倒している。これは現在運用中。
最初は適当なLinuxディストリビューションを入れて運用すればいいやと思っていたが、できれば仕事で使っているRHEL互換のCentOSで運用したい。そのためにx86互換CPUを積んだWRAPボードを選んだのだ。だが、そいつのストレージとする玄箱HGまで、ppc版RHELを導入したくなってきてしまった。ちゅーわけで、ネチネチと作業中なのである。
結果、できた。ちょっと苦労したが。最初はどうにかしてanacondaを立ち上げて、とか、擬似的にcdromブートして、とかを試したが、ギリギリのトコロで動かない。結局、FedoraCore6の導入事例を参考にして、空の状態に各RPMを貼り付けていく方法を取った。
で、こちらは一歩先にRHEL4を導入したWRAP。改めて起動を確認して、クロージャに収めた。基本的に、ルートファイルシステムは玄箱からNFS経由でアクセスするので、ディスクレス。今となっては絶対に手に入らない8MのCFからカーネルをブートする仕組み。クロージャはWRAP専用の赤いヤツ。しばらく前に購入したのでネジをどこかにやってしまってアセって探しつつ、クロージャの作りが甘いのでシリアルポート付近をリーマでウリウリやったりしつつしながら、どうにか収める……ううむ、シンプルでカッチョイイ。
こちらも見た目はフツーの玄箱HGだが、RHEL相当のLinuxで駆動し、WRAPを起動するためのx86環境も入っているというシロモノに仕上がっている。奇妙なことにフタリとも揃って266MHzで128MBというスペック。協力して533MHzで256MBというワケである(?)。
このフタリをつなぐのは、LANケーブル。完成形ではWRAPがルータの役目をするので、DMZに当たる場所に玄箱をつなぐのだ。DMZには玄箱しかつながない予定なのでクロスケーブル、しかも非常に短いヤツが欲しいトコロなのだが……というわけで、ジャーン!! 先日、秋葉の某所で買ってきたLAN工事用のペンチ。探し回った挙句、なんと1,029円で入手したアイテムである。モジュラプラグも10個で261円。貧乏くさいことこの上ないが安さは正義だ。
で、導通テスト。当然ながらケーブルテスタなんぞ買ってない。ジャンクショップで入手したモジュラジャックのパーツ。RJ45とRJ12が並んでいるばかりかLEDまで付いていて1個10円である。そいつとテスタでチマチマと導通チェック……1日に100本も作るんでなきゃ、これで十分なんじゃ!! ……オッケェイッ!!
2007-01-07(Sun) 一日四千名様限定提供用サーバ
さて、念願の省電力、省スペースのRHEL相当サーバが立ち上がった。しかも面白みのあるデュアル構成。さーて、なにから始めようかな。まずは、名前解決ができないと構築作業するにもうっとおしいからDNSの立ち上げからかな。
そういえば、WRAPはshutdown時にリセットがかからない。つまりアダプタジャックを抜き差ししないと再起動しない。こいつはどうにかしないとカッコ悪い。そうそう、WRAPのマニュアルにリセットをかけるアセンブラコードが載ってたな。ちょいちょい、と。
ん? コンパイルできるけど、modprobeできない……あ、そか。2.6からモジュールに関する作法が変わっているのか。そういえば、2.6カーネルのモジュールは、xxx.oでなく、xxx.koだった気がするわい。関連ドキュメントは……/usr/src/linux/Documentation/kbuild/modules.txtに説明がある。Makefileの作り方にコツがあるみたいだな……ちょいちょい、と。
ダメ。どうも、実行中のカーネルと、参照しているカーネルのソースツリーの内容が違うからのようだ。マジックコードの中のアーキテクチャが合わない。そういえばいま使ってるカーネルは、ノートPCで再コンパイルしたものだが、空きディスク容量の見積もりが甘くて、カーネルとモジュールは作れたものの、ソースのrpmの書き出し中にディスクフル起こして作成に失敗しちゃったんで手元にないんだよな。
カーネルっていえば縁起物だし、WRAP自らに再コンパイルさせてみるか。よっこらしょっと……こりゃ素晴らしく遅いな……(10時間後)……やっと終わったか……と、思ったら、モジュールの仕上げのあたりで失敗してて、カーネルすらできてない……なんで? ん? 名前解決ができなくなってるぞ!? わ!! メモリ不足を起こしてたのか!?
OOMKilerにBuildプロセスとnamedが殺されてる……nfsroot環境のマシンだと、swapの確保が一筋縄ではいかないんだよなぁ……nbdを試さなきゃかなぁ。でも、試そうにも玄箱に領域がないんだよな。ペンディング。
なんだか、環境の構築早々、いきなりコアなところに飛び込んでしまった。じゃ、次は軽めに玄箱でサウンドモジュールを使えるようにしてみようかな。先日、1980円で買ってきた「響音3」という製品だ。USBメモリほどの大きさで、音声の「入」出力ができるすぐれもの。この手の製品で「入力」があるのはうれしい。玄箱にラジオの録音をやらせることができるからだ。ジュークボックス化するのにも役立つしね。
……と、思ったら、オイラがココで拾ってきたカーネルには、サウンドコアモジュールが添付されてないじゃないか……また、カーネルの再コンパイルかよッ!! できれば玄箱の側もソースrpmからコンパイルしたいところだが……パッチを理解しつついじりだすとなると、また一週間コースなので、こっちは素直にkernel.orgのカーネルに、素直にパッチを当てて、サウンド関連のコンフィグをして再コンパイルする。
Device Drivers --->
Sound --->
<M> Sound card support
USB support --->
<M> USB Audio support
こんなもんかな。玄箱用パッチはRedhatのソースrpmと違って、余計なモジュールをほとんどコンパイルしないコンフィグなので、コンパイルは3時間くらい……遅いことに違いないけども。さて、終わったけど再起動は面倒だなぁ……設定だけして、次の何かの再起動タイミングに合わせて作業を進めよっかな。ペンディング。
さて、軽めの作業をするつもりだったのに、いつのまにかまたもやコアな作業に足を踏み入れているではないか。こんどこそ、軽めにtdiaryの移行作業をしよう。そう、この「SVX日記」のホストサーバを移行してみるのだ。ちなみに、しばらくは現用サーバのApacheをリバースプロキシに、リクエストを後ろに回して運用するつもりなので、これは試行でもなんでもなく本格的な移行作業の一環である。
tdiaryのバージョンが上がっていたのと、絵(写真)日記のためにオイラが使っていたのが添付されていた純正のimageプラグインでなく、image_xxだったことを再発見してちょっとつっかかったりしたが、無事、移行成功。Operaからページを開く……
……フロントページを表示するだけで20秒チョイもかかってしまう。これじゃ、使い物にならん……1分に3人弱しか閲覧できないとすれば、1日4000名しか閲覧できないことになってしまう。そりゃ、266MHzだから多少は遅いことを覚悟していたが、これほどまでとは……topで見ても、ほとんどがRubyのCPU負荷であり、改善の余地はない……mod_rubyとかでもダメだろうな、メモリ面でもキツいし……動的ページでなくしてしまえば実用レベルは保てるかもしれないが、それはちょっと大改造になるだろうからやりたくない。
ほんじゃ、WRAPでなく玄箱にやらせてみようか……よいしょっと……時間は半減したものの10秒を下らない。これでも移行するにはキビしすぎるなぁ……Rubyって重いのねぇ。久々に実感したよ。現サーバはPenIIIの1GHzだけど、アクセスがある度にファンがウナってたのは伊達じゃなかったんだねぇ。
ちゅーわけで、早々と移行は頓挫してしまったが……かくなる上は……ぽちっと。
2007-01-11(Thu) 次期サーバ「LHD-NAS160V」到着
なんだか、WRAPと玄箱HGによるサーバ構築は作業序盤で想定外のパフォーマンス不足に頓挫し、欠番扱いのような状態に陥ってしまった。しかし、早くも次期サーバである「LHD-NAS160V」の到着である。
2007-01-12(Fri) アチラが立てば、サーバが立たず
このNASは、VIAのEpiaML800MHz版に、ATA133で160Gの3.5inchHDD、ギガビットの蟹NICを組み合わせ、小型の筐体にパッケージングした製品である。初期状態ではBSDベースのOSが導入されており、基本的にはNASとして利用するためのものだが、当然ながら最初から素直に利用するつもりは毛頭ないオイラである。
まずはイキナリだがケースを外す。で、裏面に現れた各種「非サポート」コネクタに、PS/2キーボード、マウス、液晶ディスプレイをつないでしまう。で、電源オン。これまたイキナリBIOS設定に移動し、念のため初期状態の設定をデジカメでバシバシと保存しながら、オンボードNICを有効にするのであった。そうなのだ。この製品はギガビット対応NASに仕上げるため、ひとつしかないPCIスロットにロープロファイルなギガビットの蟹NICが刺さっており、マザー上の100Mビットは初期状態では殺されているのである。つまり、それを生かせばマルチホームになり、ルータとして稼動可能なのである。
で、早速だがRHEL4のインストールである。しかし、手元にはCDROMドライブがない。どうするか。ここはUSBブートを使って、玄箱をNFSインストールサーバに、インストール作業を進めるのである。手元のUSBメモリにRHEL4のインストールCDの/images/diskboot.imgを「dd if=/images/diskboot.img of=/dev/sdb」てな感じで書き込む。でもって、NASのBIOSの起動設定を「First boot: [USB-HDD]」にして……起動しない。なんで?
うーん、なんだか、メモリチェックが始まらなくて強制リセットをかけたり……なんだか動作自体が安定しないなぁ……と感じつつ「First boot: [USB-FDD]」にしてみるがやっぱり起動しない。まさか、NAS用のハードだからBIOSが特別な内容になっているとか? 「Boot Other Device: [Enable]」とかにしてもダメだし……んなアホな……と思いながら「USB ブート」とかでググると、Epiaは「First boot: [USB-ZIP]」で起動するという情報が……おっと、起動したッ!! なんでZIPでッ!? まぁ、いっか、起動すりゃ。
「boot: linux rescue」でレスキューモードに移行する。起動ディスクの内容はNFSの先にあるので、玄箱のisoのあるディレクトリを指定する必要があるが、無事、レスキューモードでの起動に成功した。USB接続のHDDをつないで、現状のディスクの内容を書き出す。/dev/hda1と/dev/hda2をまるごと、それと/dev/hda3の先頭1MB。まぁ、初期状態のOSを使うことはないと思うが、念のためだ。
再起動。もう一度USBメモリからブートするが、今度は「boot: linux askmethod」として、通常のGUIインストールプロセスを起動する。パーティションは4Gをふたつ。あろうことか、そのふたつでRAID1、ミラーリングアレイを構成してしまう。でもって……あ、ホスト名を決めなきゃ……どうしよう……
……Linuxサーバからしてみれば、オイラがフリーズしたのかと思っただろう。それくらいホスト名に悩みまくる。WRAPはwrap、玄箱HGはkuroと安直に決めたが、この製品はLHD-NAS160V、愛称NetPocket……非常にホスト名に向かない名前なのだ。筐体が黒いから黒に関連する言葉がいいけど……軽く1時間は悩んだ挙句「chrome」に決定した。元素のクロム。イメージは、強固な金属、オレンジの溶液、有毒、黒という色にも掛けている。スペルも短くて覚えやすい。気に入った。
さて、名前に悩んだのはウソのように、適当にパッケージを選んでインストール完了。イザ、起動ッ!! ……しない。なんで? 「Missing operating system」ってディスク読んでるそぶりもないじゃんよ。またもや、BIOSのBOOT設定をどのように変えようが、ブートする気配がない。
2007-01-13(Sat) バックアップのためのRAID1
昨晩、半徹したので遅い朝ながらも、しばらく前にようやく歩き始めたウチのガキのイッペイの相手をしつつ、隙を見て本格的にサーバをバラしにかかる。なかなかしっかりした作り。本機は電源ファンがケースファンを兼ねる構造になっているが、非常に理にかなった空気の流れが作り出されるような配置になっている。感心。
しかし、バラせばバラすほど、どこにも作りが特殊な部分は見つからない。フツーのATAのHDDが、マスター設定で、プライマリ側につながっている。マザー上にも特にヘンな接続はない。COM2が前面のLCDパネルにつながっているのと、PCI上のギガ蟹のLEDが前面パネルに引き出されているくらい……となると、BIOSの中身が特殊? それは、あまり考えたくはないが……。
バラした状態でいつまでも眺めていてもどーしよーもないので、元通りに組み立てる。もう一度レスキューモードで上げて、grub-install……うまくいかない。どーしても、RAID1からシステムを起動したいんだけどなぁ……どーにもうまくいかない。
悩み続けていても仕方ない。フツーにインストールしてみよう。改めてフツーにインストールする。パッケージは最小。あれ? 動く? 起動するじゃん!? とりあえず、ちょっと安心。これでインストールできなかった日には、いきなりNASがレンガに変身するところだ。
ソフトRAIDを妙な設定にしたのが原因なんだろうか? となると、この状態から、システムをミラーリング状態に持ち込まなければならないことになるが……と、ココらあたりで、なんでHDDを1台しか搭載していないサーバで、そんなにオイラがミラーリング構成を組みたがっているのか説明しておこう。
- サーバの停止を伴うか、バックアップの所要時間はどれくらいか
- バックアップファイルの形態、利用が容易かくて
- バックアップに必要な容量、履歴管理が可能か
で、2番目の条件も重量。Linux標準のdumpでバックアップすると、1個のデカいファイルになってしまう。テープにバックアップするのが前提ならそれで仕方ないが、ちょっと昔のファイルにアクセスしたいだけなのに、バックアップの目録を見ながら個々にファイルを書き戻してから……なんぞウザくてやってられないッ!!
この点、平時はRAID1の片肺を「崩した状態」にしておき、バックアップを取りたいときにUSBのHDDを接続して「RAID1の復旧」を行い、RAID1の再構築が完了したところで「片側を切り離す」というバックアップ手法を取れば、システムに負荷をかけることなく、無停止でバックアップを行うことが可能なのである。たぶん、RAID1の切り離しはATOMICに行われるであろうからバックアップはスナップショットにほかならないし、なんといっても、切り離したディスクはそのままmount可能な形式なのである。この扱いやすさは最強だ。おまけにバックアップの進捗を/proc/mdstatでビジュアルに監視できる楽しさもある。
世間一般では、スナップショットならLVMを使うのが素直であるが、いまだLVMの安定性には問題がある。また、接続しっぱなしでRAID1運用するという手もあるが、接続しっぱなしだと落雷で同時に破損する可能性は避けられない。やはり平常時は切り離しておきたい。切り離しておけば電力も食わないしね。
ちなみにこのバックアップ法は最後の条件には不適である。んが、どうせオイラは数週間に一度くらいしかバックアップしないだろうし、履歴管理したければ改めてDVD-Rに書き出せばいいのだ。そのために、パーティションサイズはあらかじめ4GBに設定してある。
と、RAIDを組みたい理由はそんな理由なのだが、どうにも既存のインストールを、うまくRAID状態に持っていくことができない……つーか、そもそも最初にソフトRAIDでのインストールした際に起動しなかった理由がわからない……ダメモトでもう一度やってみる? えぃ……
……な、なんだ? 最初と同じ手順で作業したはずなのに(そもそもRHEL4のインストールの際、そんなに多くの選択肢はない)見事にRAID1から起動できてしまった。そういえば、昨日はメモリチェックが始まらなくて強制リセットかけたりしてなんだか安定しなかったが、今日は非常に安定している……慣らし運転じゃないが、どこかしらのエージングが進んで動作が安定してきたのだろうか? まぁ、特に電源とかはロジカルなパーツではないから、あながちありえない話でもないだろうが。
# mdadm --manage /dev/md0 --fail /dev/hda2
# mdadm --manage /dev/md0 --remove /dev/hda2
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0]
4192832 blocks [2/1] [U_]
# mdadm --manage /dev/md0 --add /dev/sda1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] hda1[0]
4192832 blocks [2/2] [UU]
# mdadm --manage /dev/md0 --fail /dev/sda1
# mdadm --manage /dev/md0 --remove /dev/sda1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0]
4192832 blocks [2/1] [U_]
# mdadm --create /dev/md1 --level 1 --force --raid-devices=1 /dev/hda2
# mdadm --grow /dev/md0 --raid-disks=3
Personalities : [raid1]
md0 : active raid1 sda1[1] hda1[0]
4192832 blocks [3/2] [UU_]
# mdadm --manage /dev/md0 --add /dev/sda2
Personalities : [raid1]
md0 : active raid1 sda2[2] sda1[1] hda1[0]
4192832 blocks [3/3] [UUU]
2007-01-15(Mon) LHD-NAS160V探訪
なによりも気になっていたのは、旧いC3コアが一般的なi686の命令をすべてサポートしないため、i686バイナリを動かすと止まることがあるらしい、という問題だ。具体的には「cmov」という命令らしいが、なんでそんなことになっているのやら。RHEL4はi686以上をサポートなので、もしこのC3がi686をサポートしていないのなら、インストール自体ができないはずだが、RHEL4は旧いC3コアをi686と認識する(既知の)不具合があり、インストールはできてしまう。では、起動すらしないのかといえば、それほど使用頻度の高い命令でもないため、そんなにすぐ止まるわけでもないらしい。
あ、あれれ? コレ、Nehemiahコアじゃん!! ちゃんと「cmov」という表記もある。するとi686の命令セットはフルサポートということになるし、同じ800MHzでも旧C3よりも相当パフォーマンスはよいはずだ。クロックは533MHzと出ているが、これは休ませている状態だからだろう。
しかし、WikipediaでC3コアについて調べても、800MHzのNehemiahが存在するなんて記載はない。ググっても出てこない。そもそも、VIAのページを見ても、マザーとCPUの組み合わせについて言及した情報はない。でも、Epia-MLというマザーのクロックは800MHzで合っている。なんじゃこれ? もしかすると、これはよい意味でNAS特別仕様マザーなのだろうか? オイラは、200Mhz足りないというよりは、コアのリビジョンが高いという意味で好意的に取るぞ。なんにせよ、なんの心配もなくRHEL4のバイナリが使えるってコトだ。これはうれしい誤算だ。
さて、ちょっと安心したところで、フロントのLCDパネルが気になってきた。適当に「echo hoge > /dev/ttyS1」とかやったら、表示されるんちゃうか? ……と、いうのはさすがに甘かった。変化なし。しまったぁ……こんなことなら、BSDベースのOSが動いている状態で通信をスニッフィングして、プロトコルを解読しておくんだった……どうしよう。
そもそも、どんな部品構成になっているんだろう……なにやら、チップがふたつ載ってますな……PIC16F628AとADM232A……って、おいッ!! 型番聞いただけでジャストミートではないか。それ、オイラの庭の中だよ。周囲を見ると、COM, PRG JPとかあるし、これ、正規の電圧のシリアル信号と、PICのオンボードプログラミング用のコネクタじゃん!!
2007-01-19(Fri) NASと刺し違える
先日からNASをイジりまわしているが、今日は前面にハメ込んであるLCDパネルをその筋するのである。まずは、脇にある「PRG JP」と書いてある部分のピンアサインを調べる。間違いなく、LCDパネルを制御しているのは載っているPIC16F628Aであり、「PRG JP」はインサーキットプログラミングするためのジャンパに違いないのだ。
搭載されているPICはSSOPパッケージであり、ピンピッチ0.65mmなので、テスタで導通を調べるのもそれなりには大変。えーっと「RPG JP」と読める状態で、一番右から「15, 16番ピン、5, 6番ピン、4番ピン、14番ピン、13番ピン」と、敢えてPICのピンアサインを知る前に調べる。で、答え合わせ。「Vdd, Vss, Vpp, PGD, PGC」。こりゃ、ビンゴですな。
次は秋月のPICプログラマのピン配置を確認。ICクリップを持ってきて、該当する場所と各ピンを接続する。なんだか、かなりコンジェスチョンな状況になっているが、ファームを吸い出す一瞬の作業の間だけだからこれでいいのだ。イザ、吸出しッ!!
なんだか、PICの種類が違うとかいうようなエラーが出たが、見慣れた「System starting.Please wait.....」という初期メッセージも見えるし、どうにか吸い出せているようだ。すかさず逆アセンブラ代わりのPICシミュレータにかけてニーモニックに変換する。
オイラは日頃、PICのプログラミングをZ80ニーモニックで行っているので、PICニーモニックのままでは意味がスッと頭に入ってこない。そこで、PICシミュレータ上のPICニーモニックを、Z80ニーモニックに変換しつつ、エディタに打ち込みながら動作を理解する。ふむ、ふむ、ふむんッ!! しかし、やってることはリバースエンジニアリングに他ならないが、Z80ニーモニックまで変換してしまうと、権利の所在はどうなるのだろう……とか、考えつつ、解析完了ッ!!
ボーレートは9600bps、キャラクタコード1〜6を受信すると特殊動作(表示クリア等)で、それ以外はそのまま出力……って、あ、あれっ!? じゃ、なんで前回「echo hoge > /dev/ttyS1」したとき出力されなかったんだ……
2007-01-20(Sat) FONでウハウハ
今日は、ひさしぶりに昔の職場の先輩方との呑み会。ほぼ1年ぶり。しかし、この歳になると1年は短い。そして7歳という年齢差は、絶対値こそ変化しないものの、相対的には比率以上に縮まる気がする。決して追いつくことはないが、この先どんな関係になるのか楽しみにしつつ、ずっと大事にしたいと思う。
呑み会は東京なので、例によって、しかしひさびさに秋葉る。たいして買うものはないが、前回ジャンクで1,000円で購入したノートPC用ACアダプタのプラグが、ウチのノートPCと合わなかったので適合するプラグと、今度構築するサーバに前面USBポートを増設すべくUSBジャックと……ん、んんッ!?
FONが売ってるッ!! 先日、FONの中身は実はLinuxで動いていて、シリアルコンソールを付けると自由にイジれそうだと知ってから、どうにも興味が湧いて、欲しくてしかたなかったんだよねぇ。なんといっても、2,000円。FONのメンバになるかどうかはともかくとして、オモチャには最高である。また、ウチは802.11bの無線ブリッジが現役だが、1万弱かけて.11gにリプレースする気はなかった。しかし、2,000円ならリプレースも考えるぞ。すかさずゲットだ。
あとは、消費した記憶のあるパーツをいくつか購入しつつ、カミさんにもらった2,000円分の図書カードをこの機に使ってしまおうと、以前から読みたかった「BINARY HACKS」を購入する。いやはや、この本は面白いでっせ。特にオイラの場合X68kの頃にアセンブラを使って以来、その一般的知識だけで、x86系である今の仕事をどうにかサバいているので、ちょっと前からこの辺りの知識をアップデートしたくて仕方なかったのだ。ELF形式とか、objdumpによる逆アセンブルとか、メモリマップとか……ワクワクいっぱいである。
2007-01-21(Sun) ラ、フォネる
つーわけで、FONにシリアルコンソールI/Fを取り付ける。やたらまとわりつく1歳と2ヶ月のイッペイと一緒に、作業場と居間を往復しながら、あれこれ部品を揃えたり、ピンフレームを削ったりする。イッペイは、何だかいつも以上に各種パーツ類に興味を示しているような気がするが、それはオイラの息子だからか、それともオイラの気のせいか。どっちにしろ、早く大きくなって、一緒に工作したり、プログラミングしたりしよぉぜぇッ!!
ハンダゴテを暖めたついでに、先日購入した1,000円のACアダプタのジャックを付け替える。ノートPCにとってACアダプタの給電線はアンビリカルケーブルだ。いくつあってもいい。ウチはカミさんと同型機だからなおさらだ。
2007-01-22(Mon) 続・フォネる
+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:xx:xx:xx
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: ap51
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort
RedBoot> fis load -l vmlinux.bin.l7
Image loaded from 0x80041000-0x801ba000
RedBoot> exec
Now booting linux kernel:
Base address 0x80030000 Entry 0x80041000
Cmdline :
CPU revision is: 00019064
Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, linesize 16 bytes.
Linux version 2.4.32 (iurgi@ropero) (gcc version 3.4.6 (OpenWrt-2.0)) #9 jue nov 23 12:11:45 UTC 2006
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2
Using 92.000 MHz high precision timer.
Calibrating delay loop... 183.50 BogoMIPS
Memory: 14188k/16384k available (1327k kernel code, 2196k reserved, 92k data, 68k init, 0k highmem)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
Checking for 'wait' instruction... available.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with no serial options enabled
ttyS00 at 0xb1100003 (irq = 37) is a 16550A
eth0: Dropping NETIF_F_SG since no checksum feature.
eth0: Atheros AR2313: 00:18:84:xx:xx:xx, irq 4
MTD driver for SPI flash.
spiflash: Probing for Serial flash ...
spiflash: Found SPI serial Flash.
8388608: size
Creating 8 MTD partitions on "spiflash":
0x00000000-0x00030000 : "RedBoot"
0x00030000-0x00720000 : "rootfs"
eth0: Configuring MAC for full duplex
0x001b0000-0x00720000 : "rootfs1"
0x00720000-0x00730000 : "config"
0x00730000-0x007e0000 : "vmlinux.bin.l7"
0x007e0000-0x007ef000 : "FIS directory"
mtd: partition "FIS directory" doesn't end on an erase block -- force read-only
0x007ef000-0x007f0000 : "RedBoot config"
mtd: partition "RedBoot config" doesn't start on an erase block boundary -- force read-only
0x007f0000-0x00800000 : "board_config"
Initializing Cryptographic API
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 2048)
ip_conntrack version 2.1 (5953 buckets, 5953 max) - 328 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: Ethernet Bridge 008 for NET4.0
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 68k freed
init started: BusyBox v1.1.3 (2006.11.21-19:49+0000) multi-call binary
Algorithmics/MIPS FPU Emulator v1.5
Please press Enter to activate this console. Registering mini_fo version $Id$
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs
jffs2.bbc: SIZE compression mode activated.
wlan: 0.8.4.2 (0.9.0)
ath_hal: 0.9.17.1 (AR5212, AR5312, RF5112, RF2316, RF2317, TX_DESC_SWAP)
wlan: mac acl policy registered
ath_rate_sample: 1.2 (0.9.0)
ath_ahb: 0.9.4.5 (0.9.0)
ath_pci: switching rfkill capability off
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 11.0 phy 4.8 radio 7.0
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky
device eth0 entered promiscuous mode
BusyBox v1.1.3 (2006.11.21-19:49+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ _______ _______
| ____|| || _ |
| ____|| - || | | |
| | |_______||__| |__|
|___|
Fonera Firmware (Version 0.7.1 rev 2) -------------
*
* Based on OpenWrt - http://openwrt.org
* Powered by FON - http://www.fon.com
---------------------------------------------------
root@OpenWrt:/# cat /proc/cpuinfo
system type : Atheros AR531X_COBRA
processor : 0
cpu model : MIPS 4KEc V6.4
BogoMIPS : 183.50
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : no
VCED exceptions : not available
VCEI exceptions : not available
root@OpenWrt:/# ps -ef
PID Uid VmSize Stat Command
1 root 396 S init
2 root SW [keventd]
3 root SWN [ksoftirqd_CPU0]
4 root SW [kswapd]
5 root SW [bdflush]
6 root SW [kupdated]
8 root SW [mtdblockd]
16 root 392 S syslogd -C 16
17 root 444 S /bin/sh /etc/init.d/rcS
18 root 380 S logger -s -p 6 -t
20 root 488 S /bin/ash --login
22 root 360 S klogd
49 root SWN [jffs2_gcd_mtd2]
113 root 284 S lock /var/run/network-connection
115 root 284 S lock /var/run/restart-services
221 root 448 S hostapd -B /tmp/hostapd.conf
253 nobody 412 S dnsmasq -C /etc/dnsmasq.conf --dhcp-range=192.168.10.
265 root 388 S udhcpc -i eth0 -R
399 root 420 S httpd -p 80 -h /www -r OpenWrt
441 root 424 S crond -c /etc/crontabs
456 root 424 S /usr/sbin/httpd -R /cgi-bin/splash.sh -H 192.168.10.1
460 root 328 S watchdog -t 5 /dev/misc/watchdog
461 root 328 D watchdog -t 5 /dev/misc/watchdog
462 root 276 S lock -w /var/run/network-connection
468 root 368 R ps -ef
root@OpenWrt:/# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:80
INPUT_CFG all -- anywhere anywhere
NET_ACCESS all -- anywhere anywhere
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere tcp option=!2 flags:SYN/SYN
input_rule all -- anywhere anywhere
ACCEPT all -- 169.254.0.0/16 anywhere
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT gre -- anywhere anywhere
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
forwarding_rule all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
output_rule all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain INPUT_CFG (3 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain NET_ACCESS (3 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:3990
ACCEPT udp -- anywhere anywhere udp dpt:53
ACCEPT tcp -- anywhere anywhere tcp dpt:53
WAN_HOOK all -- anywhere anywhere
DROP all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere
Chain WAN_HOOK (1 references)
target prot opt source destination
DROP all -- anywhere 169.254.0.0/16
Chain forwarding_rule (1 references)
target prot opt source destination
INPUT_CFG all -- anywhere anywhere
INPUT_CFG all -- anywhere anywhere
NET_ACCESS all -- anywhere anywhere
NET_ACCESS all -- anywhere anywhere
Chain input_rule (1 references)
target prot opt source destination
Chain output_rule (1 references)
target prot opt source destination
root@OpenWrt:/# reboot
root@OpenWrt:/# The system is going down NOW !!
Sending SIGTERM to all processes.
Please stand by while rebooting the system.
Restarting system.
2007-01-27(Sat) USB2.0を2.0口ほど増設する
サーバのリプレースを考えつつも、なかなか進捗しない今日この頃だが、それにもワケというものがある。時間がないというのは最上位の理由だが、いったんサーバにサービスを提供させてしまうと停止することができなくなる、という副次的な理由も大きい。つまり、ソフトウェア的な移行作業を開始するということは、常時電源を入れた状態に移行するということで、それはハードウェア的にイジることができなくなるということも意味する。
実は設置する場所も、イマイチ納得できていない。電話線からLANを引く以上、基本的にそこからあまり離れた場所に設置するわけにはいかないので、結局はそばにある電話台と本棚を兼ねた金属のラック以外にはありえないのだが、最近ヤンチャ度256%に差し掛かりつつある1歳2ヶ月のイッペイがこのラックを揺らしまくるのが心配の理由。ハードディスクのデリケートさを知らない素人はこれだから困る。だいたい、ラックを揺すって楽しいのだろうか。まったく大人気ないガキンチョである。
- 前面のLCDパネルを制御するPICマイコンのファームの吸出し
- マザー上にあるフロントUSB増設用ヘッダピンの活用
- 内蔵スイッチング電源から外部への電源供給
まずは取り付け位置の確定だ……が、この筐体は前面パネル以外はすべて金属外装であることから、その加工は非常に困難。必然的に前面パネルに決定される。加工はドリルやヤスリほかでゴリゴリやるコトになるので、ややっこしいものは全部はずす。LCDパネルとか、その制御基板とか、LEDとか。
で、前面パネルを本体に取り付けた状態でも、ケース取り付け用のUSBポートが他に干渉せず、ネジで固定できる場所を探す……結局、選択の余地はなかった……が、悪くない場所である。位置決めして、慎重に取り付け用のネジ穴4箇所を開ける。問題は、USBプラグを挿し込むための四角の穴を開ける作業だ。四角い穴を開ける機械なんぞは持っていないから、穴を3つつなげるように開けて、地道にヤスリでゴリゴリとやる。この時、注意しなければならない点は「極力、内側からゴリゴリする」ことだ。外側からゴリゴリやると、必ず数度はヤスリの先がスベって、盛大にキズを付けてしまうことになる。何度かやっての経験則だ。
というわけで、なんとか許せる程度には美しく加工することができた。あとは何も考えることなく、ジャックをネジ止めしてケースを元通り組み立てるだけ……だが、組み立てる前に1本の電源コネクタをほどき、引き出して筐体の裏に出しておく。実は、これは上述した3番目の項目への対応だったりする(手抜き)。
2007-01-30(Tue) 「ワイヤレストラベルマウス」レボリューション
先日からマウスの調子が悪い。例によって例のごとく悪いのはホイールの調子である。約2年前にも書いたが、オイラが愛用するマウスは「ワイヤレストラベルマウス」という名称でPT-2002-MJという型番の、製造メーカ不詳のアイテム。しかしこの製品は、ワイヤレスレシーバ部がUSBメモリのように小さく本体に収納できる点、単4電池1本で電池交換時期を忘れてしまうほど長く利用できる点、そしてなんといっても「ボールマウス」という点が最高なのである。
そのような稀にみるグレートアイテムなので当然のごとく2個買ってある。片方はレシーバ部を以前に愛用していたメビウスノートに埋め込んであり、電源スイッチが増設してあったりもする。こっちは既にホイールが一度クラッシュしたので、別のマウスからパーツを臓器移植しているが、その後も元気で稼動中である。
で、今回のクラッシュはもう片方で起きた。2台ともで同じ症状が出るということは、基本的なホイールの耐久性に問題があると考えるほかない。しかし、もともと3,000円前後の製品だし、それ以外の要素は文句のつけようがないプロダクツなので許せてしまう。まぁ、移植すりゃ済む問題であるし。
前回はホイールが「ガッ、ガシャッ、シャガシャガ……」などいう異音を発してクラッシュしたが、今回は特に音もなくおかしくなった。だが、症状は同様で、ホイールが1周するうち、1箇所でスクロールが止まったり、時にちょっと戻ったりする。では、早速であるが、術式を始める。
ドナーはコイツ。部屋に転がっていたアイテム。既に入手経路の記憶がない。いかにも安っぽいのでフタを開けてみたら案の定だった。ちなみにマウスのホイールの構造は主に2種類。ロジクールなどの比較的高額なマウスに用いられている光学式ロータリエンコーダ式と、まさにマウスのホイール専用に作られている金属接点ロータリーエンコーダ式だ。こちらは1パーツで回転検知を行いつつ、ホイールのコリコリという感触まで作り出せるので、安物マウスは大抵でコッチある。コリコリしたら安物と覚えよう。
両者をバラして問題の臓器を外す。ドナーの方はパーツを丁寧にそれ以外は雑に、患者の方はパーツは雑にそれ以外を丁寧に扱う。結構苦労したが取り外せたぞ。ほほぉん。前回もそうだったがパーツの高さが違う。患者側の方が回転軸の位置が高めである。浮かせばいいので逆の状況よりはラクだが。
大変なのはスルーホールの掃除。詰まっているハンダを除去するのが大変。オイラはハンダ吸い取り「線」派なので、ハンダ吸い取り機を持っていないのだ。ハンダをコテでウリウリしつつ、爪楊枝を差し込んだりしてどうにかする。大変だったが。
しかし、こんなに気に入っているので、可能ならもういくつかストックが欲しい気がするなぁ。ちょっと調べたところだと国内で扱っているのは1社のみのようだ。安くないけど追加購入しようかなぁ。海外にももう1社あるんだけど、こっちは単価は安いものの送料が劇高。難しい選択だ。
さて、関係ないけどカミさんが新たにデジカメを購入した。機種はRICOHのCaplioR5。機種選定の際、手持ちのSDカードが使えたほうがいいかな、とか、Nikonの顔認識するヤツはどうかな、とか相談されたが、数千円のメモリで選択を制限されていいの、とか、撮影スタイルからして広角は必須でしょ、などといくつかアドバイスしたら、自然とRICOHになっていた。賢明な選択である。
そういえば、過去のエントリで触れるのを忘れていたような気もするが、オイラもちょっと前にデジカメを新調している。機種はRICOHのCaplioGX8。フルマニュアルの撮影もできる玄人向けで、一切の選択の余地なく決定した機種だ(厳密にはGR-Degitalと競ったがアレは高すぎ)。