SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|

2007-01-03(Wed) 新年早々サーバ立ち上げ

  正月である。今年はちょっと時間をもらって、ねっとりとサーバ立ち上げ作業に没頭してみた。3代目の自宅サーバの構築である。

  最初は見よう見まねで、ハウツー本を片手に構築したRedHat7.2。ハードは余っていたAthronの600MHzマシン。よく覚えていないが、覚えたばかりのPerlで自分用のサービスをいくつか立ち上げていた気がする。

  2代目が現在のサーバ。RedHatのサポート打ち切りに失望したので、OSはDebian3に変更。ハードは以前に主力で使っていたCUB-XマザーのCPUをPentiumIIIの1GHzに載せ替えたもの。獲物をRubyに持ち替え、ラジオの録音やら、テレビの録画やら、自製のグループウェアやらを載せて、イジリ倒している。これは現在運用中。

  しかし、ちょっとウルサすぎで、たぶん電気食いすぎ。おまけに仕事でRHELを使い倒しているので、徐々にDebianの勝手がうざくなってきた。つーわけで、今回のリプレースである。

  最初は適当な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円。貧乏くさいことこの上ないが安さは正義だ。

  画像の説明 画像の説明

  でもって、その辺で余っているLANケーブルをチョッキンして、Web上の説明を参考にピンをモジュラプラグに押し込んで……あ、意外と簡単に入るモンだな……で、ペンチでグッと、こんなもんか?

  で、導通テスト。当然ながらケーブルテスタなんぞ買ってない。ジャンクショップで入手したモジュラジャックのパーツ。RJ45とRJ12が並んでいるばかりかLEDまで付いていて1個10円である。そいつとテスタでチマチマと導通チェック……1日に100本も作るんでなきゃ、これで十分なんじゃ!! ……オッケェイッ!!

  画像の説明

  あとは、玄箱の足に穴をあける。こいつは耐震対策である。ネジリッコでラックに固定するのである。設置状況はこんな感じ。うーむ、シンプル。つーか、自宅で24時間駆動させるなら、これくらいが理想だよなぁ、うんうん。

  画像の説明 画像の説明

  玄箱でnfsサービスを開始し、WRAPを起動するとサクサクと起動した。かねてからの念願だったダブルRHEL4である。これから必要なパッケージをrpmでザクザクとインストールしつつ、理想の環境を構築していこう。ではまた。


2007-01-07(Sun) 一日四千名様限定提供用サーバ

  さて、念願の省電力、省スペースのRHEL相当サーバが立ち上がった。しかも面白みのあるデュアル構成。さーて、なにから始めようかな。まずは、名前解決ができないと構築作業するにもうっとおしいからDNSの立ち上げからかな。

  そういえば、WRAPはshutdown時にリセットがかからない。つまりアダプタジャックを抜き差ししないと再起動しない。こいつはどうにかしないとカッコ悪い。そうそう、WRAPのマニュアルにリセットをかけるアセンブラコードが載ってたな。ちょいちょい、と。

  <コード、結果>

  実行したがエラーが出てリセットがかからない……そりゃそうか。rootといえど、ユーザモードからI/Oポートに書き込めるわきゃないわな。モジュールにすればいいだろう……ちょいちょい、と。

  <コード、結果>

  ん? コンパイルできるけど、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」の到着である。

  だが、ここんとこ、オイラの本業のOSサポート業のほうでトラブルがあって……トラブルとはいっても、ウチが起こしたわけじゃなく、他人のトラブルでそれがウチの飯の種なんだが……ねちっこく、クラッシュダンプを相手にSCSIドライバ周りをナメ回していたりする日々である。しかし、これがまた面白いのなんのって。ウチにもクラッシュダンプを取得できる環境を整えたいくらいである。つーか、ネットダンプを導入しよう。そうしよう。

  ま、そんな先の予定は置いといて今日は終電帰りである。箱を開けて軽くバラして通電しただけで作業終了……にしても、初回の通電前にバラしてしまうってのも、ちょっとアレだよなぁ……

  画像の説明


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設定をどのように変えようが、ブートする気配がない。

  まぁ、動かない理由はいくらでも思い当たる。やっぱり元がNAS用のハードだからBIOSが特別だとか? HDDがつながっているのがマスタでない? マザーにヘンなジャンパが当たってるとか? USBブートからのネットワークインストールが悪さしている? 1ドライブでソフトRAIDなどという妙な設定にしているから? ……とりあえず、ハード面でももっとバラして目視確認したほうがいいな……というところで、午前4時。

  画像の説明

  もしかしたら、RHEL4のインストールはできないんじゃないかなどという不安を抱えつつ寝床に行く。非常にもやもやするが仕方ない……今日はここまで。おやすみ。


