junk words 〜2005年1月上旬〜

やる気のない日々の日報です。

仕事上の愚痴っぽいネタが多いのは、テンパっているせいかもしれません。


< 前の日記 | 次の日記 > | 最近5日間 >>

2005年1月1日(土)

[zaurus] acacia 経由で接続

以前のネタの改訂版。 前回はyulanに直接zaurusを繋いでいたんだけど、 どうも2.4.x系のusbnetの動きがあやしいので、 2.6.xなカーネルで動いているacacia経由にすることにした。 で、そのあたりの設定を書いていなかったので。

_ まず、acaciaの/etc/network/interfacesに

iface usb0 inet static
	address 192.168.129.1
	netmask 255.255.255.0
	network 192.168.129.0
	broadcast 192.168.129.255
	up echo 1 > /proc/sys/net/ipv4/ip_forward
	down echo 0 > /proc/sys/net/ipv4/ip_forward
と書いておき、yulanでは、zaurusへのパケットはacaciaがゲートウェイに なると教えてやる。
root@yulan:~# route add -net 192.168.129.0/24  gw 192.168.101.22 metric 1 
あとはzaurus側で、
/sbin/route add -net default gw 192.168.129.1 dev usbd0
としてやればよい。

_ zaurus側も自動化できないかと/etc/hotplug/usbdnet{,.conf}をいじってみたけど、 どうもうまくいかない...なぜだ。

[zaurus][w3m]

昨日の環境で、
./configure --prefix=/opt/QtPalmtop --with-gc=/opt/QtPalmtop --with-ssl=/opt/QtPalmtop --with-termlib=ncurses --with-migemo --enable-image=x11 --disable-nls --enable-messagel10n=ja --host=arm-linux
として、FORMAT_NICE, CLEAR_BUFを生かしてビルドしてみた。 w3m_0.5.1-async-7j1_arm.ipk

_ ただし、うちのクロス環境にはXまわりがないのでw3mimgdisplayは入っていません。 どこかからw3mimgdisplayのバイナリを持って来て、/opt/QtPalmtop/libexec/w3m/ に放り込めは動くはずですが。


2005年1月2日(日)

腹減った

特に身体を動かしたわけでもないのに、なぜか腹が減る。(0:45)

_ 冷蔵庫にあったプリンを食べる。

_ 微妙だ。

[linux][hotplug] usb-storage のデバイス名/マウント

殻付きDVD-RAMが使えるドライブが税込み12,000だったので買う。 バルク品よりリテールのほうが安いってどーよ。 とか思いながらIDEALのIEEE1394a/USB2.0コンボな箱、ME-320に入れて、 IEEE1394aで繋いでみると、なぜか認識しない。 正確には、IEEE1394aのデバイスがあることはわかるんだけど、 SCSIデバイスとして(/proc/scsi/scsiに)エントリが出てこない。 仕方がないので、USBで繋ぐと、ちゃんと見えた。 しかしこれ、裸のディスクの入れかたが微妙だな。 いったん奥に押し込んで、手前の爪に引っ掛けるようにしないとダメ。 そのかわりに殻付きRAMだと置くだけでいいわけだが。

_ それはそうと、usb-storageの管理下にあるデバイスが増えてきて、 デバイス名とマウントポイントの対応付けがあまりうまくいってない。 (さらにsbp2管理下のデバイスもある) usb-storageは物理的なデバイスに対してSCSIホストアダプタがひとつあるように ふるまうが、/proc/scsi/scsiのエントリからいったん消えたデバイスを 再度接続したときに、以前と同じホストアダプタ番号を割り振る。 って、ここまで書いて思ったけど、実はhotplugの方でなにかしてんのかね?

_ scsiadd -r ? 0 0 0 でデバイスを外して、/proc/scsi/scsiのエントリから消えても、 psでプロセスを見ると、usb-strorage-?やscsi_eh_?などの、 対応するカーネルスレッド(?)が生きているのが いけないような気がするんだけど。 とりあえずこいつらを消すには、usb-storageをmodprobe -rで外すしかない。

