十一月の日記/メモ

 

2000.11.01(水) 11:25:16
自宅のLinuxマシンはそうそう整備してられないし、Debian にでもするかということで、Debian を入れてみたが、使い方はよく分からないので、結局時間かかっている。
今日は、XKBをいじくり回してなんとか設定に成功した。 結論から言うと、

Section "Keyboard"
    Protocol "Standard"
    XkbRules     "xfree86"
    XkbModel     "jp106"
    XkbLayout    "jp"
#    XkbOptions   "ctrl:swapcaps"
EndSection
が最低限の設定である。これはまぁ何のことはないが、せっかく日本語化されているXF86Config のmanページに載ってないのが悲しい。また、manページには、(英語でも日本語でも) XkbVariant "" という行があるが、これがあるとXKBは初期化に失敗する。指定するなら、XkbVariant "jp106" としなくてはならない。

理解した分の仕組みを少し説明しておく。XKB には3通りの設定方法がある。

  1. 上記の、XkbRules,XkbModel,XkbLayout,[XkbVariant,XkbOptions] を使うもの。
    XkbRules で指定するのが、/usr/X11R6/lib/X11/xkb/rules/ にあるファイルの名前で、このファイルを参照すれば、全体の構成が明快に分かる。
    ! model 	=	keycodes	geometry
      jp106		=	xfree86(jp106)	pc(jp106)
    
    ! model		layout	=	symbols
      *		*	=	en_US(pc102)+%l%(v)
      *		jp	=	jp
    
    ! model		layout	=	compat		types
      *		*	=	complete	complete
    
    ! option		=	symbols
      ctrl:swapcaps		=	+ctrl(swapcaps)
    
    これはごく一部を抜粋したものだが、model,layout,option => kyecodes,geometry,symbols,compat,types,symbols の対応関係がここで定義されている。XkbOptions に何が指定可能かもここに定義されている。
  2. XkbKeymap を使うもの。
        XkbKeymap "xfree86(jp106)"
    
    という書式で、/usr/X11R6/lib/X11/xkb/keymap/ にあるファイルの名前と、その中のエントリの名前を指定する。
    xkb_keymap "jp106" {
        xkb_keycodes	{ include "xfree86(jp106)"		};
        xkb_types		{ include "default"		};
        xkb_compatibility	{ include "default"		};
        xkb_symbols		{ include "jp(jp106)"		};
        xkb_geometry	{ include "pc(jp106)"			};
    };
    
    こんな具合で、keycodes,types,compat,symbols,geometry が一式定義されている。実はここには誤りがあり、xkb_symbols の行は、
        xkb_symbols		{ include "en_US(pc102)+jp(jp106)"		};
    
    となっていなくてはならない。これがないので、この設定の仕方では、ALTキーが使えないなどの不具合が発生する。
  3. XkbKeycodes,XkbSymbols,XkbGeometry,[XkbTypes,XkbCompat] を使うもの。
    この場合、keycodes,types,compat,symbols,geometry を個別に設定する。
        XkbKeycodes  "xfree86(jp106)"
        XkbTypes     "default"
        XkbCompat    "default"
        XkbSymbols   "en_US(pc102)+jp(jp106)+ctrl(nocaps)"
        XkbGeometry  "pc(jp106)"
    
    それぞれ、/usr/X11R6/lib/X11/xkb/ の下に対応するディレクトリがある。 XkbSymbols は、XkbSymbols "jp" と(jp106) を省略することもできる。
※1.の XkbVariant は、3.のXkbSymbols の括弧内を指定するものである。一つ目の括弧内はどうなってるのかと思うかもしれないが、順を追って処理するとそうなるらしい。

2000.11.05(日) 00:00:50
やっと、Debian の emacs で ATOK が使えるようになった。 動かなかった原因は、Xのリソースに、Emacs*xnlLanguage: C というのが定義されていたせいだった。xemacs の方は、XEmacs*xnlLanguage: C が定義されているのに、使えてしまうからはまる。Emacs*xnlLanguage: ja_JP としてもちゃんと動くようだが、あってるのがどうかよくわからない。これの説明がどこにあるのか探さねば。
パッケージの方は、emacs20 (20.7-2) ではだめで、emacs20-dl (20.7-4) でないといけない。こっちには、なにやら、xemacs やら、mule 由来の dirty patch が当ててあると書いてある。
なんというか、こういうところではまるのは、フリーソフトの宿命だろうか?

