RBIO-2U

社長にRBIO-2Uを買ってもらった。

USBインターフェースだが、Ubuntu 9.04 Desktopのマシンに繋いだら、USB Serialportとしてサックリ認識。

ターミナルで”PCR01″とかコマンド送るとリレーがカチカチ作動する。

使い方は色々あるが、例えば、パソコンの温度が高い時に、外付けの強力な電動ファンのスイッチを自動で入れるとか、炭酸ガスボンベのソレノイドバルブを開閉するとか応用次第で色々楽しそうな事ができそうだ。

リレー出力10、入力4だが、入力ポートが結構おもしろい。GNDと入力の線を短絡させて、RBIOに”FB0″とコマンドを送ると”0″と返ってきて、開放状態だと、”255″という文字列がシリアルから返ってくる。

これも色々と応用が効くが、出力と入力と合わせて、電動ねずみ取り機とか作れるな(笑)

餌のチーズに触れると、入力で検知して、リレー出力で扉をガシャンと電動で閉じるってな具合。果てしなく無用の長物感がするが、まあパソコンで入力の判断と出力ができるってのが色々応用できて、おもちゃとして面白い。

UCAM-DLF30MBK

UCAM-DLF30MBKを社長に買っ貰った。
早速、Linuxマシンに接続してみたが、xawtvで何の苦労も無くあっさり使えた。

で、キャプチャソフトを探してみると動体検知ができる motion なるものがあった。
これは良くできていて、daemonとして常駐し、httpでコマンドが送れる。

マニュアルでスナップショットを取るとかできるし、イベントトリガーで、キャプチャが終わったら、任意のコマンドを実行するとかできる。

組み立て方次第で、機能拡張できるから、システムに組み込むのに便利だ。

家で色んな箇所を監視するんだったら、これよりも、ZoneMinderの方が良さそう。

RTX-1200設定

ひかり電話で使用しているフレッツ光のインターネット回線が、接続されずに遊んでいるそうなので、RTX-1200の設定弄って、メインのインターネット接続が障害で落ちた場合に、フレッツ光の回線を使うように設定した。

ip route default gateway pp 1 hide gateway pp 2 weight 0
ip lan3 address dhcp

pp select 2
description ntt
pp keepalive use off
pp always-on on
pp address 192.168.24.1/32
pp enable 2

と設定して、CTUの線をRTX-1200のlan3へ入れた。
RTX-1200はCTUのDHCPからIPアドレスを貰って、lan3インターフェースのIPアドレスが決定する。

自席のマシンから、ping 192.168.24.1 ってやると応答があるので、ちゃんとルーティングされてるっぽい。

非常時の回線として、一応、インターネット接続だけは確保できるが、VPNまでやろうと思ったら、CTUを取っ払って、ONUへRTX-1200を繋いでPPPoEとかでネゴればいいのかな?

しかし、VG820aを普通にRTX-1200にぶら下げて、ひかりオフィス電話が使えるのかよく分からん。多分、VG820aのパケットを、ONUのインターフェースを通るようにRTX-1200を設定してやらないと電話は使えないだろう。

あ、VG820aに固定IPアドレスを振って、
ip route 192.168.XXX.YYY/32 gateway pp 2
って設定してやればいいのか。

まあ、VPNを完全にバックアップ回線対応とするには、VPNの接続相手のルータ全ての設定やらないといけないから、お手軽にできるのは、CTUにぶら下げるところまでだな。

AHCI HotPlugを試す

Ubuntu 9.04 desktopでSATA IIディスクのHotPlugを試してみた。

挿した途端に、/var/log/messagesに認識されたログがでて、fdisk /dev/sdb もちゃんとできた。2台めの増設とか、RAID1の不良ディスク交換などは、AHCIなら無停止でできる訳だな。

あとやってみたいのが、RAID1で/dev/sdaがdegradeしたケース。
抜いたら /dev/sda が消えて、挿したら再び、/dev/sda が現れるのかな?