_ まあいいや。とりあえず参考になりそうなページ

_ うう? Linux1394の sbp Module #Hotplugにあるように、 scsi add/rem patchをあてると改善されるのか?

[yulan][linux] 2.4.29-pre3

上記パッチをあててビルド。

_ む。alsa-modulesのビルド中に止まる。 http://sourceforge.net/mailarchive/forum.php?thread_id=6218876&forum_id=1752ということなので、modules/alsa-driver/include/adriver.hのmsleepのマクロ定義を LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 29) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 6)) で有効になるように修正する。


2005年1月3日(月)

休み最終日

うとうとと8:30ごろに目が覚めて、もう少しと思いつつ、次に気がついたら10:30、 ぼーっとしていたらいつのまにか13:30をまわっていた日。

2005年1月5日(水)

[URL][zaurus]

_ Sharp Zaurus SL-C760 Tips: NAND Backupについて検索していて辿りついた。


2005年1月6日(木)

[URL]

_ QDBM: Quick Database Manager: QDBM is a library of routines for managing a database. The database is a simple data file containing records, each is a pair of a key and a value. Every key and value is serial bytes with variable length. Both binary data and character string can be used as a key and a value. There is neither concept of data tables nor data types. Records are organized in hash table or B+ tree.

_ QDBMのチュートリアル:

_ Cygwin:build:QDBM:


2005年1月7日(金)

[cygwin] snapshot-20050104-1

forkパッチとsjisパッチをあててビルド。

_ vforkがなくなったわりには、自分自身のビルドでも それほど引っ掛かりはない。 エクスプローラの動きが悪いのは、NC4.78とExcelが動いているWin98SEではふつー。

[w3m][cygwin] cyggc-1.dll

doc/README.environmentやdoc/debugging.htmlなんかを読んでみる。

_ ./configure --enable-thread=pthreads のあと、LDFLAGSに-no-undefinedを 足して作ったcyggc-1.dllに向けてリンクしたw3mで、 GC_INITIAL_HEAP_SIZE=16000000 ./w3m -B としてやると一応は起動した。

_ ただし、しばらくバッファの生成と廃棄を繰り返すとSEGVをくらったり くらわなかったり。 ちなみに、8000000だとリンクを2回辿ったところでSEGV、 12000000だと3回辿ってBACKで戻ったところで

Duplicate large block deallocation of 0x102ce000
Duplicate large block deallocation
などと出て、死ぬ。

_ gcから見たときの、cygwin側のdata, bss領域の設定値がおかしいのかねぇ。

_ とか書いていたら、また死んだ。

[URL]

_ パワー不足度チェック: パワー不足90%とか出てしまいましたよ? 医者に相談しろと言われても、なんと説明したものか。


2005年1月8日(土)

[cygwin][w3m] cyggc-1.dll

ようやく Bohem GC を DLL 化して w3m が動くようになった。 ヒントはdoc/README.win32に書いてあった。 まずドキュメントを読めってハナシだね。

_ まず、以前の スクリプトで Bohem GC に付属する libtool をアップデートする。

./configure --prefix=/usr --enable-threads=posix --enable-shared --enable-parallel-mark
でconfigureした後、以下のパッチをあてる。 Makefileの修正の方はDLLを生成するために必須。 gc.hはinclude/private/gcconfig.hの定義をコピーしたもの。 これがないとDLLにしたGCを正常に初期化するためのコードがビルドできない。
--- Makefile.conf       2005-01-08 10:27:08.845536000 +0900
+++ Makefile    2005-01-08 10:28:36.331334400 +0900
@@ -190,7 +190,7 @@
 # linuxthread semaphore functions get linked:
 libgc_la_LIBADD =  mach_dep.lo $(THREADDLLIBS) $(UNWINDLIBS)
 libgc_la_DEPENDENCIES =  mach_dep.lo