2007-01-13(Sat) バックアップのためのRAID1

  昨晩、半徹したので遅い朝ながらも、しばらく前にようやく歩き始めたウチのガキのイッペイの相手をしつつ、隙を見て本格的にサーバをバラしにかかる。なかなかしっかりした作り。本機は電源ファンがケースファンを兼ねる構造になっているが、非常に理にかなった空気の流れが作り出されるような配置になっている。感心。

  画像の説明

  しかし、バラせばバラすほど、どこにも作りが特殊な部分は見つからない。フツーのATAのHDDが、マスター設定で、プライマリ側につながっている。マザー上にも特にヘンな接続はない。COM2が前面のLCDパネルにつながっているのと、PCI上のギガ蟹のLEDが前面パネルに引き出されているくらい……となると、BIOSの中身が特殊? それは、あまり考えたくはないが……。

  画像の説明

  バラした状態でいつまでも眺めていてもどーしよーもないので、元通りに組み立てる。もう一度レスキューモードで上げて、grub-install……うまくいかない。どーしても、RAID1からシステムを起動したいんだけどなぁ……どーにもうまくいかない。

  悩み続けていても仕方ない。フツーにインストールしてみよう。改めてフツーにインストールする。パッケージは最小。あれ? 動く? 起動するじゃん!? とりあえず、ちょっと安心。これでインストールできなかった日には、いきなりNASがレンガに変身するところだ。

  ソフトRAIDを妙な設定にしたのが原因なんだろうか? となると、この状態から、システムをミラーリング状態に持ち込まなければならないことになるが……と、ココらあたりで、なんでHDDを1台しか搭載していないサーバで、そんなにオイラがミラーリング構成を組みたがっているのか説明しておこう。

  別に1台のHDDでミラーリングするのが目的ではない。ミラーリング機能を利用したバックアップ環境を実現したいというのが目的である。一般に、バックアップに求められる条件としてはいくつかあるが……

  • サーバの停止を伴うか、バックアップの所要時間はどれくらいか
  • バックアップファイルの形態、利用が容易かくて
  • バックアップに必要な容量、履歴管理が可能か

  ……くらいかな。で、オイラがもっとも重要視するのが、最初の条件。バックアップに時間がかかってもいいから、サーバを停止することなく、スナップショットが取りたい、という要求である。

  で、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から起動できてしまった。そういえば、昨日はメモリチェックが始まらなくて強制リセットかけたりしてなんだか安定しなかったが、今日は非常に安定している……慣らし運転じゃないが、どこかしらのエージングが進んで動作が安定してきたのだろうか? まぁ、特に電源とかはロジカルなパーツではないから、あながちありえない話でもないだろうが。

  つーわけで、起動しちゃえばこっちのもの。以下のようなコマンドで「同ドライブ上の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_]

  バックアップのテストを始める。USBのHDDを接続して、ほぼ同容量のパーティションを確保し、以下のコマンドを実行。

# mdadm --manage /dev/md0 --add /dev/sda1

  この直後からリビルドが開始され、しばらくすると……

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] hda1[0]
      4192832 blocks [2/2] [UU]

  RAIDの再構成は完了。この時点でバックアップ完了である。再度、切り離す。

# 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_]

  切り離した領域は、mount /dev/sda1 /mntで、極めてフツーに扱うことができる。当然、書き込みも可能だ。ちなみに、新たにRAIDバックアップ可能な領域を作るには以下のコマンドでOK。

# mdadm --create /dev/md1 --level 1 --force --raid-devices=1 /dev/hda2

  また、こんな実験もしてみた。RAID1を3連ミラーにするのだ。

# 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]

  growオプションはカーネルが2.6でないと動かないらしいが、当然RHEL4ならば問題なく動く。なお、grow(増やす)といいつつも、1を与えれば、1連ミラー(?)に減らすこともできる。

  つーわけで、ずっと前から構想を練っていた「ミラーリングバックアップメソッド」を、やっとこさ実現することができた。今度こそ、次期サーバの設定にとりかかろう。ではまた。