/dev/sdb になる場合は、抜き差ししても /dev/sdb として認識したから、多分、 /dev/sda でも大丈夫そう。

いつもは、VirtualBoxでシミュレーションしているが、SATA IIのディスクのHotPlugだけは、実機を使わないと試せないから、今の内にノウハウを貯めておこう。

RAID mdadmメモ

マシン起動時に、RAID1を構成するハードディスク2台中1台がdegradedになってる時、mdadmdで、「不良ディスクがあるけど起動するか?」って聞いてきて、’y’を入力しないと、コマンド待ちで止まってしまう。

これでは、稼働率が落ちてしまうので、入力待ちにならないようにするには、
echo 1 >/sys/module/md_mod/parameters/start_dirty_degraded

とやれば良い。

RAIDの状態がおかしくなっていれば、どの道、mdadmdにより、メールが飛ぶから分かるし、対処するまでは稼働し続けるのが望ましい。

Ubuntu 9.04 の動画プレーヤーでDVD再生の音が出ねえ

mplayerとかVLCでDVDは再生できているが、動画プレーヤーのtotemで映像が出るのに音が出ない。

Ubuntuのフォーラムに書いてあった

sudo wget http://www.medibuntu.org/sources.list.d/jaunty.list –output-document=/etc/apt/sources.list.d/medibuntu.list sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update sudo apt-get install w32codecs libdvdcss2 non-free-codecs

対策を実施するも、やっぱりtotemで音が出ない。

まあ、動画プレーヤーのDVD再生だけだからいいけど。

【Ubuntu 9.04 on USB Memory】更にRAMDISK化とwine入れた

~/.mozilla と ~/.mozilla-thunderbird のディレクトリをRAMDISK化。

これも、再起動、または、シャットダウン時に書き戻す。FirefoxのWebページ閲覧時に、USB MemoryのLEDがチカチカしていたのが無くなった。

今の所、書き戻しているのは、

/var/log
/var/cache
~/.mozilla*

で、rsync -a –delete …でやっているのだが、実は、昨日、/var/caheの書き戻しに失敗し、全部消えてログイン出来なくなった(笑)

/var/cache をRAMDISK化するのは、インストールしたパッケージを残す設定にしていたりすると、非常に大量の容量を必要とするから、実メモリが少ないマシンは要注意。

後、wineを入れてみたが、tvantsとか動いて感動。
時代は進んだものだとしみじみ思う 🙂

【USBメモリUbuntu9.04】更に危険な設定へ

/etc/sysctl.conf へ
vm.dirty_writeback_centisecs = 360000

を追加。遅延書き込み1時間  😀

/etc/init.d/mountall.sh/etc/init.d/umoutfs を変更。

/etc/fstab で手を入れたのは次の通り

UUID=0c3d26d3-43e3-4291-b618-18c9a3659ccf /               ext3    noatime,errors=remount-ro 0       1
/dev/shm        /ramdisk        tmpfs   defaults                0       0
/dev/shm        /tmp            tmpfs   defaults                0       0

root file system の relatime を noatime にして、アクセスタイムのディスク書き込みをしないようにしている。

そして、/tmp をスクリプトで設定するんじゃなくてfstabでやるようにした。

/ramdisk はUSBメモリに書き戻すデータの置き場所にしようかと考えているが、遅延書き込み周期を長く取ったので、要らないかな?

ユーザのホームディレクトリに作られるアプリケーションの設定ファイルの書き込みが困ったもので、現状だと、ログイン時にRAMDISKに移動させてシンボリックリンク貼りまくりという愚策しか思い付かん。

なので、今のところは個別アプリで、ディスクアクセスの多そうなものの設定を弄って、遅くて書く度に寿命が縮まるUSBメモリへの書き込みをできるだけ回避している。

Tunderbird は、IMAPのアカウントで使っているが、そんなに沢山のメールを貯めていないから、サーバ設定の「メッセージの保存先」を /tmp/noizumi に設定。

