Portege SS3330 で Debian を使う


1月20日

いつの間にやら,kernel-2.2.14 が登場しているらしい.入れ替えたいが,暇が….

久しぶりに,apt-get upgrade しようとしてはたと気が付く. potato って freeze したんですよね….ということは, freeze された時にバグが残ってたパッケージは全部削除されてしまったはず…. チェックしてみる.やっぱり.というわけで,upgrade 諦める. 何せ,まともに TeX の環境が使えるのが,研究室の WS とノートしかないという現状と, 修論締め切りまであと20日という状況を考えると,とても危ない橋を渡る気にはなれません.

2月20日

東芝 Linux users メーリングリストでも話題になっていたのですが,SS3330 や SS3380 などの SS3300 系列のキーボードはチャタリングが発生しやすいらしく,ちょっと使いにくい場合があります. 例えば,Emacs を使用中に C-y を入力すると, 何もしていないのに複数回押してしまったことになったりして苦労します. このような場合は,以下のコマンドを実行すると症状が改善するかも知れません.

kbdrate -d 500 -r 30.0

ただ,このコマンドを実行すると,キーボードの反応が悪くなったように感じられるので, もう少し適切な値に調節する必要がありそうです.

3月29日

久しぶりに,apt-get upgrade を実行すると, 200個以上のパッケージが置き換えられてしまった.更に, /etc/apt/sources.list を書き換えるのを忘れていたので,woody になってしまった.うーん.しばらくは potato で暮らすつもりだったのに….

更にうっかりと pcmcia-modules を hold にしておくのを忘れていたので, ネットワークカードが使えなくなってしまった.それにしても, 手元で調節したカーネルに併せてコンパイルしたカスタム・パッケージが入っているのに, どうして上書きされてしまうのだろうか.何か,設定に間違いがあるような気がするなぁ.

4月4日

カーネルを再構築した.

なぜか,depmod -a を実行すると大量の Unresolved Symbols が警告されたので,何回かパッケージを作り直し,/lib/modules/2.2.14/ の下を大掃除する必要があった.

前述の理由により,カーネルパッケージの入れ替えを繰り返していたところ, いきなりブートしなくなったので,かなり焦った.が,レスキューディスクを使って再起動し, 以下の手順でブートローダを再インストールすることによって何とか回復した.

mount /dev/hda1 /target
cp -p /target/boot/vmlinuz-2.2.14 vmlinuz
cp -p /target/boot/vmlinuz-2.2.13 vmlinuz.old
sed s,/boot/,/target/boot/, /target/etc/lilo.conf > lilo.conf
lilo -C lilo.conf
4月5日

ようやく内蔵モデムが使えるようになった. 色々試行錯誤したので,無茶苦茶に疲れました.具体的な手順は次の通り.

  1. ドライバを入手する.
  2. 特にシリアルドライバに注意して,カーネルを再構築する.
    CONFIG_SERIAL=m
    CONFIG_SERIAL_EXTENDED=y
    CONFIG_SERIAL_MANY_PORTS=y
    CONFIG_SERIAL_SHARE_IRQ=y
    CONFIG_SERIAL_MULTIPORT=y
    
  3. ドライバの配布に含まれている ltinst というコマンドを実行するか, そのスクリプトと同じことを手動で行う.
    1. ドライバ ltmodem.o を適当な場所に配置する.
      unzip linux568.zip
      cp -p ltmodem.o /lib/modules/`uname -r`/misc
      
    2. デバイス・ファイルを作り,パーミッションを調節しておく.
      mknod /dev/ttyS14 c 62 78
      chown root /dev/ttyS14
      chgrp dialout /dev/ttyS14
      
    3. /etc/modules.conf を適当に設定する. 私は以下のように設定しておいて,内蔵モデムが必要になる度に modprobe -k serial を実行している.
      alias char-major-62-78 ltmodem
      install      ltmodem insmod -f ltmodem
      pre-install  ltmodem modprobe -k serial
      post-install ltmodem ln -sf /dev/ttyS14 /dev/modem
      post-remove  ltmodem rm -f /dev/modem
      