-libgc_la_LDFLAGS = -version-info 1:2:0
+libgc_la_LDFLAGS = -version-info 1:2:0 -no-undefined

 EXTRA_libgc_la_SOURCES = alpha_mach_dep.S \
     mips_sgi_mach_dep.s mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
@@ -200,7 +200,7 @@

 libgccpp_la_SOURCES = gc_cpp.cc
 libgccpp_la_LIBADD = $(THREADDLLIBS) $(UNWINDLIBS)
-libgccpp_la_LDFLAGS = -version-info 1:2:0
+libgccpp_la_LDFLAGS = -version-info 1:2:0 -no-undefined

 AM_CXXFLAGS =  -fexceptions
 AM_CFLAGS =  -fexceptions
--- include/gc.h.orig       2004-10-14 13:08:15.000000000 +0900
+++ include/gc.h        2005-01-08 10:00:43.766304000 +0900
@@ -948,6 +948,28 @@
      * Similarly gnu-win32 DLLs need explicit initialization from
      * the main program, as does AIX.
      */
+#   if defined(__CYGWIN32__)
+          extern int _data_start__[];
+          extern int _data_end__[];
+          extern int _bss_start__[];
+          extern int _bss_end__[];
+       /* For binutils 2.9.1, we have                  */
+       /*      DATASTART   = _data_start__             */
+       /*      DATAEND     = _bss_end__                */
+       /* whereas for some earlier versions it was     */
+       /*      DATASTART   = _bss_start__              */
+       /*      DATAEND     = _data_end__               */
+       /* To get it right for both, we take the        */
+       /* minumum/maximum of the two.                  */
+#     ifndef MAX
+#      define MAX(x,y) ((x) > (y) ? (x) : (y))
+#     endif
+#     ifndef MIN
+#      define MIN(x,y) ((x) < (y) ? (x) : (y))
+#     endif
+#       define DATASTART (MIN(_data_start__, _bss_start__))
+#       define DATAEND  (MAX(_data_end__, _bss_end__))
+#   endif /* cygwin */
 #   define GC_INIT() { GC_add_roots(DATASTART, DATAEND); }
 # else
 #  if defined(__APPLE__) && defined(__MACH__) || defined(GC_WIN32_THREADS)
あとは普通にビルド、インストールする。

_ 次は w3m。普通に ./configure してから、以下の修正を入れる。 GC_init() から GC_INI() への変更は、スタティックライブラリとリンクする 場合には影響がないので、CVSへコミットしてもいいかも。

--- main.c.orig 2004-10-06 21:19:25.000000000 +0900
+++ main.c      2005-01-08 10:57:56.542393600 +0900
@@ -383,7 +383,7 @@
     wc_ces CodePage;
 #endif
 #endif
-    GC_init();
+    GC_INIT();
 #if ENABLE_NLS
     setlocale(LC_ALL, "");
     bindtextdomain(PACKAGE, LOCALEDIR);
--- Makefile.orig       2005-01-08 10:54:43.534862000 +0900
+++ Makefile    2005-01-08 10:58:24.312324800 +0900
@@ -42,7 +42,7 @@
        -DCGIBIN_DIR=\"$(CGIBIN_DIR)\" -DHELP_DIR=\"$(HELP_DIR)\" \
        -DETC_DIR=\"$(ETC_DIR)\" -DCONF_DIR=\"$(CONF_DIR)\" \
        -DRC_DIR=\"$(RC_DIR)\" \
-        -DLOCALEDIR=\"$(localedir)\"
+        -DLOCALEDIR=\"$(localedir)\" -DGC_DLL
 LDFLAGS =
 LIBS = -L. -lindep -lintl  -lgc
 W3M_LIBS =  -L./libwc -lwc -lssl -lcrypto   -lssl -lcrypto -lncurses