IMAPの場合、「メッセージの保存先」にサマリーを生成するだけなので、揮発しても次にマシン再起動した際に若干時間が掛かる程度なので、特に問題は無い。

ROM RAM ベースで動かすと、古いマシンでも充分快適に動くな。

Ubuntu 9.04 on USB Memory

RUF2-P8G-BKにUbuntuを入れようと試みるが、USB起動ディスクで作ると、サイズは700MB程度とコンパクトで良いのだが、ISOイメージを入れてくれるのとRead Only Mountなので、アップデートとかできない。

普通にインストールしたが、このままでは、書き込みが多いlogとかtmpとかのディレクトリのせいで、Flash ROMがすぐ死んでしまいそう。

そこで、RAMディスクに頻繁に書き込みのあるディレクトリを割り当て、Flash ROMの急速な劣化をさける対策をした。

rootファイルシステムは、noatimeオプションでマウント。
/etc/init.d/mountall.sh

case “$1″ in
start|””)
do_start
mkdir -p /mnt/tmp
mkdir -p /mnt/log
mount -t tmpfs /dev/shm /mnt/tmp
mount -t tmpfs /dev/shm /mnt/log

/usr/bin/rsync -a /var/log /mnt

mount –bind /mnt/tmp /tmp
mount –bind /mnt/log /var/log
chmod -R 1777 /tmp
;;

/etc/init.d/mountall.sh

stop)
umount -l /tmp
umount -l /var/log
/usr/bin/rsync -a –delete /mnt/log/ /var/log

do_stop
;;

/var/log はシャットダウンや再起動時にrsyncで書き戻す。
/tmpはそのまま揮発していただく。

最初、mount –move でやろうとしたが、umount時にRAMディスクが消えて無くなるので、書き戻せず、–bindでマウントした。

結構いい感じだが、やはり/homeの細々とした書き込みのせいで、時折、重たくなる事もある。 今のマシンはメモリ768MBしか無いから、これはさすがにRAMディスクに持っていくのはヤバい。

LinuxのRAMディスクの/dev/shmはデフォルトで、最大実メモリの半分までのサイズを持ち、実メモリの使用が増えると縮んでくれる優れもの。

実メモリの使用が増えて、RAMディスクの実使用サイズを脅かすようになるまで、稼動させた事は無いが、こういうクリティカルなケースになったら、RAMディスクのマウントが外れるのかな?

Cyrus IMAPd監視ツール

社内メールサーバに障害が起こっていたが、Cyrus IMAPdのDBのログのownerがrootになっていて書けないという原因だった。

/etc/init.d/cyrus-imapd stop
chown cyrus.imap /var/lib/imap/db/*
/etc/init.d/cyrus-imapd start

とやって、 再びstartさせたら治ったが、ログを見る限りでは、DBのログローテーションタイミングで、ctl_cyrusdbが新たに作成したログへの書き込みに失敗しているという感じ。

Web検索すると、Macの事例がちょこっと読めたりするのだが、英語のメーリングリストまで当たってみても、具体的にどういう対策を採れば解決するのかという情報は皆無で、バージョンは今2.2.12だが、2.3.xに上げたとしても直る保証がない。

何しろ、DBのログローテーションのタイミングで起こるので、よっぽど大量のメールを処理してても滅多に起こるものでもない。しかし、休日に呼び出されるのも嫌なので、ログを監視して自動復旧するツールを作った。

昔、perlでpppのログ監視して、pppが切断されたら再upとか、PCMCIAのAirH”カードを再初期化するツールを作っていたので、その応用で、maillogを監視し、ctl_cyrusdb\[\d+\]:.*DBERROR.*Permission denied ってのに反応するようにした。

Cyrus のdeliverはIMAPdでスプールできないと/var/spool/mailに落としてくれるので、

formail -d -s sendmail hoge</var/spool/mail/hoge

とかやると、落っことしたメールを再配送できる。

監視ツールでは、この再配送までを自動でやるようにしてはいるが、実際に障害が起こらないとうまく動くかは分からないんだなこれが(笑)