2007-01-15(Mon) LHD-NAS160V探訪

  さて、一応インストールは完了ということで、おもむろにアチコチの設定を始めるわけだが、使い始めということで、あちらこちらの仕様を確認したりするわけである。

  なによりも気になっていたのは、旧いC3コアが一般的なi686の命令をすべてサポートしないため、i686バイナリを動かすと止まることがあるらしい、という問題だ。具体的には「cmov」という命令らしいが、なんでそんなことになっているのやら。RHEL4はi686以上をサポートなので、もしこのC3がi686をサポートしていないのなら、インストール自体ができないはずだが、RHEL4は旧いC3コアをi686と認識する(既知の)不具合があり、インストールはできてしまう。では、起動すらしないのかといえば、それほど使用頻度の高い命令でもないため、そんなにすぐ止まるわけでもないらしい。

  つーわけで、早速に「cat /proc/cpuinfo」する。

  画像の説明

  あ、あれれ? コレ、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のオンボードプログラミング用のコネクタじゃん!!

  プロトコル解析よりは面倒だが、オンボードプログラミング用のコネクタからPICのファームを吸い出すことができれば、コード解析によりフルに機能を使うことができそうだ。なんなら機能の追加もできる。一方で、隣のシリアル信号を利用すれば、ttyS1にもういくつか自作ガジェットをぶら下げることもできそうだ。自作野郎にはシリアルポートはいくつあっても嬉しい。これはよい発見をした。

  画像の説明

  こっちのLCDパネルの型番はよくわからんが、うまく活用できそうである。うひゃひゃ。ではまた。


2007-01-17(Wed) メガクラッシュ

  ちょっと前から目の調子がよろしくなかった。いつもはこんな感じなのだが……

  画像の説明

  ……今朝はこんな感じになっていて……

  画像の説明

  ……あわてて眼科に走っていくハメになった。しばらくは、目を使うのを最小限にすべく、作業はお休み。とほほ。

  モデル:ウィンクロン


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」したとき出力されなかったんだ……

  画像の説明

  ……あっ、アホか、オレは!? どこにコネクタ挿してんだよ……とほほ。まぁ、キャラクタコードの1を出力すると表示クリアとか判明したんで、まったく無益な解析作業じゃなかったけどさぁ……相変わらず、貴重な時間を無駄に費やしまくるオイラであった。と、ゆーわけで、今日も半徹につき、おやすみ。

  画像の説明


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による逆アセンブルとか、メモリマップとか……ワクワクいっぱいである。

  画像の説明

  さて、呑み会は無事終了して帰宅。早速、家で戦利品のFONを……わぁ、すっげぇ小さいッ!! と、感心しつつ……またもや通電前にバラす。おー、確かにひと目でシリアルコンソールが接続できそうなピンヘッダがあるわ。なるほどね。

  画像の説明

  すると必要なのはケース加工だが、どーしよっかなぁ……ん?……ま、まさか……え、えぇッ!?

  画像の説明

  こ、これって、偶然ッ!? それとも、必然ッ!? ……というわけで、これにてケース加工は完了(?)である。あはははは。