Debian を使用している場合は, ドライバのバイナリ配布からモジュールパッケージを作成するためのパッケージを作ったので, これを利用すると楽にインストールできる.

シリアルドライバをモジュールとしている場合は,特に注意が必要で, シリアルドライバを先に組み込んでおかないと,すぐにカーネルがフリーズしてしまう. おかげで,昨日からのたったの1日で10回以上もリブートと fsck を繰り返してしまった.

それにしても一応は動作するものの,あまりにも不安定. その上,普通のモデムカードよりも通信速度が遅いときた. そんなわけで,とりあえず常用は無理だと思われる.

4月13日

遅ればせながら,Emacs-20.6 をコンパイルした.

それから,SEMI を使うために必要な metamail をインストールし,mimencodemmencode という別名で使えるようにシンボリックリンクを張って誤魔化した.

cd /usr/local/bin && sudo ln -s ../../bin/mimencode mmencode
7月15日

キーボードのチャタリングの症状が改善されず,非常に使いづらい(この問題は, 後にパッチのミスであることが判明した.7月20日の記述を参照). そこで,パッチに指定されている 定数を次のように書き換えて kernel の再構築を行うことにした.

#define CONFIG_CHATTER_INTERVAL 90000
7月17日

遅ればせながら,Emacs-20.7 をコンパイルする.

tar xzf emacs-20.7.tar.gz
tar xzf leim-20.7.tar.gz
cd emacs-20.7
gzip -dc ../emcws-20.7-20000614.gz | patch -p1 -E
CFLAGS='-O2 -DX_I18N_INHIBITED -pipe -mcpu=pentiumpro -march=pentiumpro' ./configure --with-x-toolkit --with-wnn6 --with-wnn-includes=/usr/include/wnn --with-wnn-libraries=/usr/lib --with-line-space
make
sudo make install
sudo chown -R root:staff /usr/local/share/emacs/20.7
7月18日

ようやくにしてサウンド関係の設定を行った. と言っても,必要そうなパッケージを導入して,alsa-modules をコンパイルするだけで,あっけなく音が鳴ったんだけど…. この記事が大変参考になる.

  1. 関係のありそうなパッケージは次の通り.
    ii  alsa-base      0.5.8b-2       ALSA driver common files
    ii  alsa-modules-2 0.5.8b-2+custo Advanced Linux Sound Architecture (drivers)
    ii  alsa-source    0.5.8b-2       ALSA driver source
    ii  alsa-utils     0.5.8-1        Advanced Linux Sound Architecture (utils)
    ii  alsaconf       0.4.3b-2       ALSA configurator
    ii  alsautils      0.5.7-2        Advanced Linux Sound Architecture (utils)
    ii  libasound1     0.5.8-1        Advanced Linux Sound Architecture (libraries)
    
  2. 通常の kernel 再構築手順に従い,alsa-modules-2.2.x パッケージを作成してインストール.
  3. alsaconf を実行し,ESS Maestro2 を選択する. こうすると,/etc/modutils/alsa が生成される. この設定によって,以下のようにドライバが組み込まれる.
    snd-pcm-oss            16840   0 (autoclean)
    snd-pcm-plugin         12840   0 (autoclean) [snd-pcm-oss]
    snd-mixer-oss           4308   0 (autoclean) [snd-pcm-oss]
    snd-card-es1968         2140   0
    snd-es1968             11164   0 [snd-card-es1968]
    snd-pcm                28760   0 [snd-pcm-oss snd-pcm-plugin snd-es1968]
    snd-timer               8064   0 [snd-pcm]
    snd-mpu401-uart         2244   0 [snd-es1968]
    snd-rawmidi             9112   0 [snd-mpu401-uart]
    snd-seq-device          3400   0 [snd-rawmidi]
    snd-ac97-codec         23904   0 [snd-es1968]
    snd-mixer              22608   0 [snd-mixer-oss snd-ac97-codec]
    snd                    35564   1 [snd-pcm-oss snd-pcm-plugin snd-mixer-oss snd-card-es1968 snd-es1968 snd-pcm snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device snd-ac97-codec snd-mixer]
    soundcore               2564   4 [snd]
    

