オープンソース

Upgrade glibc v2.3.4 from v2.3.2 (その3).

ということで、ATOK for Linux にアップグレードした。GLib/GTK+ は /usr/local 配下にあるので、インストール・スクリプトで gtk-query-immodules-2.0$prefix と RPM インストール・オプションを変更し、付属のインストール・ガイドの手順に従って実行する。完了のメッセージ Installation has been completed. が表示されたのを確認してから [SHIFT]+[SPACE] キーで起動できるように変更し再起動する。おもむろに、XIM を有効にしてみるが、これまた入力パレットが表示されない。何回やっても同じ。う〜m
先にアップグレードした GLibc のファイルに依存するのかどうかの確認を含めて、同じ FAQ ページにある Fedora Core 3でのインストール方法(参考情報) のスクリプトで再インストールして再起動してみる。GNOME が起動するとパレットが表示された ;-)
違いといえば、インストール後の後処理なんで、やっぱり i18N ロケール情報の所在なんかに関係するものなのだろうか。まぁ、とにかく以前の ATOKX の設定と辞書を再利用できるよう設定し、gedit から入力する。特に問題ない。
ただ GTK+-2.6.2 の場合、プロパティ (環境設定) ダイアログを起動しようとすると:

(jp.co.justsystem.atokx2.PropertyAux:8484): Gtk-WARNING **: Invalid input string
(jp.co.justsystem.atokx2.PropertyAux:8484): Gtk-CRITICAL **: gtk_list_store_get_value: assertion `VALID_ITER (iter, GTK_LIST
_STORE(tree_model))' failed
(jp.co.justsystem.atokx2.PropertyAux:8484): GLib-GObject-WARNING **: gtype.c:3351: type id `0' is invalid
(jp.co.justsystem.atokx2.PropertyAux:8484): GLib-GObject-WARNING **: can't peek value table for type `<invalid>' which is no
t currently referenced

のエラーが発生して表示されない。仕方ないので、一度 X を終了してから/var/opt/atokx2/users/aihana/atokx2.aen を直接編集することで対応する。プロパティ名が日本語なので推測しながらの試行錯誤だけども :P
まぁ、要バージョン GTK+ 2.2.1 以上 と謳っているので、そのうちアップデートがリリースされるだろうことを期待しておく。
これ以外、GLibc アップグレード後は特に問題も無さそうで、なかなか良い感じ :D

Upgrade glibc v2.3.4 from v2.3.2 (その2).

実際に、ビルドしたライブラリやヘッダ・ファイルなどの転送は手っ取り早く Live CD 上から対象となるパーティションをマウントして、適宜コピーし、ロケール関連は昔の状態のままにした (後で痛い目に合うのだけれども)。そして、おそるおそる再起動してみる。
init 以降は何事もなく進み、/etc/rc.d/rc.sysinit に仕込んでおいた glibc_post_upgrade.i686build-locale-archive の実行も確認する。そして、ログイン・プロンプトが表示されたときは、もう 8割がた問題ないなと判断した。が、いざログインして X を起動してみるとロケールが正しく設定されておらず、/usr/bin/locale を起動しても:

% locale
Cannot set LC_CTYPE to default locale : No such file or directory
Cannot set LC_MESSAGES to default locale : No such file or directory
Cannot set LC_ALL to default locale : No such file or directory
LANG=ja_JP.eucJP
LC_CTYPE="ja_JP.eucJP"
LC_NUMERIC="ja_JP.eucJP"
LC_TIME="ja_JP.eucJP"
...
LC_ALL=ja_JP.eucJP

となって、日本語を表示できなくなっていた。おかげで gDesklets 関連のアプレット が起動しなかったり、GNOME パネル・アプレットがクラッシュしたりで、てんやわんやな状態 (警告音とともにクラッシュ・ダイアログの嵐) に。まぁ、とにかく 未インストール状態だった /usr/lib/locale/usr/share/i18n ディレクトリ配下をコピーして、なんとか事なきを得た。しかし、前の環境と Fedora の環境だと両ディレクトリの構成 (LC_* の格納場所なんか) が異なっていたのが気になったけども (これが、二つめの悲劇を呼ぶ)。
さてさて、お決まりのコマンドで状態を確認し、JDK の動作を確認するために Eclipse なんかを起動してみる:

% getconf GNU_LIBC_VERSION
glibc 2.3.4
% getconf GNU_LIBPTHREAD_VERSION
NPTL 2.3.4

ふm、ふm。問題ない 8->
ということで、この嬉しさを IM に常駐している仲間に伝えようと、おもむろに [SHIFT] + [SPACE] して日本語を入力と…あれ? ATOKX 経由で日本語入力できないのに気づく。あぁ、/usr/lib/im なんたらのファイルをコピーし忘れたかと思ったが、そうでもない。何回か試行したけど、サーバもクライアントも起動しているのに通信できなくなっている。ATOKX の代わりに眠っていた Canna を起動してみると、ちゃんと XIM が使える。ふ〜m ;'-(

Upgrade glibc v2.3.4 from v2.3.2.

readahead を試したり、ここで翻訳した NPTL 関連の問題 (JDK がまともに動かないとか) や NPTL 自身をバージョンアップしたくなったので、現在のバージョンから v2.3.4 にアップグレードできないか調べてみる:

% getconf GNU_LIBC_VERSION
glibc 2.3.2
% getconf GNU_LIBPTHREAD_VERSION
NPTL 0.57

Glibc を まともにメンテできないベンダ を捨てて、ちゃんとメンテできるベンダ のものにしたいという思いの方が強いかな。なので、今日現在で新しいパッケージを参考にビルドしてみる。
まず、三種類の libc をそれぞれ GCC-3.3.5 でビルドする:
・ LD_ASSUME_KERNEL=2.2.5, PTHREAD=linuxthread (TLS 有り)
・ LD_ASSUME_KERNEL=2.4.1, PTHREAD=linuxthread (TLS 有り)
・ LD_ASSUME_KERNEL=2.4.20, PTHREAD=nptl (TLS 有り)
そして、install_root を別の場所にしてインストールしていく:

% unsetenv LD_ASSUME_KERNEL || :
% make -j4 install_root=/opt/BUILDROOT install -C build-i686-linux PARALLELMFLAGS=-s

万が一のため現在の libc 環境をバックアップして、実ディレクトリにコピーしていく。
さてさて、再起動して動くか否か。

Matrox comes back again.

Glitz with Cairo” を使った Xgl Server なんかを見ると、やっぱりアクセラレーションが効くビデオカードが欲しくなる。これ 以来、うちのカード を Linux で使うにしては力不足な上に Matrox からのドライバさえも期待できないなぁ、なんて思っていた。が、久々に Matrox Technical Support Forums の Linux コーナーをのぞいてみると:

We will release a new driver on our web site with 2.6 support. Check out the happy birthday thread where Prez got hold of the drivers in advance. It’s safe to download & use it becuase that’s what we will be releasing on our web site.

(Matrox Technical Support Forums Forum Index -> General Linux -> Driver Situation)
と Matrox Tech Support がコメントしており、Happy Birthday Party Driver Party にはβ版のドライバが公開されていた :O
Matrox の サイト (素直にたどり着けないくらい、迷宮化したサイトになっているな) ではまだ公開していないようだ。で、早速ダウンロードして unpack してみると、XFree86 の他に X.org のドライバも同梱されている。おおぉ。Kernel-2.6 のドライバ mtx.ko のビルドも問題ない。Xv の問題を修正 してロードしてみる。あとは MTRR の問題を回避するよう少々スクリプトを変更して再起動して確認してみると、従来のドライバよりも xengine が叩き出す数値も上がっているし、素早くウィンドウを移動した際の残像も再現しない。すばらしい :)
でも、linux-fb 上で X を終了すると OUT 信号が出てないのは修正されていないなぁ。やはりアクセラレーションを無効 (“NoAccel” “on”) しないとダメかなぁ。
あと、syslog に妙なメッセージが表示されているのも気になるな:

[mtx] MTX driver v1.4.0
[mtx] Allocated a MTX agp driver strucure
[mtx] 0x0527(sub:0xffffffff) board found at 01:00.0
[mtx] Registers at 0xf8000000, size: 8K, flags: 512, knl_addr: 0xf89c8000
[mtx] Framebuffer at 0xf0000000, size: 128M, flags: 4616, knl_addr: 0x00000000, write-combining: YES
agpgart: Found an AGP 3.0 compliant device at 0000:00:00.0.
agpgart: Device is in legacy mode, falling back to 2.x
agpgart: Putting AGP V2 device at 0000:00:00.0 into 1x mode
agpgart: Putting AGP V2 device at 0000:01:00.0 into 1x mode
[mtx] AGP aperture at 0xe8000000, size: 131072K, rate: 1X, write-combining: YES
[mtx] Busmastering flags:
[mtx]   Board type detected: AGP
[mtx]   Chipset 0x0527:0x102b was detected
[mtx]   AGP chipset was detected
[mtx]   PCI transfers available for read write
[mtx]   AGP transfers available
[mtx] Parhelia patches applied: PowerM CompBypass
allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.
[mtx] *ERROR* Parhelia OS: Fail to map memory region (0xf0000000, size:134217728

とりあえず、次期ビデオカードの検討は、もう少し先延ばししよう。

Disk Seeks Considered Harmful!!

これまた ss さんのところでトピックに上がっていた ThreePointZero。来る GNOME-3.0 への開発方針がまとめられている。
その中の Performance and Optimization に、RML がまとめた、ディスクのシーク操作についての資料がある。他にもメモリ・プロファイラ valgrind を使って、実行中の GNOME アプリが使用するヒープ領域を検証するオプション Massif についての考察もある。こちらはツールチェイン・フリークなら興味がそそられる記事だ。もともとは KDE でやっていたことを真似たみたいだけど。
で、RML の Disk Seeks Considered Harmful を日本が誇る SH Kernel Hacker に翻訳して貰った。こういう考察は Kernel 専門家に訳してもらうのが良い。デスクトップ開発者にとっても、言わんとしていることを掴みやすいし:
有害なディスクのシーク操作 (訳者: H.DOYU)
デスクトップ・アプリを開発する場合でも、やはり Kernel を知っておかないといけない…=)