つれづれ日記 2005年10月

予定

毎日


2005年10月29日 (土曜日)

23:09:47 # Life 東京エリアDebian勉強会関西出張報告. 10月の関西にての第9.5回Debian勉強会,関西出張版を実施しました. 今回はバグレポートの仕方についての話を展開しました. 今回の参加人数は40人くらいでした.

23:23:21 # Life 今日は,JDMCにて新部さんのDebianJP会長就任演説がありました. 会長はサーバの運用はしていないので,運用に付いての議論をされても困ります. Debian JPとしては,お金はあるのでつかってもらえばよいという判断はboardとしてはできるのだが, 運用は頑張っている方々との協力をどうするか,というので責任が分かれている. debian-privateというメーリングリストがあるのだが,それに入る基準とかがよくわからず, 会費をメンバーがはらっているわけではないので,アクティビティーが捕捉できないなどの 問題がある. 会則も一応あるのだけど,謎の団体であるのはたしかなので, 今後どうするかを検討する必要がある. そういう話題が出ていました. 12月中にはなんらかの方針を決めて今年度中にはなんらかのアクションをおこしたいという ことを説明していました.

2005年10月28日 (金曜日)

11:56:39 # Life Japan Debian Mini Conf初日. 平日の昼間ながらも会場に結構人が来ています. Martin Michlmyrがリリース主法についての演説をしています. 期限ベースでリリースをするということがフリーソフトウェアにはよいのではないか,という提言です.

12:14:33 # Life latex-beamerでプレゼンを作成してみた. 先日からlatex-beamerをそれなりに使い込んでみている. そもそもがlatexなので,いろいろとマクロとかが組めるので便利. xdviで表示させようとすると,gsのエラーが出ており, なんとなく何かが表示できていないみたい. pgfの表示関連だからできないのはよいとして,この挙動は正常なのか,というのは疑問.

gs: Error: /undefined in pgfo
gs: Operand stack:
gs: 
gs: Execution stack:
gs:    %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--
gs:    2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fals
gs: e   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %op
gs: array_pop   1   3   %oparray_pop   .runexec2   --nostringval--   --nostringval-- 
gs:   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop
gs: _continue   --nostringval--   --nostringval--   --nostringval--   false   1   %st
gs: opped_push   1   3   %oparray_pop   --nostringval--   --nostringval--   false   1
gs:    %stopped_push   --nostringval--
gs: Dictionary stack:
gs:    --dict:1123/1686(ro)(G)--   --dict:0/20(G)--   --dict:96/200(L)--   --dict:22/
gs: 250(L)--
gs: Current allocation mode is local
	

15:05:26 # Life gotomさんのmultiarchの話. 64bitになると,メモリ空間は大きくなる. amd64はレジスタの数が増える. ただ,問題としては,ビット幅が増えるので性能がさがるばあいが多い. バイナリのサイズが大きくなることが多い. また,基本的には32と64 bitは共存できない. 32/64ビットのライブラリは同じメモリ空間にマップできない. プロセス空間が別で動作できるが,プロセス間の共有には問題あり.

16:47:23 # Life 鵜飼さんの語るDebianのミラーアーキテクチャー. パッケージがいかにユーザまで到達するか.

17:06:46 # Life gniibeさんの語る. emacsつくった,コンパイラつくった. ないものを全部つくりあげた. それこそがフリーソフトウェア. 無いものを全てそろえたのはlinux. そこまでの部分はGNU.「無いなら作る」. 現在開発されているソフトウェアは実は半分くらいがフリーソフトウェアだったという論文も出ている.それくらいの存在になっている. 最初をしたのはたった一人で,最後のピースを埋めたのも一人. 必要な物はだいたいそろっている. 今何が必要だろうか. 昔はFSFはGNUの推進をしていた.一時期10数名の開発者を雇っていた. 現在だれも開発者は雇っていない. GPLを擁護するとか,GPLv3の議論をするための人. 日本の,FSIJもそういう面がある. もう一つは無いなら作る,というのから あるものを良くする,あるものを組み合わせてつくりあげる,というものが 増えて来ている. 2000年くらいまではソースコードの活動がフリーソフトウェアの中心. Debianの活動ってなにだ? ソースコードの活動をあまりしていなくて,バリナリの結果を利用しているものなどが多い. 様相がかわって来た. netnewsでcomp.sources.XXをダウンロードしてコンパイルしていた人達はソースコードレベル. 今はもっとひろがっている.

Debian Projectは人を雇用しているわけではないが,有志があつまって distributionをつくっている. ゆるい集まりなので,忙しかったらやらないなどのこともあるのだけど. モデルが従来の伝統的なソフトウェア開発とは違う. upstreamはソースコードレベルの段階で開発をしている. Debianは第三者としてそのソースコードを取得し, バイナリのパッケージとする.ユーザへの橋渡しをする.

Debianは広域で開発している. アジアの開発者が全然居ないというのが懸念.日本は多少居る. どうにかしてアジアに展開したい.

ただ,Debian Developerは称号ではない. 権利というよりは苦痛... どちらかというと,Debian Developerであることを誇りにしてほしい. Debian Developerで世界を良くしている,という意識をもってほしい. すくなくとも世界を悪くはしていないでしょう.

official debian developerになる必要はない. ただ,パッケージのアップロードはofficial debian developerが必要. そうではない人たちでも参加できる. official debian developerでないからお断りではない. バグに対応するとか. あたりまえの教養として,「工学部出た人はみんなDebian Developer」くらいに普及しないかなぁ. 日本人が俳句をよめるのと同じくらい.

