1997年9月13日

mini Watch Dog Timer with Linux

「遠くのサーバも柴犬に見張らせれば大丈夫(^^)」

Ver 0.2 Copyright(C) 1997, Hisaaki Shibata

柴田 尚明@福岡

shibata@opost1.netspace.or.jp

何らかの要因、例えば電源の瞬断などでハングアップしてしまったリモートにあるLinuxboxに対して、自動でハードウエアリセットしたり電源を落としたりして復旧させる仕組みを考えています。
公開してご意見を伺い、出来ればもうちょっと改良したいと思っておりますm(_|_)m。
ご意見は、linux-users MLFA-NET MLなどの関連MLかメールでお願いします。

最近、忙しくてNetNewsはあまり見ていませんし、postもしていませんのでMLかメールでお願いします。
尚、本ドキュメントは全文丸ごとであればどこへでも転載可能/リンク可能です(^^)が 商用利用の場合は、ここで取り上げているキットの回路に関しては各開発/販売元に仁義を切った方が良いでしょう(^^;


目次

0 .来歴・トピックス
1 .経緯
2 .関連情報
3 .用意したhardware
4 .用意したsoftware
5 .動作確認をしたもの
6 .いくつかの問題点
7 .そのうちやること
8 .謝辞


0.来歴・トピックス

[次へ][目次へ]

1997/9/13 Ver. 0.2

  • 自宅でのカーネルハングアップ時の結果を反映
  • 関連情報に市販のWatch Dog Timerへのリンク追加
  • Alan Cox氏とのやり取り追加
1997/8/31 Ver. 0.1
  • 誤記訂正
  • 自宅での実験結果を反映
  • 実験に基づき、回路の一部変更
1997/8/30 Ver. 0.0
  • 新規作成
  • FA-NET MLで「番犬作成計画」と題して、皆さんに教えていただきながら作り始めた

1.経緯

[次へ][前へ][目次へ]

Linux Users MLの九州・沖縄近辺の配送を引き受けているhis.ktarn.or.jpは、インターネット久留米殿の御後援で同NOC内に私の個人所有物であるLinux BoxをIP reachableな環境に置かせていただいています。

このLinux Boxは元々私が「始めて」自分で組み立てたPC/AT互換機であり、その後2台目、3台目と増えていき自宅に置けなくなったいわば「お古」です。

なので、ちょーっと歳を取っているためにハードウエア的に不安定なところがあったりしますし、もし仮にハングアップしたとして、復旧するために自宅からLinux Boxが置いてあるNOCまでは高速を通って車を飛ばしても、1時間以上かかるところにあります。

過去に3回ほど、原因不明のハングアップが発生し、linux-users MLの配送が出来なくなったりしましたm(_|_)mが、その度にNOCの管理者である足立さんに電話して復旧させていただいておりました。

しかしながら、個人的に置かせていただいているものを、勤務時間内に面倒見て頂くのも気が引けますし、足立さんが出張のときや深夜にハングアップした場合は復旧までかなりの時間を必要とし、悶々として過ごすことになります(^^;

Linuxそのものはかなり堅牢なものですが、さすがにハードウエア障害には耐えられません。
そこで、ハードウエア障害が発生し、ネットワークを介してリモートからの制御が効かなくなるほどの異常事態には、強制的にリセットまたは電源OFF/ONを行うハードウエアを作ることにしました。

必要な機能は限られているので、なるべくシンプルなハードウエアを目指し、予算は5千円以内で済ますことを目標にしました。

#ま、目標は、あくまで目標(^^;


2.関連情報

[次へ][前へ][目次へ]

  • 今回利用したキットに載っているTC4538BPという単安定マルチバイブレータICのデータシートは、東芝の半導体関連サイトからpdf形式で入手できます(^^)
    #真夜中に作業して、ソケットにICを逆差ししてしまい壊れ^Hしたため(^^;、
    #今では日立のHD14538BPになっていますけど(^^;;;
  • 純正PC/ATのマザーボードに載っていて、スピーカの起動に使われているTTLである75477のデータシートはSN75477のデータシートとして、本家TIから「SN75477」で検索して、これまたpdf形式で入手できました。
  • その他、PCの各種インタフェースを調べるのには、homebuilt-comp-FAQや、
  • pc-hardware-faqが役に立ちました。
  • その他にも、WE-MAN! 's Homepageも興味深いものでした。
  • 市販のWatch Dog Timerの情報が見られるWebとしては、OutSource Eng. & Mfg. - Watchdog board productsがあります。
    ここのBasic WatchDogはI/Oポートのアクセスをカウンタリセットにしている事を除いて、Watch Dog Timerとしての機能は今回私が作ったものとほとんど同じでしょう(^^)
  • PC向けのSuper I/Oチップなどで有名な、SMCのSuper I/OチップにはSMC: FDC37C93xFR Design GuideにあるようにWatch Dog Timer機能を持とうとしているものもあるようです。
  • Watch Dog Timerにも応用可能なISAのボードの携帯となっている汎用のタイマ/カウンタボードとして12-Channel Timer/Counter Cardなどもあります。
  • 海外での電子工作のための部品やキットを売っているところとしてはDebco Electronics, Inc. などがあり、キットについては、Debco Electronics, Inc. Electronic Kitsにいっぱい出ています。
  • また、英語ながらWatch Dog Timerに関して簡単に解説しているものとしては、AUTOMATION 101と言う面白そうなサイトのWATCHDOG TIMERSや、実際に電波望遠鏡などでの観測のための利用者向けの話としてThe Parkes Radio Telescope Home Page.Parkes Radiotelescope Training & Safety Guide - Watch-dog timerと言った解説が載っていたりします。
  • しかし、今回もっとも有用だったのはFA-NET MLです(^o^)

3.用意したhardware

[次へ][前へ][目次へ]

  • LinuxがinstallされたPC/AT互換機(マザーボードにスピーカ接続端子と、リセットスイッチ接続端子が必要)
  • 今回自作のリモート電源制御装置(^o^)
  • PCのマザー上のスピーカ接続端子と繋ぐための線(スピーカからはずしても良いかも)

ここで、番犬(簡易Watch Dog Timer)の仕様/回路に関してご紹介します。


    仕様

    FA-NET MLに書いたものをそのまま示します。

    > では、さっそく仕様の検討などを...
    > 
    > 1.概略仕様
    > ・リモートのPCがハングアップしたのを検知して、リセットまたは電源OFF/ONを
    >   自動的に行う。
    > 	#今のところ、リセットスイッチを考えていますが、
    > 	#ディスクの内容がOSで読めないほど壊れた場合は除いて、
    > 	#リセットスイッチが効かないほどの障害ってありますかね?
    > 	#瞬停などが起きたらだめかな?
    > 	#その時はON/OFFを入れ替えて、初期状態を変えて電源OFF/ONに
    > 	#すれば良いか(^^;
    
    と、思っていたのですが、案の定電源投入時に回路が動作してしまっています。
    このまま電源OFF/ONの方で使おうとすると、電源投入直後に回路がはたらいで
    もう一度切れてしまいます(ーー;;;
    	#何か方法を考えないと....コンデンサぶら下げでやるか、
    	#別電源で動作させるかのどちらかで何とかなれば良いのですが...
    
    > ・ハングアップしたことの判定は、ソフトウエアが正常に動作している場合に
    >   一定時間毎に行われるアクセスがなくなったことを以って行う。
    > ・PC側ハードウエアには極力改造を行わないようにする。
    > 
    > 2.詳細仕様
    > 2.1 WDT ハードウエア仕様
    > (1)入力
    > ・PCからの定期的なタイマリセットのための信号線(PCのスピーカ信号)
    > 	#またはRS-232-Cまたはキーボード?
    > 	#スピーカを使うのがソフトウエアの面からして、
    > 	#一番安直でよさそうなんですが、
    > 	#スピーカへの信号ってどういう仕様なんだろう?(^^;
    > ・PCからの電源(5V)とGND(キーボードインタフェース)
    
    電源は今のところ、余っているドライブ用の電源線から横取りしています。
    
    > (2)出力
    > ・PCへのリセットスイッチ相当のためのON/OFFを行うスイッチ端子
    > ・現在、リセットを押しているのかどうかを認知するためのLED
    > ・出来れば、割り込みを発生させるための信号線(オプション(^^;)
    > 
    > (3)動作仕様
    > ・ハングアップしたかどうかの判定時間は10分間とする
    > 	#その後の状況で変えると思うけど
    
    正確に10分間である必要はないので、CR回路による実現で十分。
    	#しゃれじゃないよ(^^;
    
    > ・10分間以内に少なくとも1回のタイマリセット要求(つまり正常動作の通知)
    >   が、ソフトウエアから来ない場合は、10秒間程度のリセット動作に入る
    
    リセットスイッチまたは電源スイッチの操作なのでリレーでチャタリングが
    出ても気にしなくていいっす(^^)
    
    > ・リセット動作後は、再び10分間のハングアップ判定期間に入る
    > ・WDTの電源供給が行われない場合は、リセット動作は行われないままで
    >   あることとする
    > ・オプションとして、ISAスロットに挿入して、割り込みをあげることも
    >   将来的には検討する
    > 	#多分やらないな(^^;
    
    > 3. WDT ハードウエアの作成への道
    > ・ハードウエアを作成するにあたり、(有)エスケイ電子のキット「FFパタパタ」を
    >   改造して使用することとする(以下、上記キットを「キット」と記述する)
    > ・キットはTC4538BPを使用しており、そのままの仕様では、一定時間毎に
    >   リレーのON/OFFしか出来ない
    > ・上記の間欠動作を何とかしてリトリガ(?)すれば目的は達成できそう
    > ・TC4538BPのデータシートにはリトリガしているタイムチャートが載っている
    

    回路図と解説

  • WDTボード
  • 基本的にはコンデンサ(C)と抵抗(R)で決まる充電/放電時間を利用したタイマーと、そのタイマーを制御するIC(TC4538BP)、及びスイッチとなるリレーなどで構成されています。
    電源は5Vで動作します。PC本体のリセットスイッチを制御する場合は、PCの中から電源を取れば良いでしょう。しかしながら電源そのものを制御する場合は別に取った方が無難であると思います。

    なお、このWDTボードはキットとして市販されているものを少し改造しただけです。

    改造しているところや、定数を変えているところは、図中にで示しています。

    キットの情報はこれまたFA-NET MLに流したものを引用します。

    > (2)キット名「FFパタパタ」1350円
    > 	#このネーミングセンスの悪さは、私に通じるものが(^^;
    > 
    > 	#ちなみに両方ともキットの作成元は福岡市東区の
    > 	#エスケイ電子だとか(^^;;;;;;;;;;;; 電話してみよう(^o^;
    
    
    (有)エスケイ電子の連絡先は、キット付属の説明書によると

    〒812
    福岡市東区社領3-3-2
    TEL: (092)623-0717
    です。

    尚、同社のキットは「C'z kit」(シーズ キット)というシリーズになっていて、他にもいくつか面白いキットがあるようです。

    私がなぜか、秋葉原の千石通商で購入しました(^^;

    本日(1997/8/31)、壊した(^^;ICの補充に、福岡のカホパーツセンタに行ったのですが、シーズ キットの他にも、同様のキットは出ていまして、ワンダーキットやエレキットの名前で売ってました。

    > 特長:
    > ・フリップフロップの回路のように、リレー出力(ON/OFF)をくり返し制御。
    > ・リレーのON時間、OFF時間は独立して自由に設定可能。
    >   (タイマー設定範囲/約2秒〜200秒)
    > ・リレーの制御電力は300W(MAX)
    > 
    > これも回路図を見てますが、TC4538BPって、何か知らないんですが(^^;
    
    これについては、その後分かりましたm(_|_)m
    日立のHD14538BPも同等品です。
    
    > どうもCR回路の放電時間を利用してFFを反転させているだけみたい。
    
    どうも、放電ではなくて、充電時間を利用しているようです。
    
    > 	#これも充電と放電のための制御が入っているのが
    > 	#うれしいのかなぁ。
    
    キット改造内容についてもFA-NET MLに流したものを引用します。
    > キットからの改造分は、
    > ・パターンカット1個所
    > ・ジャンパ線1個所
    > ・抵抗値変更1個
    > ぐらいです。
    
    今のところ、
    ・パターンカット2個所
    ・ジャンパ線1個所
    ・抵抗値変更1個所
    ・抵抗追加1個所
    でした。
    
    > 現在はリセットスイッチを人間の変わりに押す仕様ですが
    > ONとOFFを入れ替えれば、逆に電源をOFF/ONするようにも出来るはずです(^^;
    
    これに関しては、6 .いくつかの問題点で示すように現状のようにPCからWDTの電源を取る場合ではうまく行きそうにありません。
    #あたりまえかも(^^;
    > 後の課題は、
    > ・スピーカのところに来ている信号のインタフェース仕様解析
    > ・上記に従い、レベル変換や保護用のダイオード/抵抗の追加
    > ぐらいかなぁ...
    > 
    > これを付けたおかげでかえって不安定になるのだけは避けたいところです(^^;
    

    動作タイムチャート

  • タイムチャートは下記のようなものになると思います。

  • すべてはスピーカへの出力により始まります。

4.用意したsoftware

[次へ][前へ][目次へ]

基本的にcronで3〜4分毎にBeepを鳴らすだけです(^^;

#ネットワークはハングアップしているけどcronは動いているような場合には、
#対応できませんが、今までのハングアップの例ではキー入力も効かないほどの
#ハングアップ状態であったので、このような運用で大丈夫だと思っています。
FA-NET MLに流したものを引用します。
> 2.1 WDT 制御ソフトウエア仕様
> (1)入力
> ・特になし
> 
> (2)出力
> ・一定時間毎にスピーカを鳴らす動作を行う。
>   具体的には、cronの設定で3分毎に echo ^G > /dev/console を実行する
> 	#WDTが、これで良いのか?(^^;;;;;
と、言うわけで設定はcrontab -eでエディタを立ち上げて、
*/3 * * * * echo ^G > /dev/console

と書けばおしまいです(^^;

^Gの部分はCtrl-Gですが、入力する場合には先にCtrl-Vを入れてからCtrl-Gです。

#BIOSかBeepを鳴らしてからLinuxが最初にBeepを鳴らすのに
#非常に時間がかかる場合は、rcファイルの中でもBeepを鳴らすようにしてみてください。
また、カーネルの一部は生きているけど、NIC周りがおかしくなってremoteからのメンテナンスが出来なくなるような状況を考えて、今後は外部に定期的にpingを行い、その結果が正常である場合にはBeepを鳴らすように変更しようと思っています。

5.動作確認をしたもの

[次へ][前へ][目次へ]

動作したものを示します

  • スピーカへの出力で、想定した一定時間後にリレーが動作することを確認した(^^)v
  • 逆に言うと、まだリセットスイッチには繋いでいない(^^;
  • が、しかし自宅でpre版のカーネルを使って、実際にカーネルがハングアップした状態で、目論見どおりリレーが動作する事は確認した(^o^)

6.いくつかの問題点

[次へ][前へ][目次へ]

6.1 PC/ATのスピーカインタフェース仕様 [解決(^^)]

これに関しても、FA-NET MLに流したものを引用します。
> 柴田(ひ)@福岡です。
> At [FA-NET:2230] Re: 番犬作成計画  (was Re: TA 2analog port to mgetty ,
> Hisaaki Shibata said...
> 
> 
> > 後の課題は、
> > ・スピーカのところに来ている信号のインタフェース仕様解析
> 
> IntelのWebからチップセットのデータシートをpdf形式で持ってきて
> 中を見たところ、スピーカのドライブは通常のトーテムポールでの
> 出力で、レベルはTTL互換みたいです。
> 
> 	#TTL互換といっても、スピーカを鳴らすぐらいだから
> 	#かなり強力な出力段みたいですね。
> 
> > ・上記に従い、レベル変換や保護用のダイオード/抵抗の追加
> 
> 何も要らないかも知れません(^^)
と、思っていたのですが、
At [FA-NET:2234] Re: 番犬作成計画  (was ... ,
Hideki Wakita said...
> 
>   こんにちは。 柴田さんの「ちょっとした大きな改造」は、面白いですね。
> 
>   参考までに、本家PC/ATボードでは、
> 75477 の出力から、0.01μF のコンデンサでGNDに接続後、30Ωの抵抗を通して
> スピーカのコネクタに接続されています。  
ん?トーテムポールにしては何かおかしいぞ(^^;
At [FA-NET:2237] Re: 番犬作成計画  (was ... ,
Hisaaki Shibata said...

> 柴田(ひ)@福岡です。
> 
> 	#脇田さんの情報が無かったら、
> 	#とんでもないことになっていたかもm(_|_)m
> 
> At [FA-NET:2236] Re: 番犬作成計画  (was ... ,
> Hisaaki Shibata said...
> 
> > > >	#TTL互換といっても、スピーカを鳴らすぐらいだから
> > > >	#かなり強力な出力段みたいですね。
> 
> と、思っていたんですが、
> 
> > >   参考までに、本家PC/ATボードでは、
> > > 75477 の出力から、0.01μF のコンデンサでGNDに接続後、30Ωの抵抗を通して
> > > スピーカのコネクタに接続されています。  
> 
> と、言うことで
> http://www.ti.com/sc/docs/psheets/abstract/datasht/slrs025a.htm
> からSN75477でデータシートをこれまた便利にpdfで取り寄せて中を見て
> びっくり(@_@)
> 
> Continuous output current (see Note 2) 400 mA
> Peak output current: t w 3 10 ms, duty cycle 3 50% 500 mA 
> t w 3 30 ns, duty cycle 3 0.002% 3 A 
> Output clamp current, I OK 400 mA
> 
> などと書いてました。
> 
> 等価回路を見てみると、出力段はトランジスタがついていて
> クランプダイオード付きのオープンコレクタになっているようです(^^;
> 
> 	#Intelのチップも実際は外付けのトランジスタを使うんだろうなぁ。
> 	#やはりスピーカはノーマルTTLとは言ってもドライブできないよなぁ。
> 
> てなわけで、
> 
> > > >> ・上記に従い、レベル変換や保護用のダイオード/抵抗の追加
> > > >
> > > >何も要らないかも知れません(^^)
> 
> やはり何か要りそうです(ToT)
> 
> 問題は、何ボルトで釣り上げているか調べることですねぇ。
> 	#面倒だなぁ。どこかに書いていないかなぁ。
こう言う状況でした。しかし脇田さんが再び(^^)
> At [FA-NET:2238] Re: 番犬作成計画  (was ... ,
> Hideki Wakita said...
> 
> >   脇田@久留米です。
> > 
> > Hisaaki Shibata  さんは書きました:
> > >柴田(ひ)@福岡です。
> > >
> > 
> > >問題は、何ボルトで釣り上げているか調べることですねぇ。
> > >	#面倒だなぁ。どこかに書いていないかなぁ。
> > >
> > 
> >   再び、本家PC/ATでは、次のようになっています。
> > 
> >   SPEAKERコネクタの No.1 pin --> 30Ω(75477-6pin)
> >                     No.2 pin --> none (ポラキー)
> >                     No.3 pin --> GND
> >                     No.4 pin --> +5V
> >   75477が、オープンコレクタならば、スピーカは、No.4〜No.1 pin の間に
> >   接続してあると思われます。 ただ、外部電源より供給されていれば、
> >   わかりませんが... 。よって、常識的には、+5V で釣ってあるでしょう。
> > 
> >   参考になれば幸いです。
> > 
> > PS : 情報ソースは、
> >      「別冊インターフェース BootStrap Project-2 No.4  CQ出版」です。
いやー、結局特殊なインタフェースは何も要らないみたいです(^^)

いいかげんながら、50kΩほどのpull-up抵抗を繋いで、上記のNo.1 pinに 繋ぐことで何とか十分スイングしてくれているようです。
但し、スピーカは繋いでいないため、Beep音は聞こえなくなりました。
サーバ機は人里はなれた山奥に置かれることが多いので、Beep聞く人もいないだろうし問題ないよね?(^^;

6.2 本来Watch Dog Timerとはどうあるべきなのか?

/usr/src/linux/Documentation/Watchdog.txtによると
Features
--------
                WDT501P         WDT500P         Software
Reboot Timer       X               X                X
External Reboot    X               X                o
Temperature        X               o                o
Fan Speed          X               o                o
Power Under        X               o                o
Power Over         X               o                o
Overheat           X               o                o

The external event interfaces on the WDT boards are not currently supported.
Minor numbers are however allocated for it.
と書いてあります。
今回作成したWDTはReboot Timerのみoがついているのだと考えております。
と、するとSoftware WDT + 今回のWDTで完璧なの?
でもなぜ、Software WDTでTemperatureにoがつくのか、さっぱり分かりません(^^;
もしかして、xとoの意味が逆なのかな???

そして、本来のWatch Dog Timerとはどのような機能を持ったものなのか、良く分からなくなりました(^^;
どなたかご教示くださいm(_|_)m

と、行っていたんですがWatchdog.txtの著者であるAlan Cox氏にメールを出して直接聞いてみましたm(_|_)m
その結果、ある程度疑問が氷解しましたので、メールを引用してみます。

At Re: Question about Documentation/watchdog.txt ,
Alan Cox said...

> > (1) X means Available and o means NOT Available ?
> Yes
> 
> > (2) If so, How software WDT can reboot hardware in case of the kernel panic ?
> 
> It does it off a timer interrupt. This means if it crashes with interrupts
> disabled not a lot happens, and the watchdog fails to recover the machine. Thats
> one limit of the software watchdog
> 
> > (3) What does "The external event interfaces on the WDT boards" mean ?
> 
> There are two digital inputs on the WDT boards that can be set to cause
> an interrupt if triggered, or to fire the watchdog (eg to reboot the machine
> externally)
更にこれに対して私が以下のように再度質問していますm(_|_;)m
At Re: Question about Documentation/watchdog.txt ,
Hisaaki Shibata said...

> > > (3) What does "The external event interfaces on the WDT boards" mean ?
> > 
> > There are two digital inputs on the WDT boards that can be set to cause
> > an interrupt if triggered, or to fire the watchdog (eg to reboot the machine
> > externally)
> 
> Hmmmm... two inputs.... Is the following diagram right?
> 
> +---WDT---------+
> |               |
> | the 1st input +<------IRQx-------< any other hardware
> |               |
> | the 2nd input +<------force REBOOT signal------< external reset hardware
> |               |
> | reset output  +--------> PC mother board RESET circuit
> +---------------+
> 
> I thought the 1st is output.
> 	If WDT go in the warnig status, WDT asserts IRQx for warning.
> 	And if software retrigger or reset WDT, the IRQx will be negate.
> 	Or time is up, WDT force RESET.

この返事はシンプルで
At Re: Question about Documentation/watchdog.txt ,
Alan Cox said...

> 
> Near enough for the WDT500 hardware I am using. 
> 
でした(^^;

6.3 電源投入時の招かれざるRESET信号の発生....

現在のWDTはリセットスイッチをON/OFFするため、電源はPCの内部から取っています。
この時、PCの電源投入時に、設計時点で予期していないリセットパルスが出てしまいます。タイムチャート参照
リセットの場合には、別にかまわないような気もするんですが、電源OFF/ONする場合には、大問題です(^^;。
PCの電源OFF/ONの場合には、WDTの電源はいやでもPC以外から取ることになるでしょうが、そうすれば自然に解決する問題かもしれません。
やはりATXのマザーにして5Vのサブ電源で動くようにしたいところです。
#どなたかATX機をください(°° )\バキッ☆
#現在私はAT機しか持っていません(T_T)


7. そのうちやること

[次へ][前へ][目次へ]

7.1 必ずやる

(1)早期組み立て及び自宅での検証
一応、動いているようです。ただし、正常動作のときにリレーが動かないことと、cronを止めた時にリレーが動くことのみの確認であって、実際にリセットさせているわけではありません(^^;
どなたかカーネルまでハングアップさせる方法をご存知ないでしょうか?(^^;;;;
これは、前述したように1回だけですがきちんと動作し、解決しました。
(2)his.ktarn.or.jpへの組み込み

7.2 気が向いたらやる

(1)RS-232-Cインタフェース版またはセントロインタフェース版の作成
(2)NMI割り込みへの対応
でも、OSかBIOSに手を入れないとだめなんだろうなぁ....

7.3 お金があったらやる

(1)ボードのマスクを起こしちゃう...キットがあるから無駄だな(^^;

8.謝辞

[次へ][前へ][目次へ]

今回、「番犬作成計画」を始めた際にFA-NET-MLの皆さんにいろいろと情報を頂きました。特に星野さんには検討の場を提供していただきありがとうございます。純正PC/ATの作りに関して教えていただきました久留米の脇田さんにも感謝いたします。
また、TC4538BPのデータシートをメールで送っていただきました大分の森永さんと、東芝のWebサイトを教えていただきました東芝の石岡さんにも感謝いたします。
ありがとうございます。m(_|_)m

以上 投稿者 his : 1997年9月13日 00:09

このエントリーのトラックバックURL: http://hoop.euqset.org/blog/mt-tb2006.cgi/25
コメント
コメントする









名前、アドレスを登録しますか?





画像の中に見える文字を入力してください。