少し悩んだのは,Sound-HOWTO の記述にしたがって,/dev/sndstat を調べようとした時だが, これは,/proc/asound/sndstat が正しいようだ. それから,サンプルになる MP3 ファイルか何かがないと,動作確認できないので,かなりしんどい.

ヘッドフォンで聞く分には何とか許せる音質だが,内蔵スピーカで鳴らすのは,ちょっとつらい. まるで安物のラジオみたいな音がする. まあ,この機械を購入したときは, サウンドのことなんか何も考えてませんでしたからねぇ….しょうがないでしょう.

ところが.一度 suspend してしまうと,うまく音が鳴らなくなることが判明した. snd_card_es1968 および snd_es1968 をメモリから一旦取り外し,mixer などの設定を元に戻すと再び音が鳴るようになるようだ.

# -- suspend
alsactl -f foo store
rmmod snd-card-es1968
rmmod snd-es1968
# -- resume
insmod snd-es1968
insmod snd-card-es1968
alsactl -f foo restore

従って,この処理を自動化すれば,安定して利用できると考えられる. apmd を使うと,APM の状態が変化したときに特定のコマンド(Debianでは /etc/apm/apmd_proxy)を実行することが出来るので, これを利用するとうまく行きそうなのだが.

wmtuxtime のボタンを押して suspend させる場合

apmd によって状態変化が検出されるよりも速く,suspend が実行されてしまうようだ. そのため,/etc/apm/apmd_proxy は,resume 時にしか実行されない. SoftwareSuspend 関数で何らかの処理を呼び出す必要がありそうだ.

apm -s と標準のコマンドを実行して suspend させる場合

標準の apmd とは,どうも相性が悪いようだ. この方法での suspend を試みたところ,2回目の resume の後でキーボードが正常に入力できないようになった. ただし,これが本当に apmd のせいかどうかは,今のところ良く分からない.

7月19日

昨日,「標準の apmd とは相性が悪い?」と書いたが, これはどうも間違いのようだ.蓋を閉じて suspend させた場合には,標準の apmd に基づく制御が行われているらしい形跡があるので,apm -s による手動の suspend のみがおかしいというのは,あまり説得力がない. もっとも,この部分のソースコードをきちんとあたってみないと,正確なところは分からないが. でも,今日はもう眠いので,また今度.

7月20日

キーボードのチャタリングの症状が改善されないことに不審を感じて, パッチを検討してみると,マクロの名前が間違っていることを発見した. 道理でチャタリングの間隔を調節しても改善されないわけだ…. この問題を修正したパッチを適用して kernel を再構築すると, ほぼ完全にチャタリングを抑止できるようになった. これで随分と使い易くなりそうだ.

10月6日

DHCP で研究室によく接続して使うようになったので,改めてセキュリティの点検をしてみると, SMTP に反応してしまっていることが気になった. よそのホストから SMTP でメールを受け取ることは有り得ないはずなので,

  1. アクセスを完全に禁止する
  2. localhost からのアクセスだけを許可する

という2通りの対策が考えられる. 本当は,後者の方が正しいのだろうけれど,今回は安直に対策することにした.

  1. /etc/inetd.conf を編集して,smtp を受け付けないようにする.
  2. 次に,/etc/init.d/exim を起動時に実行しないようにする. これをしておかないと,起動時に自動的に daemon として exim が実行されてしまい, 対策の意味がなくなる.
    sudo update-rc.d -f exim remove
    

なお,きちんと対策する場合は tcpserver や tcpwrapper がある.

10月7日