2000.11.11(土) 20:31:59
東京めたりっくが新宿新南口に開いているデモスペースのMETALLIC BARに行って来た。 Aopen からマザーボードのマニュアルとか落としてみたところ、平均 55KB/sec くらいだった。640Kbps ならそんなもんかなと思ったが、実はデモ用のマシンは、5台で3.5Mbpsを共有しているそうで、相手が遅かったのかもしれない。だいたい 700Kbps だと仮定して、640Kbps だとまぁこんなもんかという感じ。にしても実際の回線で体験できないと役に立たないぞ。ちょうど向かいがUNIQLOだったので、フリースとトレーナを買ってきた。あと、DOS/Vパラダイスによって、それから、SPOT 21 で、Corso Italiano を見つけたのでやってみた。噂通りおもしろげだった。どっか近くの店に置かれないかな。

2000.11.12(日) 20:21:22
自宅のLinuxサーバ機の静粛性を上げる為に、まずCPUファンの改善に取り組んでみた。 今時のCPUの発熱だと、ファンなしだとそうとう大きな放熱器を付けても安定動作は望めないくらいファンの威力は絶大なわけだが、なにも4000rpm以上で回さなくても十分効果を発揮してくれるはずだ、ということで、3端子レギュレータの LM317 つかってファンに加える電圧を調整できるようにしてみた。通常12Vを加えるところ 6.5V程度にしてやったところ、高い風切り音がなくなり満足のいく効果をあげることができた。回転数のほうは、そのある問題の為にまだ計測できていない。ある問題とは、マザーボードのハードウェア監視機能のバグで、BIOSセットアップ時にハードウェア監視画面を表示すると、37500rpm といった異常な値が表示され、何回か値を更新するうちにハングアップしてしまう。CPUが熱をもっているということもなく、もちろん運用中に暴走などの問題も発生しない。意外なところにバグが潜んでいるもんだ。マザーボードは例によってMSIだ。次の標的は、ハードディスク。

2000.11.12(日) 22:51:45
1日の日記に誤りがあったので訂正した。訂正個所は、en_US(pc102) に関する部分。
ユーザが自分の好みで細かく設定する方法も分かったので、書いておく。
以下の様な内容のファイル keymap.xkb を作り、xkbcomp keymap.xkb :0 とすればよい。いくつかWarningが出るがそれはどうもそういうものらしい。

無変換キーをスペースキーにする例。
xkb_keymap {
  xkb_keycodes {
    include "xfree86(jp106)"
  };
  xkb_types {
    include "complete"
  };
  xkb_compatibility {
    include "complete"
  };
  xkb_symbols {
    include "en_US(pc102)+jp(jp106)+ctrl(nocaps)"
    key <NFER> { [ space ] };	// Muhenkan -> space
  };
  xkb_geometry {
    include "pc(jp106)"
  };
};
どう書くかは、xkbcomp :0 current.xkb としてできた、current.xkb を参照すればいいだろう。

2000.11.18(土) 10:30:49
P3-Dual マシンが長らく安定していなかったのは、どうやらメモリのせいだったらしい。CPU を一つにしても不安定だったが、メモリを交換したら、20日間 何の問題も起こらず動き続けている。うーん、残念です。で、次は CPU を2個に戻さないといけない。

2000.11.18(土) 10:45:35
そうそう、いたずらしていたら気づいた。Windows2000 は、Ethernetケーブルの抜けを検出して知らせてくれるが、6秒以上抜けたままだと勝手にコネクションを全部切ってしまうようになっている。稼働したまま差し替えできるのが、Ethernetの長所でもあるのに、よけいなことしてくれる。時間を設定するにはどうするの? っと。

2000.11.19(日) 10:25:34
また、頼まれてPCを買った。Pen!!! 800EB, MSI 694 Master, 96147H6(ATA100 60G), GeForce2MX 32M, PC133CL3 128M x2, TX600(250W) で、¥94090(税込)。 いまいち安いのか高いのかわからない。目新しいマザーボードがなくなってしまったので、ついMSI 694 Master に流されてしまう。Sound付き, AGPx1 + PCIx6 という隙のない構成、サウスブリッジが、686B になり ATA100 に対応、引き出しケース入りで、¥12,900の低価格。しかもなんかD-LEDがVoice対応していて喋るらしい。 まだPCを買う予定があるので、早く AMD-760 がデビューして欲しい。

2000.11.21(火) 13:57:12
メモリと言えば、こないだ PC100CL2 のメモリが i810 のマザーを積んだ Compaq のマシンで、起動画面も出さず全く動かないという現象に遭遇した。440BX のマザーでは問題なく動く。 お店ではメーカー製パソコンの場合動作は保証しないということだったが、お店のVIAなチップセットのマシンでも無事動かなかったので交換してもらえた。BXで動くあたりから考えると、メーカでのテストはパスしてしまったという事なのだろうか。