ロジスティックスとしては会が必要. 経済産業省の日本OSSフォーラムなどもある. だが,開発者としては,そこに参加するのではなく,Debian Developerになろう. Debian Developerになると,働いた結果が世の中の改善にダイレクトにつながる. FSIJとCELFは日本OSSフォーラムに入っていない. お役所仕事も重要だが,できるだけ開発者が集まる機会というのを 増やして行こう. コード道場とか,codefestとか,CELF Technical Jamboreeとか.

自分がかかわるソフトウェアというのをフリーなソフトウェアにしていきたい. オフィシャルなものとしては「オープンソース基盤整備」と 「未踏ソフトウェア」に関してはフリーソフトウェアにできている.

昔のコードは,OSをいじれないという制約があったり, できるだけ,本家に影響させないようにと配慮をしたりする必要から, そういうコードを書いた. 今はソースを全ていじれる. 昔の人は制約の中でのコードを書いてしまう点があった. 今なら最適な解法というのが使えるだろう. Debian Developerになると国際的な経験ができます. 古いUNIXにへばりついてしまっている人も多い. 例えば,MacOSXをみよう. UNIXをそういうものに使う物ではないという概念を崩壊させたのが凄い, おそらく今一番うれているUNIXでしょう.

日本はアジアの他の国にどんどんおいあげられつつある. 国際競争力をあげるためには, それを考えると,Debian Developerをするしかない. 自由なネットワークがある国はアジアには少なかった. CodeFestAsiaの会場からは台湾は見えなかった. 自由なソフトウェアは,自由な社会に先行するのかもしれない.

ところで,Debian Developerになるには,何が必要だということを まだ説明していなかった. 明日のopenpgpの話を聴くべし. かみきれを交換して,パスポートとか見せている. なんと怪しい.

New Maintainer になるのに1年8ヵ月くらいかかった. Debianの技術どっぷりになると,Debianしかわからない フリーソフトウェアハッカーになってしまう. 批判的に技術を見ることも必要. かわってゆく. フリーソフトウェアの作業は非同期, 彼がリリースするのを待つ,というのはよくない. やつがリリースしないからこっちでどんどん作業していこう, というのが正しいスタンスだ.

質問: 日本で漢字変換エンジンを開発しているが, 再実装をきらう傾向がある.それはどうだ. 回答: 再実装は歓迎.企業であれば,再実装は好ましくない場合があるが, フリーソフトウェアとしてはどんどんしたらよい. ただ,他人のコードをまったくみないでコードを再実装するというのは 意味が無い.

質問:(mhatta) Debian Projectでアプリケーションマネージャをしている. 我々としては何を改善できるか. 回答: Debian Developerは権限が凄い.全Debianユーザのコンピュータのroot権限を取得することになる. それを考えると,時間がかかるのもしかたないとはおもうがねぇ. mhattaさんとリアルで会える機会とかをつくっていって人をどんどん あつめていきたい.

2005年10月26日 (水曜日)

07:23:37 # Life もうすぐJapan Debian Mini Conferenceです. 関西オープンソースと共催で, 関西でDebianのイベントをします. 東京エリアDebian勉強会として東京でほそぼそとやってきましたが, 10月29日は関西で開催します. 気になる方,是非参加お願いします.お待ちしています.

2005年10月19日 (水曜日)

08:27:30 # Life prosperとlatex-beamerを評価する. 最近はmagickpointやpowerpointを使う事が多くなっているのだが,LaTeXのデータを 処理できるとLaTeXの原稿をそのままプレゼンテーションに使えるだろうという思惑もあり, 調べてみた. 現状Debian sidのgsで日本語を使うのは結構大変なようで, gsを使わないで,dvipdfmを使う,という縛りを自分でかけてみたところ,完敗. prosperはadviでのプリビューもxdviでのプリビューもできないので 非常に編集がつらい. latex-beamerはwhizzytexでのプリビューが可能なようだが, キーを一つ入力するたびにprocess filterでエラーが出ているため, 調査必要.sectionがないからスライスがうまく切れていないからかもしれない. latex-beamerはdvipdfmxが動作してくれないみたい. latex-beamerはdvipdfmxでPDFを作成することは可能なようだ. 結論からいうといろいろ調査必要. でもなんらかのプレゼンはできそう.

Ignoring remaining special text following unknown PS operator: "a"
Ignoring remaining special text following unknown PS operator: "pgfc"
TFM file error (ec < bc)
Output file removed.	  	  
	

こっそりと武藤さんが,kochiはだめなのでsazanamiかその他の商用フォントつかえ という以外はgs-espで問題なさそう,ということを教えてくれた. 後で試す.

2005年10月18日 (火曜日)

01:14:21 # Life なんだかんだいって初登場. LinuxカーネルのChangelogに初登場したかもしれない. BlaisorbladeのUMLのコミットに自分の名前が出た. 結局自分が投げたパッチが気に入ってもらえなくて,彼が実装しなおしたんだけど, 一応名前だけは出しておきましたよ,というような位置付けだけど. もっとさりげないところでは, gitのコミットに名前がでてたり. これもパッチがREJECTされて,違うように修正しました,というやつだな. まだ修行が足りんということか.

2005年10月17日 (月曜日)