USBマウスを使ってみようか,などと設定を始める. 「USB Mania」や SS3380V の設定例を眺めて,少し勉強する.

  1. USBサポートを有効にして kernel を再構築する.
  2. デバイス・ファイルを作成
    sudo mknod /dev/usbmouse c 10 32
  3. /etc/modutils/usb を作成して, /etc/modules.conf を更新する.
    sudo update-modules
  4. iMultiMouse をインストール
    sudo apt-get install imultimouse
  5. /etc/XF86Config を編集. 通常は "ZaxisMapping 4 5" と設定するはずだが, 私の環境ではホイールの回転が逆方向になったので,入れ替えている.
    Section "Pointer"
        Protocol    "IMPS/2"
        Device      "/dev/mumse"
        ZaxisMapping 5 4
    EndSection
    
  6. xdm を再起動.
    sudo /etc/init.d/xdm restart

(linux-2.2.18 で USB ドライバの構成が大幅に変更されたため, この設定は無効になった)

10月25日

gnuplot に日本語化パッチを適用してみる.

apt-get source gnuplot
cd gnuplot-3.7.1p1
tar xzf ../gnuplot3.7.1+1.1.9.patch.tar.gz
patch -p0 -E <gnuplot3.7+1.1.patch

このまま,普通にパッケージを作ろうとすると, 日本語化パッチに含まれているバイナリファイルが邪魔になって, source package を作成できないという問題が発生する. そこで,以下のように uuencode して保存しておき,build 時に展開するようにしておく.

gzip -9c gp+/plus.dvi | uuencode plus.dvi.gz > gp+/plus.dvi.gz.uue
gzip -9c gp+/plus.pdf | uuencode plus.pdf.gz > gp+/plus.pdf.gz.uue
patch -p1 -E <gnuplot-ja-rules-patch
debchange -i
dpkg-buildpackage -rfakeroot -us -uc
sudo dpkg -i ../gnuplot_3.7.1p1-4.1_i386.deb
echo gnuplot hold | sudo dpkg --set-selections

更に,hold 指定をして上書きされないようにしておく.

11月2日

急に FAX を送らなければいけないことになった. そんな場合でも,Debian なら安心. apt-get install efax-ja して,/etc/efax.rc を編集するだけで,無事に FAX が使えるようになった. でも,PS だけではなく,DVI も自動認識してほしいなぁ….

11月3日

dvi2ps では変換できない .dvi ファイルに遭遇したため,重い腰を上げて dvipsk-ja の設定に取り掛かった.が,うまく設定できない.

で,dvipsk-ja がうまくいかないものだから,今度は dvi2ps の設定をいじってみた. 以前の設定では,フォントの使い方が気に入らなかったのだが, /etc/texmf/dvi2ps/fontdesc をコメント通りに以下のように修正するだけで望みの設定が得られた. やっぱり Debian は偉い.

--- fontdesc.orig       Fri Nov  3 19:12:44 2000
+++ fontdesc    Fri Nov  3 19:07:43 2000
@@ -25,14 +25,14 @@
 #      NTT jTeX fonts
 #
 #fontdesc      //fonts$kpse/ntt-bitmap
-fontdesc       //fonts$kpse/ntt-vflkanji
-#fontdesc      //fonts$kpse/ntt-bikanji
+#fontdesc      //fonts$kpse/ntt-vflkanji
+fontdesc       //fonts$kpse/ntt-bikanji
 #
 #      pTeX / ASCII jtex
 #
 #fontdesc      //fonts$kpse/a2n
-fontdesc       //fonts$kpse/asc-vflkanji
-#fontdesc      //fonts$kpse/asc-bikanji
+#fontdesc      //fonts$kpse/asc-vflkanji
+fontdesc       //fonts$kpse/asc-bikanji

 ##########################################################################
 #
@@ -40,6 +40,6 @@
 #
 # if you want to use BlueSky postscript cm fonts, uncomment the next line.
 #
-#fontdesc      //fonts$kpse/fonts-psf
+fontdesc       //fonts$kpse/fonts-psf
 fontdesc       //fonts$kpse/fonts-bitmap
 fontdesc       //fonts$kpse/generate