2000.11.25(土) 13:57:57
MSDN Online の オンラインアカウントを作成しようとして半年以上どはまったままにしていたが、やっと使えることを確認できた。ダウンロードは時間はかかりすぎるのでほとんど必要性がないというか利用するつもりはないのだが、晴らさなければならない恨みがあったので、使えることの確認だけはしなければならかったのだ。というのは、以前は、何をやっても有効なアカウントが作成できず、問い合わせて初めて、まだ日本の会員は使えるようになっていないという情報が得られるというお粗末な状態で、不愉快だったから。しかし、今回も使えるようになっているとアナウンスされていたから試したのだが、やっぱりどはまりの要素はあった。登録のページは結局なにひとつ変更されておらず、いったい何が原因で以前登録出来なかったのか不審に思いながらページを進めると、案の定「Firstnameが登録情報と違います」という旨のメッセージが。うーん、いったいどうしろって言うんだ? が、今回はちょっとだけ冷静だった。会員証をじっと眺めると…… 契約者名 寺川 愛印 …… えっ日本語? で、名前を日本語で入力してみたら出来た。登録のページは英語だから、誰が日本語で書くなんて思う? という落ちだった。
ちなみにMozillaだったけど大丈夫だったな。

2000.11.27(月) 09:55:50
親戚のところで、Windows2000ばかりのSOHOなLANを組んだので、インターネット接続の共有とやらを試してみた。例によってヘルプがわかりづらい。これじゃ分かってる人にも分かってない人にもわからんだろう。
「ネットワークとダイアルアップ接続」の中に作成したダイアルアップ接続のプロパティーで「この接続でインターネット接続の共有を有効にする」というのがあり、このチェックボックスをチェックしたときに構成が行われる。この時LAN側接続の設定は、適当な固定アドレス(通常192.168.0.1)になっていないといけない。構成されると、そのマシンがLAN上で、DHCP, DNS, GW(NAT) として機能するようになる。LAN上の他のマシンは、DHCPを利用する(「IPアドレスを自動的に取得する」)か、固定アドレスにして DNS, GW を共有を有効にしたマシンに向けるように設定すればいい。
#「この接続でインターネット接続の共有を有効にする」は、単に「この接続を共有する」でいいと思うが。実際に影響があるのは、LAN側の接続なんだけどもねぇ。
標準で有効になっているが、「オンデマンドダイアリングを有効にする」は、平たく言えば「自動接続する」ということ。これがチェックされていると、外行きのパケットがあったときに自動的にダイアルアップ接続が行われる。が、マシンにユーザがログインしている状態でないと機能しない。
Windowsは、ファイルを共有するだけなら両方のマシンが「IPアドレスを自動的に取得する」設定になっていて(DHCPサーバがいなくて)も、自動的にというか勝手に適当なアドレスを使うようにできているが、簡易ルータとして機能する時にはそういう勝手な実装をしていないのが意外。「LAN の設定を 192.168.0.1 に固定してもいいですか?」くらい聞くかとも思っていたがそれもなかった。
自動接続に関しては、してくれないと不便でしょうがないので、結局 Administrator を自動ログオンさせるようにする。これが簡単にできるようになったのは、Windows2000 からだから、この点はよしとしよう。利用方法にあっているわけだからな。

2000.11.28(火) 10:39:33
思い立ってから何ヶ月も経ってしまったが、やっとこさ、ALSA を使って音を出してみることができた。
Debian の kernel-image-2.2.17 2.2.17pre6-1 ではなぜかうまくいかず、waitqueue_lock シンボルがないといって、snd-timer.o が読み見込めなかった。ので、さっくりとあきらめて、kernel-2.2.17 を 自前で Make する。Debian の kernel-package とかという仕組みはとりあえずパス。
カーネルの設定は、Sound card support が、y もしくは、m になっていればok。個々のハード用のドライバはすべて n にしておく。で、alsa-driver-0.5.9d.tar.bz2 , alsa-utils-0.5.9b.tar.bz2 ,alsa-lib-0.5.9.tar.bz2 をそれぞれ展開して、configure して、make して、make install 。たぶん ISAPnP などを使わない限り、このあたりで設定はなにも必要ない。再起動して、正しく depmod できていれば、modprobe snd-card-ymfpci (YMF7x4の場合) や、modprobe snd-card-intel8x0 (ICH/ICH2の場合) とすることで、ドライバがロードされる。ロードされると、/proc/asound が現れる。(/dev/snd -> /proc/asound となっている。)