2007-01-21(Sun) ラ、フォネる

  つーわけで、FONにシリアルコンソールI/Fを取り付ける。やたらまとわりつく1歳と2ヶ月のイッペイと一緒に、作業場と居間を往復しながら、あれこれ部品を揃えたり、ピンフレームを削ったりする。イッペイは、何だかいつも以上に各種パーツ類に興味を示しているような気がするが、それはオイラの息子だからか、それともオイラの気のせいか。どっちにしろ、早く大きくなって、一緒に工作したり、プログラミングしたりしよぉぜぇッ!!

  ハンダゴテを暖めたついでに、先日購入した1,000円のACアダプタのジャックを付け替える。ノートPCにとってACアダプタの給電線はアンビリカルケーブルだ。いくつあってもいい。ウチはカミさんと同型機だからなおさらだ。

  画像の説明

  で、本題のシリアルコンソールジャック(?)を取り付ける。高さ方向に余裕がないので、ピンフレームのピンを根元で外側に折り曲げる。写真の右上の黒い線が+3.3V、その下の紫がGND、灰色がTX、白がRXである。これは、玄箱と同じピン構成であるから、以前に玄箱用に作ったUSB変換I/Fとピン配置を合わせる。すると、あっ、という間に完成である。

  画像の説明

  反対側のピンフレームをクロージャの適当な場所で穴の位置を合わせ、アロンアルファで内側に固定する。ケースを閉じて、内側にピンフレームのある場所にマジックで印を付けたら完成だ。

  画像の説明

  早速PCにつないで、TERATERMを立ち上げ、通信速度を9600bpsに設定、FONを起動する。お、出た出た。端末作業もできるぞ。この小ささでLinux。面白すぎ。

  ちなみにCPUはMIPS系らしいので、これでRHELを動かすのは無理なようだ。しかし、フツーにiptablesが動いているし、ルータとして凝った設定ができそうだなぁ。今後、家の環境に組み込むのが楽しみである。うふふふふ。


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ヶ月のイッペイがこのラックを揺らしまくるのが心配の理由。ハードディスクのデリケートさを知らない素人はこれだから困る。だいたい、ラックを揺すって楽しいのだろうか。まったく大人気ないガキンチョである。

  まぁ、そっちはそう簡単に解決しないが、ハードウェア的な作業は済ませておくに限る。主にやりたいことは3つあって……

  • 前面のLCDパネルを制御するPICマイコンのファームの吸出し
  • マザー上にあるフロントUSB増設用ヘッダピンの活用
  • 内蔵スイッチング電源から外部への電源供給

  ……1番目は、すでに作業を終わらせている、ということで、今日は2番目USBジャックの増設を行うことにする。この作業に必要になる、ケース取り付け用のUSBポートは先週購入してある。

  まずは取り付け位置の確定だ……が、この筐体は前面パネル以外はすべて金属外装であることから、その加工は非常に困難。必然的に前面パネルに決定される。加工はドリルやヤスリほかでゴリゴリやるコトになるので、ややっこしいものは全部はずす。LCDパネルとか、その制御基板とか、LEDとか。

  で、前面パネルを本体に取り付けた状態でも、ケース取り付け用のUSBポートが他に干渉せず、ネジで固定できる場所を探す……結局、選択の余地はなかった……が、悪くない場所である。位置決めして、慎重に取り付け用のネジ穴4箇所を開ける。問題は、USBプラグを挿し込むための四角の穴を開ける作業だ。四角い穴を開ける機械なんぞは持っていないから、穴を3つつなげるように開けて、地道にヤスリでゴリゴリとやる。この時、注意しなければならない点は「極力、内側からゴリゴリする」ことだ。外側からゴリゴリやると、必ず数度はヤスリの先がスベって、盛大にキズを付けてしまうことになる。何度かやっての経験則だ。

  画像の説明

  というわけで、なんとか許せる程度には美しく加工することができた。あとは何も考えることなく、ジャックをネジ止めしてケースを元通り組み立てるだけ……だが、組み立てる前に1本の電源コネクタをほどき、引き出して筐体の裏に出しておく。実は、これは上述した3番目の項目への対応だったりする(手抜き)。

  画像の説明

  で、完成。ハデに正面をブチ抜いて増設した結果、ネジ穴がスパルタンな雰囲気を醸し出している。黒いネジを使ったほうがよかったかな。まぁ、いいか。性能に影響するワケじゃなし。

  画像の説明

  ちょっとオマヌケだが、横のポートから電源のみ搾取するデバイスを接続する場合、こんな感じになる。この2.5インチHDDは1ポートのみでも動くし、こんな状態で常用するつもりもないが、例の「ミラーリングバックアップメソッド」を実行する際、HDDによってはこんな接続形態にできることが有利になることもあるかもしれない。

  画像の説明

  さて、今度こそ、本格的にサーバ構築作業に入らねば……。


2007-01-28(Sun) 念願のアントクアリウムをゲット!!

  近所にできた大型ショッピングモールに出かけたところ、なんと以前からの念願だったアントクアリウムをゲットすることができたッ!!

  画像の説明

  早速、近所の公園に小さな助手を連れてアリンコ採取に向かう。

  画像の説明

  「父ちゃん。冬に蟻はいないよ」……と、いうわけで終了。


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と競ったがアレは高すぎ)。

  画像の説明

  ちなみに、それまで使っていたCaplioG4wideは3年弱の間を使い倒したので、レンズバリアが開かなくなったり、落とした時にフレームをわずかに変形したりしてヒドい状態になっている……が、まだ実用上は問題ない。非常用として余生を送ることにする。しかし、RICHO漬けだよな、ウチは。

  気に入ったプロダクトは永久に使いたいが、なかなかそうもいかない。だが、歳を取るにつれて、新しいものより、気に入ったものという志向が強くなった気もする。以前「この歳になると体型の変化もないし、飽きがくる精神状態でもないんだから、死ぬまで使うつもりで高くてもいいものを買ったらいいんじゃない?」と言われて目からウロコが落ちたことがあった。必要以上に高いもの買う必要はないが、気に入ったものを長く使えるのは幸せなことに違いない。


2007-01-31(Wed) The work of Jimmy

  最近の平日は、Linuxに関する質問をビシバシと叩き落すことに加え、SCSIドライバの解析と、おまけに諸般の雑務までが増え出して忙しく、帰るとたいしたことができない。

  なんとなく、次の工作ネタに備えてジミーな作業を行っておく。ジャンク箱から電源分配ケーブルをほじくり出してきて、そのピンをチマチマと抜く。あぁ、地味。

  画像の説明 画像の説明

  まだ時間が余ったので、愛用のPCにオマケとして付いてきた同色のマウスをバラす。先日から、マウスを見るたび、愛用のワイヤレストラベルマウスのドナーとしてしか見られなくなっているオイラである。

  画像の説明 画像の説明

  おぉ、事前の触診によって特定はできていたが、やはり同じパーツが使われていた。見た感じ初めての「高床タイプ」だ。臓器提供契約を結んで、ジャンク箱に戻す。わしゃ、玉のないマウスはでぇーっきれーなんじゃ!!