20:42:16 # Life 今日のgit update. 久しぶりに眺めてみると,なんとなくPCI Expressが認識されるようになったように思う. 2.6.13のときにはPCIX:100MHzと表示されていたデバイスがPCI Expressに変わっているとか. 以下,2.6.13と2.6.14-rc4のdmesgの差分の抜粋.

 pcie_portdrv_probe->Dev[5a37:1002] has invalid IRQ. Check vendor BIOS
 assign_interrupt_mode Found MSI capability
 Allocate Port Service[pcie00]
+Allocate Port Service[pcie01]

-tg3.c:v3.37 (August 25, 2005)
+tg3.c:v3.42 (Oct 3, 2005)
 ACPI: PCI Interrupt 0000:02:00.0[A] -> GSI 17 (level, low) -> IRQ 17
 PCI: Setting latency timer of device 0000:02:00.0 to 64
-eth1: Tigon3 [partno(BCM95751) rev 4200 PHY(5750)] (PCIX:100MHz:32-bit) 10/100/1000BaseT Ethernet 00:13:d3:4f:52:a2
+eth1: Tigon3 [partno(BCM95751) rev 4200 PHY(5750)] (PCI Express) 10/100/1000BaseT Ethernet 00:13:d3:4f:52:a2


 bttv0: i2c: checking for TDA9875 @ 0xb0... not found
 bttv0: i2c: checking for TDA7432 @ 0x8a... not found
 bttv0: i2c: checking for TDA9887 @ 0x86... not found