>lsmod
snd-card-intel8x0       2272   0 
snd-intel8x0            6320   0  [snd-card-intel8x0]
snd-card-ymfpci         3856   0 
snd-ymfpci             35516   0  [snd-card-ymfpci]
snd-pcm                30168   0  [snd-intel8x0 snd-ymfpci]
snd-ac97-codec         24512   0  [snd-intel8x0 snd-ymfpci]
snd-mixer              23024   0  [snd-ymfpci snd-ac97-codec]
snd-opl3                4488   0  [snd-card-ymfpci]
snd-hwdep               3084   0  [snd-opl3]
snd-timer               9120   0  [snd-pcm snd-opl3]
snd-mpu401-uart         2724   0  [snd-card-ymfpci]
snd-rawmidi             9560   0  [snd-mpu401-uart]
snd-seq-device          3464   0  [snd-rawmidi]
snd                    36204   4  [snd-card-intel8x0 snd-intel8x0
 snd-card-ymfpci snd-ymfpci snd-pcm snd-ac97-codec snd-mixer
 snd-opl3 snd-hwdep snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device]
soundcore               2564   6  (autoclean) [snd]
soundcore.o だけがカーネルの方のモジュール。
起動時は音量がミュートになっているので、alsamixer を使ってミュート解除、及び音量調節をする。alsamixer は、キャラクタベースのGUIになっているので、Xがなくても動いてしかもわかりやすい。そしたら、適当な.wavファイルを用意して、aplay chime.wav などとすれば音がでる。(調整した音量は、alsactl を使って保存/復帰することができる。)
ここまで確認できたら、アプリケーションの方に移れる。とりあえず、alsaplayer-0.99.32.tar.bz2 というのを入れてみた。入力も出力もプラグイン方式になっており、.wav .mp2 .mp3 CDDA などが生成できる。スローや逆再生機能もついていて、おもしろいのは、CDDA でも逆再生できるところだ。(といっても、CDが逆回転する訳ではない。) これも、configure, make, make install で、OK。alsaplayer -F 48000 Adiemus-III.mp3 などとして起動する。-F 48000 がないと、YMF7x4 でも、ICH2 でも正しく再生されない。-n をつければXが起動してなくても動く。とまぁそんな感じでちょっとしあわせになった。

alsamixler で、F2 を押すと

/proc/asound/cards:
===================
0 [card1          ]: YMFPCI - Yamaha DS-XG PCI (YMF724F)
                     Yamaha DS-XG PCI (YMF724F) at 0xd9200000, irq 11
1 [card2          ]: YMFPCI - Yamaha DS-XG PCI (YMF744)
                     Yamaha DS-XG PCI (YMF744) at 0xd9208000, irq 11
2 [card3          ]: YMFPCI - Yamaha DS-XG PCI (YMF754)
                     Yamaha DS-XG PCI (YMF754) at 0xd9210000, irq 5
3 [card4          ]: ICH - Intel ICH 82801BA
                     Intel ICH 82801BA at 0xbc00, irq 11

/proc/asound/pcm:
=================
00-00: YMFPCI : YMFPCI : playback 32 : capture 1
00-01: YMFPCI - S/PDIF : YMFPCI - S/PDIF : playback 1
00-02: YMFPCI - AC'97 : YMFPCI - AC'97 : capture 1
01-00: YMFPCI : YMFPCI : playback 32 : capture 1
01-01: YMFPCI - S/PDIF : YMFPCI - S/PDIF : playback 1
01-02: YMFPCI - AC'97 : YMFPCI - AC'97 : capture 1
02-00: YMFPCI : YMFPCI : playback 32 : capture 1
02-01: YMFPCI - S/PDIF : YMFPCI - S/PDIF : playback 1
02-02: YMFPCI - AC'97 : YMFPCI - AC'97 : capture 1
03-00: Intel ICH : Intel ICH : playback 1 : capture 1
のように表示される。(実は、724,744,754 の3枚刺し) で、alsaplyer -c 0,1 ... とするば、SPDIF から音が出るのだと思うがなぜかうまく動いてない模様。あと、754 は、認識していて、形だけは動いているが、正しく設定できていないようで、大きなレベルの雑音が再生される。

モジュールを自動的にロードさせる仕組みとかはまた今度にする。

ALSAの対応デバイスはこれだけあるので、ほとんどの場合に対応できそうだ。えらすぎ。 Debian の woody がリリースされてなにも設定しなくても音が出るようになってればすてきだ。

十月の日記/メモ