11月4日

それから,dvi2ps を使う場合は dvi2ps -i dvips というオプションを追加すると良い,ということも教えてもらった.

11月5日

vi で日本語を含むファイルを編集しようとすると,日本語部分が正常に表示されない. あれ,nvi-m17n をインストールしてあるはずなのに,と確認してみると,

% dpkg -S `which vi`
dpkg: /usr/bin/vi が見つかりません.

おお,これが噂に聞く alternative システムという奴か. でもって,man update-alternatives とマニュアルをじっと読む.うーん…,訳わからん.

# update-alternatives --display vi
vi - status is auto.
 link currently points to /usr/bin/nvi
/usr/bin/elvis-tiny - priority 10
 slave vi.1.gz: /usr/man/man1/elvis-tiny.1.gz
/usr/bin/nvi - priority 30
 slave vi.1.gz: /usr/share/man/man1/nvi.1.gz
/usr/bin/nvi-m17n - priority 30
 slave vi.1.gz: /usr/share/man/man1/nvi-m17n.1.gz
Current `best' version is /usr/bin/nvi.

これを単純に nvi-m17n に変更したいだけなのだが…. と思ったら,答えは簡単で update-alternatives --config vi と対話的に実行すれば良いだけでした.

11月6日

この前,正常に動作しなかった dvipsk-ja について. 結局,必要な仮想フォントをインストールする必要があることが分かった. 例によって,手抜きなパッケージを作成して, インストールした.

11月17日

[debian-users:25200] の記事を見て noflushd をインストールしてみる. しかし,glibc の移行にまだ不安があるので,以下の手順で再構築してから導入した.

apt-get source noflushd
cd noflushd-2.0
dpkg-buildpackage -rfakeroot -us -uc
sudo dpkg -i ../noflushd_2.0-1_i386.deb

更に,[debian-users:25204] の記事を参考にして, /etc/init.d/sysklogd を編集しておく. これで,ハードディスクのアクセスが止まってくれるようになった. 後は,スピーカーの部分からホワイト・ノイズが漏れているのが,気になるなぁ.

しかし,コンパイルし直したものがこれだけ増えてくると, きちんと列挙しておかないと,訳が分からないことになりそうだ. 現時点では,多分,以下のパッケージだけだと思うんだけどな.

11月25日

Emacs21 の pretest も始まっているというのに, 今更という気もしないではないが, emcws patch を適用したパッケージの作成を試みた.

apt-get soucee emacs20
cd emacs20-20.7
gzip -dc ../emcws-20.7-20000614.gz | patch -p1 -E

この時,Debian 固有の変更によって emcws patch が部分的に reject されるので, それを上書きするためのパッチをあてる.

patch -p1 -E <../emcws20-debian-patch
autoconf
find -name '*.orig' -o -name '*.rej' | xargs rm -f
debchange -i
dpkg-buildpackage -rfakeroot -us -uc
dpkg -i emacs20_20.7-3.1_i386.deb
dpkg -i emacs20-el_20.7-3.1_all.deb
echo emacs20 hold | sudo dpkg --set-selections
echo emacs20-el hold | sudo dpkg --set-selections

作成したパッケージを使うと, 理由は不明だがモード行の表示がおかしくなってしまった. そのため,対症療法的なコードを ~/.emacs に挿入した.

(add-hook 'after-make-frame-functions
	  (lambda (frame)
	    (set-face-inverse-video-p 'modeline t frame)))
12月13日

何となく XEmacs に浮気してみたくなったので build を始めたのだが, Canna ライブラリがない,と言われてこける. Wnn6 を使っているので,Canna を今更入れる気にはなれないが, この際だから,この前公開された WXG の試用もついでにしてみる気になり, ライブラリはインストールすることにする.

apt-get source libcanna1g
canna-3.5b2
dpkg-buildpackage -rfakeroot -us -uc 2>1 | tee ../log
cd ..
sudo dpkg -i libcanna1g_3.5b2-29_i386.deb libcanna1g-dev_3.5b2-29_i386.deb
apt-get source xemacs21-basesupport
cd xemacs21-basesupport-2000.10.23
dpkg-buildpackage -rfakeroot -us -uc 2>1 | tee ../log
cd ..
apt-get source xemacs21-mulesupport
cd xemacs21-mulesupport-2000.10.23
cd ..
apt-get source xemacs21
xemacs21-21.1.12
dpkg-buildpackage -rfakeroot -us -uc 2>1 | tee ../log
cd ..
sudo dpkg -i xemacs21-mule-canna-wnn_21.1.12-2_i386.deb xemacs21-support_21.1.12-2_all.deb xemacs21-bin_21.1.12-2_i386.deb xemacs21-mulesupport_2000.10.23-1_all.deb xemacs21-basesupport_2000.10.23-1_all.deb xemacs21_21.1.12-2_all.deb
sudo dpkg -i xemacs21-basesupport-el_2000.10.23-1_all.deb xemacs21-mulesupport-el_2000.10.23-1_all.deb xemacs21-supportel_21.1.12-2_all.deb
12月25日

WXG を試用してみた.

  1. alien --to-deb wxg-1.0b-1.i386.rpm
  2. dpkg -i wxg_1.0b-2_i386.deb
  3. 付属のサンプルを参考にして,次のような起動スクリプトを作成した.
    install -o root -g root -m 755 wxg /etc/init.d/
    update-rc.d wxg defaults 95 5
    
  4. yc.el をインストール.

なかなか,誤変換が少なくて面白い変換器である.

12月26日

そろそろ標準の 64MB では窮屈に感じるようになってきたので,メモリを増設しようと思い立った. しかし,純正品(PA2066UJ)はあまりにも高い(80000円)なので, サードパーティーの製品を探索してみると,以下の3社の製品が見つかった.

ではと,これらを取り扱っている通販店を探してみると,これがなかなか見つからない. やはり,1年半も前の製品のオプションは儲からないからだろうか…. 結局,キャットワークスで, ハギワラシスコムの製品を取り寄せて貰うことにした. しかし,値段が異様に安い.大丈夫なんだろうか.

12月30日

実家に帰ってきた.で,とある赤帽なOSが入っていた実家のPCを, 速攻で Debian に入れ替えた.昔の Debian のインストーラと言えば, 多数あるディストリビューションの中でも最悪に近いレベルの分かり難さだったが, potato では劇的に改善されていて,正味2時間弱で作業は完了した. 何と言っても,dselect を殆んど使わなくても良いのが大きいでしょう.

しかも,つい最近に別の場所でインストールした時のパッケージリストをそのまま使ったので, 更に楽勝だった.

  1. 参照するPCにインストールされているパッケージのリストを作る.
    dpkg --get-selections >selections
  2. 通常のインストール手順にしたがって,最小セットのインストールを行う.
  3. パッケージリストを設定する. ただし,X server などマシン毎に異なるパッケージについては注意が必要なので, 適当にパッケージリストの内容を書き換えて対処する.
    dpkg --set-selections <selections
  4. apt-get dselect-upgrade

自前の task package を作成する,という方法も考えられる. 現時点のパッケージリストを取り出して,そのパッケージ間の依存関係を解析し, 最小限度のパッケージに依存するような,専用 task package を作成するスクリプトは, 多分かなり簡単に書けるだろう.その task package に, ホスト毎に調整が必ず必要になる設定ファイルも含まれるようになっていると更に良い. 次に,幾つかのマシンを同時に管理しているような場合には, そのマシンの数だけ生成された task package をまとめて, 必要なパッケージリストを作成し,専用 CD-ROM を作るようなスクリプトまで出来たら,もっと良い. これが実現すれば,ネットワーク的に不便な場所にあるPCでも,かなり簡単にメンテナンスできるようになるよね.


[Top] / [Debian Tips] / [SS3330] / [作業日誌 , 2000年, ]