[etc] 東京出張の前泊で、お昼に東京入りして秋葉原に行った。 秋葉原をちゃんと歩くのは初めてでかなり迷ったりした。 秋葉原での戦利品。
[i386/cbb] [元ネタ] よく考えたら使った ATA アダプタが サポートしてないやつだっただけで cbb0 は悪くないのかなあと思いはじめた。 現在、ダイイチ(最近はデオデオっていうらしい(笑))が全面改装中につき 広島付近には WLI-PCI-OP が売られていない状況。 東京には置いてあったのになあ。 しかも秋葉原では初めて見る他社製品もあった。 やっぱ買っとけばよかったか。
WLI-PCI-OP には取り出しボタン(?)みたいなのがないんだけど、
どこのか忘れたけど他社製品にはあった。
無線 LAN カードは頭でっかちだから取り出しやすいんだけど
最初からそれ以外のカードを使うことが目的なので
他社製品に絞ってみよう。
[続き3]
[続き4]
[続き5]
[続き6]
[i386/bktr] 当初からの目標であったビデオキャプチャボードを買った。 I-O DATA の GV-VCP2M/PCI。どっちみち載ってるチップは Bt848 系なので メルコ製品でもよかったんだけど広島のSマップにはこっちしか置いてなかったの。 さっそく取り付けてみる。NetBSD ではこんな感じ。
なんか認識に成功してるとは思えないような dmesg なんだけど、 ちゃんと fxtv で使える。 fxtv でキャプチャも出来るらしいんだけど、よく分からないので諦める。bktr0 at pci2 dev 3 function 0 bktr0: interrupting at irq 10 bktr0: Warning - card vendor 0x10fc (model 0x4030) unknown. bktr0: Pinnacle/Miro TV,tuner. Brooktree product 0x0878 (miscellaneous multimedia, revision 0x11) at pci2 dev 3 function 1 not configured
[MI/apps] 平日や夜中のラジオ番組をよく聞いている。 社会人ともなるとさすがにリアルタイムでは聞けないので 録音しておいて聞くことになる。特に木曜の夜から金曜日にかけて 合計7時間の録音をしなければならないためカセットテープデッキは 当然不可能なので、ビデオデッキにステレオコンポの出力を突っ込んで 録音していた。しかしその時間帯に録画したいものがあって困ったちゃん だったり...。 そんなこんなで i386 マシンを買ってからは NetBSD/i386 マシンのサウンドカードにステレオコンポの出力を 突っ込んでそっちで録音している。 録音は audiorecord(1) で出来て、再生も audioplay(1) で出来るのだが、 2時間の番組を途切れることなく聞き続けるのは無理がある。 変な CM や長い歌は早送りしたいんだけど、audioplay(1) じゃ無理。 辛うじて一時停止は ^Z で出来るけどね...UNIX 万歳(笑)。 しかも2時間程度なら我慢して聞けなくはないが、私の場合 番組3本合計9時間あるので、さすがに一時停止や早送りがないと厳しい。
ということで、.au ファイルをカウンタ付で再生できて 早送りなんかもできるプレーヤを入手するか、あるいは mp3 に 変換して gqmpeg で聞くかしたいと思っていた。 au を再生できるイケてるプレーヤが見当たらないので 面倒だが mp3 に変換することにする。 .au → .wav → .mp3 って訳ね。 オーディオファイルのコンバータといえば sox ってのが 有名なんだけどうまくいかない。出来上がった wav ファイルは 聞けるんだけど bladeenc がファイル形式がうんたらとか言って 変換を開始してくれない。 意味が分からないので仕方なく FreeBSD ports から使えそうなのを 探す。afsp っていうのがよさそうな感じがしたので NetBSD に移植(といっても ports から pkgsrc への、ね)してみる。 パラメータをいろいろみているうちにやっと変換できた。 sox でもパラメータさえ合わせれば出来たんだろうね。sox ごめんなさい。 ちなみにこうやる。
これで快適に早送りしながらラジオが聞ける。ResampAudio -s32000 -Fwave -Dinteger16 radio.au /tmp/radio.wav bladeenc /tmp/radio.wav
変換を試行錯誤してる途中に Windows 上のコンバータを 使ってみた。カウンタや早送りボタンのついたコンバータ兼プレーヤで あっさり .au ファイルを再生できた。これなら変換する必要ないじゃん。 でも Windows で暮らすのは私に死ねと言ってるようなもんなので却下。 VMware 買おうかなあ。
[x68k] 最近 X68k の話題がないのは i386 で遊び呆けているから、 ではなく、地震対策で X68k のディスプレイが疎開してるから。 ディスプレイがなくてもネットワークさえ繋がってれば使えるのが UNIX じゃないかと思ったあなたはまだまだ甘い。 つーか私の方が甘いんだが、NetBSD/x68k 1.5V で rc.local で SLIP の設定をしてるつもりなんだけどうまく動いてくれなくて root でログインして設定しないと動かない状態なのよん。 早く地震来てくれないかなあ(不謹慎)。 つーかもうちょっと室内を地震に強くしとかないと昼も寝られない(笑)。
[i386/vmware] 案の定いちいち Windows2000 を立ち上げなおすのが 面倒になってきて、かつ Win2000 にいる時はろくにメールも読めない ので、最近アナウンスのあった NetBSD 用の VMware を入れてみることにする。 announce@NetBSD.ORG に流れた通り Linux 用バイナリとライセンスを 取得し、インストールする。この辺は NetBSD 用のアーカイブの中の README を見ればだいたい出来る。というか複雑すぎてもう忘れたので 書けない。
うちはユーザランドが 1.5 でカーネルだけ 1.5V を使ってたんだけど VMware のカーネルモジュールは 1.5 ブランチ用に作られているらしく -current では再コンパイルが必要とのこと。ユーザランドのアップグレードは 面倒なのでカーネルだけ 1.5.1 に上げる(下げる)ことにする。 x68k で 1.5.1 を試すために 1.5-branch のフルソースはすでに 手元にあったので i386 カーネルをさくっとコンパイルして再起動。 無事モジュールの組み込みに成功。 vmware を起動してコンフィグレーションの設定をする。 バーチャルマシン起動時の BIOS 画面でフロッピー触りに いってホストである NetBSD がフロッピーのエラー出すので バーチャルマシンの BIOS でフロッピーを無効にしておく。 Window を起動したが、画面モードが切り替わるあたりで vmware 自体が落ちた。使えねえ。
vmware で NetBSD から FreeBSD を立ち上げてみて嬉しいことって なんだろう、、、とか考えながらも 仕方なく FreeBSD を上げてみることにする。 あっさり起動。あまりにあっさり起動したので拍子抜けするくらい。 なのでネットワークの設定をしてみる。 NetBSD の vmware はブリッジモードをサポートしていないので ホスト OS をルータに仕立てる必要がある。 おまけにゲスト OS である FreeBSD は、裏パーティションにいて 普段はデュアルブートになっているため IP アドレスはホスト OS と 一緒。これじゃ使えねえ。 ということで、ゲスト OS である FreeBSD の /etc/rc.conf を このように書き換える。
vmware バーチャルマシンが搭載しているネットワークカードドライバは FreeBSD からは lnc0 として見えるので、 ifconfig して lnc0 があるかないかで変数を書き換えるわけ。 UNIX って素晴らしい(笑)。/sbin/ifconfig lnc0 > /dev/null 2>&1 if [ "$?" = "0" ]; then ifconfig_lnc0="inet 192.168.10.2 netmask 255.255.255.0" defaultrouter="192.168.10.1" hostname="haruka" else ifconfig_fxp0="inet 192.168.0.10 netmask 255.255.255.0" defaultrouter="192.168.0.1" hostname="erika" fi
これで、ホスト OS 側でルータを起動すれば出来上がり。 ちゃんとゲスト OS から、物理ネットワークの向こうにある ホームディレクトリもマウントできるし。
vmware は画面の描画がやはり遅いので、 vmware で UNIX を使う場合 ゲスト OS の X の画面だけホスト OS 側に飛ばすのが定石。 NetBSD だといい感じに MPEG を見れるアプリがないんだけど この技を使えば NetBSD で見れなかった MPEG 動画を ゲスト OS の FreeBSD 上のアプリケーションで起動して X の画面だけ飛ばせば見れることになる。 これは価値がある。 と思ってさっそくやってみようとして驚いた。
NetBSD の vmware がオーディオデバイスをサポートしてねえ...。
これじゃなんのための vmware で FreeBSD だか訳分からんなあ。
[x68k/SLIP] NetBSD/x68k と FreeBSD マシンの間を SLIP で接続しているが、どうもうまくいかない。 と思って今日久しぶりにやってみた。 NetBSD/x68k 1.5.1_BETA2 だと正常に接続できる。 どうやら NetBSD/x68k-1.5V カーネルが壊れたパケットを 飛ばしていることが原因のようだ。 対向の FreeBSD 側で sl0 を tcpdump した結果がこんな感じ。
明らかに13バイト目からおかしい。 こういうのって x68k 固有の問題とは思えないんだけど まさか誰一人 NetBSD-current で SLIP を使ってないなんてことはないよなあ。 そういえば 12バイト目の c0 って SLIP 的に意味があるバイトだったような気もするし、 また来週あたりにでも調べてみよう。kyoko:~# tcpdump -nxpi sl0 tcpdump: listening on sl0 22:08:42.381470 truncated-ip - 59 bytes missing!192.69.0.0 > 84.0.29.0: icmp: ec ho reply 4500 0054 001d 0000 ff01 3038 c045 0000 5400 1d00 00ff 0130 38 22:08:43.395819 truncated-ip - 59 bytes missing!192.69.0.0 > 84.0.31.0: icmp: ec ho reply 4500 0054 001f 0000 ff01 3036 c045 0000 5400 1f00 00ff 0130 36
[x68k/SLIP] 地震が8月くらいまで延びたようなので 疎開していた X68k のディスプレイを元に戻して、ちょっと X68k で 遊んでみることにする。とりあえず -current カーネルで SLIP が 動かないことには使えないので、まずはそれから。 対向の FreeBSD 側からパケットを投げて X68k の sl0 を tcpdump すると ちゃんとしたパケットが届いているのが見えるので、 やはり x68k-current の sl0 へのパケット送信のどこかがおかしいようだ。 最新(1.5W あたり)のカーネルに作り直してから再度実験してみる。
どうもだめっぽい。うーんどこが原因だか分からん。
[x68k/SLIP] x68k で対向に ping を打ちながら tcpdump してみる。 って簡単に書くけどコンソールが1画面しかなくてこれをやろうとすると 結構つらいものがあるよね。画面2分割するコマンドなんていうんだっけ。 思い出せない。 tcpdump してみてびっくりしたけど、まともなパケットをタップできてる。 しかし対向の FreeBSD 側の tcpdump は壊れたパケットを拾っている。 NetBSD を 1.5 系で上げなおすとパケットは正常に飛ぶことから考えて NetBSD/x68k-current の問題であることはもはや間違いないだろう。 そうなると後はネットワーク部分(sl0)の問題なのかシリアルドライバ(tty00)の 問題なのかってのがある。 私はまず sl0 の問題であることを疑った。 何故なら例の c0 は SLIP ではパケットの終わりを意味する バイトコードで、その c0 の直後から パケットが壊れていたからである。 しかし sl0 の問題だとしたら、次の疑問が残る。
じゃあ全世界の NetBSD-current ユーザは誰一人 SLIP を使ってないのか?
それはいくらなんでも考えにくい。ではシリアルドライバの問題だろうか。 シリアルドライバの問題だとしたら x68k port 固有の問題に閉じることができ、 NetBSD/x68k ユーザの数の少なさからしても誰もこの不具合に気付かない 可能性は十分にある。しかもつい最近 x68k port のシリアルドライバに 何かしら変更がはいったばかりだ。 ということで、x68k の com ドライバを疑ってみることにした。
...と思ってみたものの、いかんせんコンソールまわりのコードが読めないので あきらめた。(早っ...)
そして、これでも一応大学にいた頃は IPv6 の研究をしてて KAME のコードを読んだりしてたこともあるので、なんとかなるかも、と いつもの素人むきだしの考えで sl0 ドライバを読むことにする。 とりあえずそれっぽいところに printf を入れた x68k カーネルを作って 起動させてみる。 うーん、ビンゴ。 どうやらエスケープキャラクタの直後でバッファの 計算を間違えているのか、バッファを 解放し忘れてるのかしてるみたい。