あと、現在のcygwin環境では、config.hでHAVE_LANGINFO_CODESETを 殺しておくこと。

_ で、ビルドしてやると、

$ LANG=C objdump -p w3m.exe | grep 'DLL Name'
        DLL Name: cygcrypto-0.9.7.dll
        DLL Name: cygwin1.dll
        DLL Name: cyggc-1.dll
        DLL Name: cygintl-3.dll
        DLL Name: cygncurses-8.dll
        DLL Name: cygssl-0.9.7.dll
        DLL Name: KERNEL32.dll
        DLL Name: USER32.dll
というバイナリができる。

_ というわけでバイナリ。


2005年1月10日(月)

[yulan] カーネル 2.6.10

ひとつ負け。

_ linux-2.6.9にpatch-2.6.10, patch-2.6.10-ac8, v4l2(ALL-2.6.10.diff.gz), trackpoint-2.6.9.patchをあてて、さらに v4l2-2.6.10-saa7133-stvpci.diffをあてる。 configは こんなかんじで。 あと、udev, dbus-1 を導入し、ねぎ式の udev を使ってみるを見てVMwareのデバイスノードの設定を/etc/udev/links.confに追加しておく。

_ リブートすると、

という問題が発生。 他にもちまちました問題が発生するので、順番に片付ける。

_ まず、saa7134とalsaは、とりあえずsaa7134を/etc/hotplug/blacklist.d/localに 記述してhotplugの配下から外すことで解決。

_ トラックポイントの方は、カーネルのコンフィグでCONFIG_USB_KBDとCONFIG_USB_MOUSE がyになっていた (*1)ので外して...も変わらない。

_ 考えながら、usbfsのマウント時に"gid=5,mode=620"というオプションなんか 知らないと言われるので、/etc/fstabからusbfsの行をコメントアウト。 /boot/grub/menu.lstのカーネルオプションから"hdc=ide-scsi"を削除。

_ dmesgを見ても、

usbhid: probe of 4-2.1.3:1.2 failed with error -5
と出るばかりで有意な情報がない。 仕方がないので、H540Sのハブに繋いでいたMinikeyboardとTrackmanを、 本体のポートに繋ぎ直してやる...と正常に動くようになった。 つまり、iiyamaのUSB HUBがなんかおかしいってコト?

_ まあいいや。とりあえず録画はできる。

_ 問題はadvansysなのだが...やられた。 "Select only drivers expected to compile cleanly"がyになっているせいで ビルドされてない。 ビルドしてインストール。

_ ぐあ、USB-HDDをつないでも認識されない。 USB-Block Deviceとして認識されるっぽいので、 /etc/hotplug/blacklist.d/localに追記、してもusb-storageをロードしてくれない。 IEEE1394のデバイスはOKなので、当面はこっちでしのぐか。

_ しかしまぁ、いろいろ予想外のトラブルだわ。

_ ああ、やっぱりダメだ。USB-HDDが使えないと困るので、2.4.29-pre3に戻す。

_ あれ? なぜか 2.4.29-pre3 でもおかしくなった。 USB-HDDを繋いでも認識しない。 ごちゃごちゃやっているうちにハングアップ。

_ 結局、2.6.10-ac8でしばらくすごすことにしました。

_ あれ? いったん2.4.29-pre3に戻して時点で、MinikeyboardとTrackmanをH540Sのハブに ぶらさげなおしたんだけど、今度はちゃんとMinikeyboardのTrackpointを認識した。 なぜだ。

_ 忘れてた。 dpkg-reconfigure xserver-common して、 Xサーバのnice値を-10から0に設定しなおした。


(*1): たぶん2.6.0-testの頃にyにしたままだった。 これらは"USB HID Boot Protocol drivers"といって、組込み向けに 機能を制限したもの。通常のPCではCONFIG_USB_HIDが入っていれば良い。

文句はこちらへ:
WATANABE Katsuyuki