- : chip found @ 0xc2 (bt878 #0 [sw])
+tuner 0-0061: chip found @ 0xc2 (bt878 #0 [sw])
 tuner 0-0061: type set to 17 (Philips NTSC_M (MK2))
 bttv0: registered device video0
 bttv0: registered device vbi0
 bttv0: registered device radio0
	

2005年10月16日 (日曜日)

13:46:28 # Life 10月の第9回東京エリアdebian勉強会報告. 今回はdebbugsについての熱い話しを展開しました. 今回の参加人数は登録者が11名くらいで,実際に参加したのが9名くらいでした.

今回の会計,今回も赤字です.

科目 出費 入金
資料コピー11人分 4156
DWNクイズ景品代 150
会場代 1500
勉強会費 4500
宴会 35400 35000
合計 1705

2005年10月14日 (金曜日)

23:07:02 # Life 最近gnomeメニューからDebianメニューが消えて久しい. なんでだろう,と思ってはいたが,実はあまりこまらないので放置していた. planet.debian.orgをなにげなくよんでいたら, If your Debian menu in GNOME ever disappears というエントリがあって, 誰もしらなくてこまったよ,という愚痴とともに Debianメニューはmenu-xdgというパッケージが入っていないと生成されないようになっているらしいので そのパッケージをいれたら直りました,ということが書いてあった. とりあえずいれてみる.

2005年10月13日 (木曜日)

08:08:42 # Life サーバダウン情報. 現時点ダウンしているサーバは arashi.debian.or.jpです. 古いサーバなのでハードウェアが壊れてしまったようです. 現在一部サービスを別のサーバに移動して復旧中. alioth.debian.orgのLDAPサービスが停止したため,新規のsshログインが 不可能な状況になっていたようです. 日本時間午前7時32分くらいに復旧宣言がなされました. 「alioth should be unfucked now」. 前回 alioth サービスが停止したのは,8月12日ころ,サーバのメモリ障害でした.

2005年10月12日 (水曜日)

22:53:11 # Life cogitoが表示する日付がどうもださい. cg-logで表示されるのはauthor Junichi Uekawa <dancer@dancer64.(none)> 水, 12 10月 2005 21:14:15 +0900 となってしまっている. 気持悪いのでパッチを書いた. author Junichi Uekawa <dancer@dancer64.(none)> 2005年 10月 12日 水曜日 21:14:15 という感じになります. ただ,localeコマンドはcygwinにはいっていなかったので,その点は注意... とおもってコードをよくよむと,LANG=Cとか設定していますね. これはlocaleを無視させようという意図が見えて来ます.投げてからきづいたので,困った.

diff --git a/cg-Xlib b/cg-Xlib
index 0ed275f..d6d0cc1 100755
--- a/cg-Xlib
+++ b/cg-Xlib
@@ -210,7 +210,9 @@ showdate()
        # bash doesn't like leading zeros
        [ "${tzhours:1:1}" = 0 ] && tzhours=${2:0:1}${2:2:1}
        secs=$(($secs + $tzhours * 3600 + $tzmins * 60))
-       [ "$format" ] || format="+%a, %d %b %Y %H:%M:%S $2"
+       [ "$format" ] || \
+               format="+$(locale date_fmt)" || \
+               format="+%a, %d %b %Y %H:%M:%S $2"
        if [ "$has_gnudate" ]; then
                LANG=C $has_gnudate -ud "1970-01-01 UTC + $secs sec" "$format"
        else
	

2005年10月10日 (月曜日)

12:51:51 # Life gitのパッケージをgitレポジトリからつくる方法,Debian版. ここまで考えたら,実は自動化して毎日パッケージをつくったりするのは簡単. ただ,バグとかもあって,ビルドできない場合もあるので,要注意. あと,ドキュメントをビルドするのに尋常じゃない時間がかかります... ただ,これをやってから気づいたのだが,rsyncはdeprecateされます,といわれてしまう. ただ,debian unstableに今ある cogito (7月版)では,rsync以外の方法はうまくうごかないはず.

後日のメンテナンスとしては下記が必要.

で,今日ビルドしてみると,テストが一つ失敗してビルドできない. これは,日本語でdiffが出力していたからのようだ. パッチは投げた.

  *** t4004-diff-rename-symlink.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
* FAIL 3: validate diff output
        compare_diff_patch current expected
* failed 1 among 3 test(s)
	

cd t && make all としたら,*** t5000-tar-tree.sh ***が失敗したが, これはそういう設計になっていたからだ. 試験を実行するには, make test とする必要があった.

この問題については,マージしてもらいました.

$ git-cat-file commit 899460f336254a128602b86ca48433a983dced72
tree 77ddc653744c096fd00a6160c6d427fcf90c744b
parent fb8024b414b417d85ce215eba3dd23c188500c15
author Junio C Hamano <junkio@cox.net> 1128920282 -0700
committer Junio C Hamano <junkio@cox.net> 1128920282 -0700

Also force LC_ALL in test scripts.

Noticed by Junichi Uekawa.

Signed-off-by: Junio C Hamano <junkio@cox.net>

$ git-diff fb8024b414b417d85ce215eba3dd23c188500c15 899460f336254a128602b86ca48433a983dced72
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 1523d2e..3f8a6fe 100755
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -5,9 +5,10 @@

 # For repeatability, reset the environment to known value.
 LANG=C
+LC_ALL=C
 PAGER=cat
 TZ=UTC
-export LANG PAGER TZ
+export LANG LC_ALL PAGER TZ
 unset AUTHOR_DATE
 unset AUTHOR_EMAIL
 unset AUTHOR_NAME
	

2005年10月9日 (日曜日)

02:25:21 # Life カレントディレクトリ以下のファイルを大きい順に並べる. これでできる. find -ls |sort -k 7,7nr | head -10. 便利.

21:04:36 # Life 今日はいろいろとcdebootstrapをハックしました. --variant=builddをサポートするように, 331554にパッチを送信. 一応メモ程度に,woodyシステムが動作しないということを 332903に追加. どうも,woodyのdpkgが新しいカーネルでは動作しないようですね old_mmap関連でなにか変なことをしているみたい. size=0のmmapが失敗するようになっている,これって,どっかでみたことがあるなぁ... カーネル側が仕様をかえたような気もするので,要調査. ためしてみると,今でも同じような結果がでる.

関連しそうなところ. 308169 329468 322309 arika

あと,今日はuser-mode-linuxをコンパイルするところまでやりましたが, うまくうごいてくれず挫折. amd64のTT-modeで動かそうとしたのですが,ダメでしたかね.

$ make-kpkg clean
$ make mrproper ARCH=um
$ make menuconfig ARCH=um
$ make-kpkg --rootcmd=fakeroot --arch=um --revision Custom.1.5.um kernel_image
	

コンパイルエラーが発生したりしたが適当にパッチを作成したりして対応. -skas0というのがあって,ttモードは今後無くなる方向らしい. パッチ LWNの記事 Blaisorbladeのページ

  CC      arch/um/drivers/pcap_kern.o
arch/um/kernel/um_arch.c: In function 'linux_main':
arch/um/kernel/um_arch.c:338: error: 'ptrace_faultinfo' undeclared (first use in this function)
arch/um/kernel/um_arch.c:338: error: (Each undeclared identifier is reported only once
arch/um/kernel/um_arch.c:338: error: for each function it appears in.)
arch/um/kernel/um_arch.c:338: error: 'proc_mm' undeclared (first use in this function)
make[2]: *** [arch/um/kernel/um_arch.o] エラー 1
make[1]: *** [arch/um/kernel] エラー 2
make[1]: *** 未完了のジョブを待っています....
	
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c
--- a/arch/um/kernel/um_arch.c
+++ b/arch/um/kernel/um_arch.c
@@ -334,8 +334,10 @@ int linux_main(int argc, char **argv)
                add_arg(DEFAULT_COMMAND_LINE);

        os_early_checks();
+#ifdef CONFIG_MODE_SKAS
        if (force_tt)
                clear_can_do_skas();
+#endif
        mode_tt = force_tt ? 1 : !can_do_skas();
 #ifndef CONFIG_MODE_TT
        if (mode_tt) {
	

2005年10月8日 (土曜日)

10:02:56 # Life alsaとbt87xでまだ試行錯誤. arecord -D hw:1,1 -r 119466 -f S16_LE -t wav /tmp/a.wav として,arecordで音が録音できることは確認した.モノラルではあるが,けっこうきれいな音が出る. ecasound -i alsaplugin,1,1,0 -o alsaplugin,0,0,0として操作すると, 44100で操作しようとする.なんとなくステレオで処理してしまうようだ. ALSA sound/pci/bt87x.c:288: internal RISC error, status 0x40044008 というメッセージが出て,それからデバイスが使えなくなってしまう.

$ arecord -D hw:1,1 -r 119466 -f S16_LE -t wav /tmp/a.wav
Recording WAVE '/tmp/a.wav' : Signed 16 bit Little Endian, Rate 119466 Hz, Mono
arecord: pcm_read:1252: read error: Input/output error
	

11:41:53 # Life Xorgのデバッグをしてみようと思いたった. startx -- -config xorg.conf :2 と言うように指定すれば任意の設定ファイルでXorgを起動できるはず. noaccel yesをはずして起動したところ,べつに即クラッシュはしていない,とおもって, gdmを起動したらログイン画面を描画する途中でハングして ダメだった. 6.8.99.900.dfsg.1-0pre1を試すべきかなぁ,と思い, xorgのCVSレポジトリをチェックアウトすると, debian パッケージになっていない部分で結構変更が加わっているようだった. ここでexperimentalのパッケージをいれても特によいことは無いだろう,と判断.

12:17:06 # Life 関西オープンソースの懇親会の申込が始まっていた. とりあえずクリックして登録. もうすぐ,いろんな人に会えるのが楽しみですね.

17:43:25 # Life amd64上で,x86のchrootを管理する方法を調べた. 実は簡単だった.灯台もとくらし. IRCでMithrandirに教えてもらって,びっくり. pbuilder create --distribution sid --debootstrapopts "--arch=i386" --basetgz /var/cache/pbuilder/base-i386.tgz --mirror http://ftp.jp.debian.org/debian しかし,このままpbuilderを使うと,linux32をよんでいないので,64bit だと思ってしまう. uname -a の出力は Linux dancer64 2.6.14-rc3dancer-gedb4a353 #1 Fri Oct 7 10:59:13 JST 2005 x86_64 GNU/Linux となっている. sbuildはdpkg-buildpackageをlinux32経由で呼んでいるらしい.

19:31:33 # Life ibookg4でUSB無線LANデバイスを使えるようにしてみる. 無線LANデバイスはUSBの Bus 003 Device 006: ID 2c02:14ea. 製品名でいうと,Planex GW-US11H. linux-wlan-ng-sourceパッケージをインストールしてがんばってみた. /home/dancer/modules/ 以下に /usr/src/linux-wlan-ng-source.tar.gzを展開 make-kpkg --rootcmd fakeroot --revision Custom1.2.wireless kernel-image modules-imageを実行. 現在使用している 2.6.9 カーネルをビルドしようとしたらエラーが出た. gcc-4.0になった影響か,linux-kernel-headersの影響か.

make[2]: `arch/ppc/kernel/asm-offsets.s' is up to date.
  CC      init/main.o
In file included from include/asm/setup.h:8,
                 from include/asm/machdep.h:8,
                 from include/asm/irq.h:6,
                 from include/asm/hardirq.h:8,
                 from include/linux/hardirq.h:6,
                 from include/asm-generic/local.h:6,
                 from include/asm/local.h:4,
                 from include/linux/module.h:21,
                 from init/main.c:16:
include/asm-m68k/setup.h:365: error: array type has incomplete element type
In file included from include/linux/skbuff.h:30,
                 from include/linux/security.h:34,
                 from init/main.c:36:
include/net/checksum.h: In function 'csum_and_copy_to_user':
include/net/checksum.h:47: warning: pointer targets in passing argument 1 of 'csum_partial' differ in signedness
In file included from include/linux/security.h:34,
                 from init/main.c:36:
include/linux/skbuff.h: In function 'skb_add_data':
include/linux/skbuff.h:1017: warning: pointer targets in passing argument 2 of 'csum_and_copy_from_user' differ in signedness
init/main.c: In function 'maxcpus':
init/main.c:149: warning: pointer targets in passing argument 2 of 'get_option' differ in signedness
make[2]: *** [init/main.o] Error 1
make[1]: *** [init] Error 2
make[1]: Leaving directory `/home/dancer/shared/2.6.9/kernel-source-2.6.9'
make: *** [stamp-build] Error 2
	

327794によると, linux-wlan-ngはカーネル側にPCMCIAサポートが無いと,ビルドできないらしい. PCMCIAが無いシステムもあるので,それを要求されても困るといえば困る.

最新のgit版のカーネルでコンパイルしようとしたら,332752にひっかかった.最近URB_ASYNC_UNLINKというのがなくなったらしい. カーネル 2.6.12 では無事にビルドできた. ただ,linux-wlan-ngパッケージの最新版がpowerpcにない(builddでビルド失敗していた)ため インストールできなかった. 仕方が無いので,apt-get sourceしてソースからdebuildしてパッケージを作成, できたlinux-wlan-ngパッケージをインストールした.

無事にprism2カードが認識された.

$ lsusb
Bus 004 Device 002: ID 2c02:14ea
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
$ dmesg
	  .
	  .
usb 4-1: new full speed USB device using ohci_hcd and address 2
prism2usb_init: prism2_usb.o: 0.2.2 Loaded
prism2usb_init: dev_info is: prism2_usb
usbcore: registered new driver prism2_usb
	
# wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
message=lnxreq_ifstate
  ifstate=enable
  resultcode=success
# wlanctl-ng wlan0 lnxreq_autojoin ssid=any authtype=opensystem
message=lnxreq_autojoin
  ssid='any'
  authtype=opensystem
  resultcode=success
	

2005年10月7日 (金曜日)

01:37:57 # Life amd64版のcogitoがなぜか古い. 0.11.3+20050610-1になっている. Debianの0.12.1+20050730-1のソースパッケージをビルドしたら簡単にビルドできた. gitのレポジトリと,cogitoのレポジトリからソースをとってきたら, debian/ディレクトリがあるので,それでdebianパッケージをつくれば最新版が取得できる. ただ,debianのパッケージにならないのは GPL のプログラムのくせに openssl を利用している影響による. まとまった時間を確保して,opensslではなく,gnutlsを使うパッチをアップデートしないとなぁ, と考えてはや半年近くが過ぎてしまった.

debuildしたらなぜか /home/dancer/bin/にコマンドがインストールされた。 なんじゃこりゃ。 git-applymbox, git-applypatch, git-mailinfo, git-mailsplit.

この処理をしたので,最新のカーネルがコンパイルできるようになった. uname -a の出力は Linux dancer64 2.6.14-rc3dancer-gc0758146 #1 Fri Oct 7 08:00:26 JST 2005 x86_64 GNU/Linux 気になるChangeLog:

commit 159f597a8bd0f1d7650d5e580c93a2666c9c26d1
Author: Dave Jones
Date:   Wed Jul 6 15:29:09 2005 -0400

    [PATCH] Fix bt87x.c build problem for real

    Just the declaration fix wasn't enough to fix things in bt78x.c

    Signed-off-by: Dave Jones
    Signed-off-by: Linus Torvalds
	

おぉ,これか!

$ git-diff-script 83b78bd2d31f12d7d9317d9802a1996a7bd8a6f2 159f597a8bd0f1d7650d5e580c93a2666c9c26d1
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -806,7 +806,7 @@ static int __devinit snd_bt87x_detect_ca
        int i;
        const struct pci_device_id *supported;

-       supported = pci_match_device(&driver, pci);
+       supported = pci_match_device(driver, pci);
        if (supported)
                return supported->driver_data;

	

とりあえずローカルで自動認識するようにパッチをあてて今後もデバッグしてみることにする.

diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -770,6 +770,7 @@ static struct pci_device_id snd_bt87x_id
        BT_DEVICE(878, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */
        BT_DEVICE(879, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */
        BT_DEVICE(878, 0x0070, 0xff01, 44100), /* Viewcast Osprey 200 */
+       BT_DEVICE(878, 0x10FC, 0xD018, 32000), /* I-O Data Co. GV-BCTV5/PCI */
        { }
 };
 MODULE_DEVICE_TABLE(pci, snd_bt87x_ids);
	

2005年10月6日 (木曜日)

00:18:11 # Life dx5150MT, amd64マシンでDVDRWが使えるかどうか確認しました. cdrecordでは,特に問題なく認識しているようです. -speed=8を指定したのだが,なぜか10倍速度で焼かれた,ということ以外は特に問題もなく 焼けています.

# cdrecord dev=ATAPI: -scanbus
Cdrecord-Clone 2.01.01a03 (x86_64-unknown-linux-gnu) Copyright (C) 1995-2005 Joerg Schilling
NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord
      and thus may have bugs that are not present in the original version.
      Please send bug reports and support requests to <cdrtools@packages.debian.org>.
      The original author should not be bothered with problems of this version.

cdrecord: Warning: Running on Linux-2.6.13dancer
cdrecord: There are unsettled issues with Linux-2.5 and newer.
cdrecord: If you have unexpected problems, please try Linux-2.4 or Solaris.
scsidev: 'ATAPI:'
devname: 'ATAPI'
scsibus: -1 target: -1 lun: -1
Warning: Using ATA Packet interface.
Warning: The related Linux kernel interface code seems to be unmaintained.
Warning: There is absolutely NO DMA, operations thus are slow.
Using libscg version 'ubuntu-0.8ubuntu1'.
cdrecord: Warning: using inofficial version of libscg (ubuntu-0.8ubuntu1 '@(#)scsitransp.c      1.91 04/06/17 Copyright 1988,1995,2000-2004 J. Schilling').
scsibus0:
        0,0,0     0) 'HL-DT-ST' 'DVDRRW GWA-4166B' '1.03' Removable CD-ROM
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
	

2005年10月3日 (月曜日)

08:06:31 # Life 昨日からusb audioではまっていたが,解決の目処がたった. WAVIOをamd64マシンに接続した際に, ALSAデバイスのUSB audioがデバイスの認識までいくのだが,alsaとしての 認識が完了せず,困った. 設定をよくみると,CONFIG_USB_AUDIO=y で CONFIG_SND_USB_AUDIO=mになっていた. 似ていてわかりにくいが,CONFIG_USB_AUDIOはOSSのドライバで, make menuconfig では USB のセクションにある. CONFIG_SND_USB_AUDIOはALSAのドライバで, make menuconfig では ALSA の USB セクションにある. この設定だと,OSSの認識が完了したあと,ALSAの設定をしようとして,デバイスビジーにでもなっていたのだろう. あと,ややこしいのが,両方ともprintkの出力は'usbaudio:'ではじまる,ような気がする.

usbcore: registered new driver audio
drivers/usb/class/audio.c: v1.0.0:USB Audio Class driver
usb 2-4: new full speed USB device using ohci_hcd and address 2
usbaudio: device 2 audiocontrol interface 0 has 1 input and 1 output AudioStreaming interfaces
usbaudio: valid input sample rate 48000
usbaudio: valid input sample rate 32000
usbaudio: valid input sample rate 44100
usbaudio: device 2 interface 2 altsetting 1: format 0x00000010 sratelo 32000 sratehi 48000 attributes 0x01
usbaudio: valid input sample rate 48000
usbaudio: valid input sample rate 32000
usbaudio: valid input sample rate 44100
usbaudio: device 2 interface 2 altsetting 2: format 0x80000010 sratelo 32000 sratehi 48000 attributes 0x01
usbaudio: valid output sample rate 48000
usbaudio: valid output sample rate 32000
usbaudio: valid output sample rate 44100
usbaudio: device 2 interface 1 altsetting 1: format 0x00000010 sratelo 32000 sratehi 48000 attributes 0x01
usbaudio: valid output sample rate 48000
usbaudio: valid output sample rate 32000
usbaudio: valid output sample rate 44100
usbaudio: device 2 interface 1 altsetting 2: format 0x80000010 sratelo 32000 sratehi 48000 attributes 0x01
usbaudio: registered dsp 14,3
usbaudio: constructing mixer for Terminal 10 type 0x0301
usbaudio: warning: found 1 of 0 logical channels.
usbaudio: assuming the channel found is the master channel (got a Philips camera?). Should be fine.
usbaudio: unit 7 invalid MIXER_UNIT descriptor (bitmap too small)
usbaudio: registered mixer 14,0
usbaudio: constructing mixer for Terminal 13 type 0x0101
usbaudio: warning: found 1 of 0 logical channels.
usbaudio: assuming the channel found is the master channel (got a Philips camera?). Should be fine.
usbaudio: unit 7 invalid MIXER_UNIT descriptor (bitmap too small)
usbaudio: mixer path revisits unit 3
usbaudio: selector unit 11: ignoring channel 2
usbaudio: mixer path revisits unit 2
usbaudio: selector unit 11: ignoring channel 3
usbaudio: warning: found 1 of 2 logical channels.
usbaudio: assuming that a stereo channel connected directly to a mixer is missing in search (got Labtec headset?). Should be fine.
usbaudio: registered mixer 14,16
usb_audio_parsecontrol: usb_audio_state at ffff81003bdf30c0
ALSA sound/core/oss/mixer_oss.c:1274: unable to register OSS mixer device 1:0
usbcore: registered new driver snd-usb-audio
	

再起動したら無事に認識されました. ALSAのみの場合はdmesg にはほとんどなにも表示されず.

$ arecord -l 
**** List of CAPTURE Hardware Devices ****
card 0: IXP [ATI IXP], device 0: ATI IXP AC97 [ATI IXP AC97]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Bt878 [Brooktree Bt878], device 0: Bt87x Digital [Bt87x Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Bt878 [Brooktree Bt878], device 1: Bt87x Analog [Bt87x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Device [KC USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
	

2005年10月2日 (日曜日)

09:36:19 # Life さらにあがいてみる. ここを参考に arecord -D hw:1,1 -r 119466 -f S16_LE -t wav /tmp/a.wavをためしてみる. 雑音が信じられないくらい激しいが,何か音は聞こえる. インタリーブ形式とかでなにか違うデータを突っ込まれているのだろうか?

ecasound -f 16,2,119466 -i alsahw,1,1,0 -o test.wav とつっこむとALSA sound/pci/bt87x.c:298: internal RISC error, status 0xd0044008 ということでドライバが終了. ステレオで取得しようというのが間違いなのだろうか.

a.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 119466 Hz
test.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 119466 Hz
	

sox -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp0をためすべきだろうか?

bt878のwikiがあって,そこはなかなかくわしくてよい. sox -w -r 448000 -t ossdsp /dev/dsp1 -t .wav test.wav

2005年10月1日 (土曜日)

12:14:20 # Life 新しい月がはじまりましたね. 気が付いたらLinuxカーネルのLinusのツリーにFUSEがとりこまれていたので, そろそろFUSEでもいじるかな.

update-clusterの問題の修正と, pbuilderの処理. pbuilderを今後共同メンテナンス制に移行します. ずっと同じことをやっているとあきてくるので,新しい人をいれて,いれかえてやるきを生み出すというのは重要ですよね. pbuilderも気づいたら4年以上やっているので,そろそろ新しい風をいれていかないとね.

14:35:34 # Life EUC-JPと,eucJPのどれをつかったらよいのだ,という話題がどこそやらででてきていたので, 調べてみる. ja_JP.eucJPと,ja_JP.EUC-JPの両方が現在利用されている. nl_langinfo(CODESET)でかえってくる値は,eucJPであっても,EUC-JPであっても, 'EUC-JP'になる. シェルから確認するのは,localeコマンドでlocale LC_CTYPE -k コマンドとかで確認できる.他の方法もあったような記憶があるのだが,思い出せない... 結論としては,LC_CTYPEを各アプリケーションから直接解析するのではなく, glibcに処理をまかせてしまえばよいよね,ということでした.

$ LC_ALL=ja_JP.EUC-JP locale  LC_CTYPE -k |grep charmap
charmap="EUC-JP"
$ LC_ALL=ja_JP.eucJP locale  LC_CTYPE -k |grep charmap
charmap="EUC-JP"
$ LC_ALL=ja_JP.utf-8 locale  LC_CTYPE -k |grep charmap
charmap="UTF-8"
	

nl_langinfoを利用する例:

/*BINFMTC:
 */
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <langinfo.h>

main()
{
	setlocale(LC_ALL, "");
	printf("%s\n", nl_langinfo(CODESET));
}

	

16:05:48 # Life bt878ドライバを使ってみるために試行錯誤. alsaでbt87xというオーディオのドライバがある. 以前は,btaudioというOSSのドライバを試したことがあったのだが, なんだか挙動がおかしくてうまく扱えないしろものだった. そこで,alsa版をつかってみようとおもいたったのだが,うまく動かない. modprobe snd-bt87x load_all では何もメッセージが出て来ないし,認識してくれている様子もない.printkデバッグのお時間でしょうか... Documentation/sound/alsa/Bt87x.txtにドキュメントがある. うーん...なんで何もでてこないのだろう.snd_printkは何も出力しないことになっているのか? CONFIG_SND_VERBOSE_PRINTKというのを設定するとどうのこうのというのがあるが, それはちょっと違う.

ちょっとしらべてみると, ALSAのソースとはこの部分が違う. [PATCH] PCI: clean up dynamic pci id logicという,おそらくGregKHのコードで この変更は加えられているようだ. これを使うと,せっかく設定した snd_bt87x_ids という変数がまったく使われずに 初期化されていない driver という変数だけが使われている.これは正しい変更なのか? ソースをよむかぎりでは,pci_match_deviceはpci_match_idを呼んでいる. pci_match_device(drv,dev)はpci_match_id(drv->id_table, dev)と変換される. どうも,ここは pci_match_id(snd_bt87x_ids,pci)と書き直すべき所だったような気がする. pci_match_deviceはdynamic idというのに対応するために拡張されたらしい. ここを若干いじればよさそうだ.とりあえずまずここがNULLを返しているということをprintkデバッグで確認してみるのが第一歩.

--- bt87x.c     2005-04-12 00:58:25.000000000 +0900
+++ /home/dancer/shared/2.6.13/linux-2.6.13/sound/pci/bt87x.c   2005-10-01 15:50:28.000000000 +0900
@@ -798,13 +799,15 @@
        {0x270f, 0xfc00}, /* Chaintech Digitop DST-1000 DVB-S */
 };

+static struct pci_driver driver;
+
 /* return the rate of the card, or a negative value if it's blacklisted */
 static int __devinit snd_bt87x_detect_card(struct pci_dev *pci)
 {
        int i;
        const struct pci_device_id *supported;

-       supported = pci_match_device(snd_bt87x_ids, pci);
+       supported = pci_match_device(&driver, pci);
        if (supported)
                return supported->driver_data;

	

疑問なのが,上記のようなパッチだけを適用した後で,下記のようなコードがうごくはずないような... 最初にここが呼ばれるうえに,driverが初期化されていないのであれば, 問題がでてきそうな... とおもったら,二度static struct pci_driverというのが宣言されていた. これは特に問題はないみたいようだ.

static int __init alsa_card_bt87x_init(void)
{
        if (load_all)
                driver.id_table = snd_bt87x_default_ids;
        return pci_register_driver(&driver);
}
	
    802 static struct pci_driver driver;
	
    916 static struct pci_driver driver = {
    917         .name = "Bt87x",
    918         .id_table = snd_bt87x_ids,
    919         .probe = snd_bt87x_probe,
    920         .remove = __devexit_p(snd_bt87x_remove),
    921 };
	

試行錯誤. pci_match_device(driver [id_tableを見るため], )ということなので, driver.id_tableは,宣言文でデフォルトの値は snd_bt87x_ids になっているはずだ. snd_bt87x_ids は正しい値になっているはずなので,問題ない気がする. pci_match_deviceで,PCI_ANY_IDになっているばあいの扱いがどうなっているか. subsystem_vendor, subsystem_deviceの値はどうやって確認しているのだろう.

static struct pci_device_id snd_bt87x_default_ids[] = {
	BT_DEVICE(878, PCI_ANY_ID, PCI_ANY_ID, 0),
	BT_DEVICE(879, PCI_ANY_ID, PCI_ANY_ID, 0),
	{ }
};
	

メモ: デバイスはここにある/sys/bus/pci/devices/0000:03:0b.1, そしてドライバは/sys/bus/pci/drivers/Bt87x

一応念のため,テストコードを書く. static で二度グローバル変数を宣言しても大丈夫か. 期待したように,3,1と出力されるので, 宣言が二度行われても,処理としては,一個が宣言で, 一個が値の定義となってくれて,複数の同じ名前の 変数が定義されてしまったりはしないようだ.

/*BINFMTC:
 */
#include <stdio.h>

struct hoge {
  int value;
};

static struct hoge a;

int edit(struct hoge *a)
{
  a->value=3;
  return 0;
}

int func()
{
  a.value=2;
  edit(&a);
  return 0;
}

static struct hoge a = 
  { .value=1 };

int main()
{
  printf("%i\n", a.value);
  func();
  printf("%i\n", a.value);
  return 0;
}
	

なんか再起動したら動くようになった. しかし,ecasound -i alsahw,1,1,0 -o alsahw,0,0,0としてみるとなにか問題があるようだ. ecasound -f 16,1,32000 -i alsahw,1,1,0 -o alsahw,0,0,0 -b:128などをためしてみるが,あまり改善しない. 最初の一瞬だけ音がでて, その後雑音になる.そして,連続的にXrunが出る.また,一旦 internal RISC errorが出ると音が二度とキャプチャーできなくなる. これはどっかのバッファリングとかタイミングがずれているような雰囲気がするので ちょっと続きがありそうだなぁ...

ecasound[4707] general protection rip:4a4add rsp:7fffffc19000 error:0
ALSA sound/pci/bt87x.c:298: internal RISC error, status 0x20044008
	

今日の作業の結論としては,load_allオプションは動かないが,PCI IDというかsubsystem IDを追加してあげれば認識はする. ただ,ecasoundでの動作試験をしても安定動作もしないし,まともな音も出せなかった.

--- bt87x.c-	2005-10-01 15:48:01.000000000 +0900
+++ bt87x.c	2005-10-02 00:42:26.000000000 +0900
@@ -780,6 +780,7 @@
 	BT_DEVICE(878, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */
 	BT_DEVICE(879, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */
 	BT_DEVICE(878, 0x0070, 0xff01, 44100), /* Viewcast Osprey 200 */
+	BT_DEVICE(878, 0x10FC, 0xD018, 32000), /* I-O Data Co. GV-BCTV5/PCI */
 	{ }
 };
 MODULE_DEVICE_TABLE(pci, snd_bt87x_ids);
	

Junichi Uekawa

$Id: 200510.html.ja,v 1.56 2005/11/20 15:57:54 dancer Exp $