IBM ThinkPad X20 で Debian を使う


1月10日

最近になって,apt-get update すると以下のエラーが発生して, パッケージデータベースの更新に失敗することが頻発するようになった.

# apt-get update
<中略>
Reading Package Lists... Error!
E: Dynamic MMap ran out of room
E: Error occured while processing gs-aladdin-vflib (NewVersion1)
E: Problem with MergeList /var/lib/dpkg/status
E: The package lists or status file could not be parsed or opened.

この問題を解決するためには,/etc/apt/apt.conf に以下のように記述して,キャッシュの容量の最大値を増やせば良い.

APT::Cache-Limit 12582912;

私の環境では,実際には /etc/apt/apt.conf.d/90cache-limit に設定を記述している.

4月24日

プリンタの設定について研究. これまでは LPRng を使っていたのだが, とある事情で CUPS の設定を試みる.

# apt-get install cupsys cupsys-bsd cupsys-client foomatic-bin foomatic-db foomatic-db-gimp-print
# foomatic-configure -n windows -s cups -c smb://windows/EPSON -p Epson-LP-2000 -d lp2000

本当は LP-2400 なのだが,正式サポートはされていなかったので, LP-2000 で誤魔化している. TonarSavine の on/off を制御できるようにするには,どうすれば良いのだろうか? lpadmin を使うと,PPD ファイルを指定してプリンタを組み込むことができるようだ.

# lpadmin -v ipp://printer/AUTO -P ppd-file

いろいろ試してみたが,結局,慣れている LPRng の方が設定が楽だったので, 元に戻してしまった.このままでは,立派な oldtype になってしまう….

8月11日

USB mouse に関わるデバイスドライバが,自動的に load/unload されるようにするために, murasaki をインストールした. すると,network interface のためのドライバが,murasaki と laptop-net の両方によって insmod しようとされるので, エラーが発生するようになった.

この問題を回避するため,/etc/defaults/laptop-net を編集し, MODULE_NAME の設定をコメントアウトした. これで,laptop-net はネットワークドライバを load しなくなり, murasaki によって load されたネットワークドライバを使うようになる. murasaki は /etc/rc3.d/S01murasaki によって, laptop-net(/etc/rc3.d/S12laptop-net) よりも早い時期に起動されるので, これで問題ないはず.

また,ネットワークの設定は全て laptop-net 経由で行っているため,murasaki によって ifup などが呼び出されると都合が悪い. そのため,/etc/murasaki/murasaki.call に含まれている以下の設定を削除した.

[net]: net

laptop-net は,ネットワークケーブルの挿入と取り外しを検出し, 自動的に初期化スクリプトを起動する daemon である. 単純に導入して,初期設定のままで使っても, DHCP が完備されている環境を渡り歩くだけならば十分な効果があり, とても便利に使える.

8月23日

Ghostscript のフォント設定に欠陥を発見. PDF から Acrobat Reader などによって変換した PostScript ファイルには,HeiseiKakuGo-W5 などのフォントが使われているのだが, これらを表示しようとすると,以下のようなエラーで失敗するのである.

Error: /invalidfont in -dict-
Operand stack:
   HeiseiKakuGo-W5-Acro-Identity-H   --dict:7/10(G)--   Font   HeiseiKakuGo-W5-Acro-Identity-H   --dict:7/10(G)--   HeiseiKakuGo-W5-Acro-Identity-H
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   3   8   %oparray_pop   3   8   %oparray_pop   --nostringval--   --nostringval--   --nostringval--   7   9   %oparray_pop   --nostringval--   7   9   %oparray_pop   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1050/1123(ro)(G)--   --dict:0/20(G)--   --dict:97/200(L)--   --dict:35/89(L)--   --dict:76/160(ro)(L)--   --dict:63/78(ro)(L)--   --dict:8/25(L)--   --dict:27/35(ro)(L)--   --dict:17/17(ro)(G)--
8月29日

gs-ja パッケージのメンテナを香田さんから引き継ぐ. しかし,パッケージの upload に失敗.前途多難だ….

cjkps2pdf を使うと,GNU gs-7.0x を利用して,日本語フォントを埋め込まずに PDF を作成することができる. また,このページでは表示用と PDF 出力用に CIDFnmap を切り替える方法についても解説している. gs-ja パッケージの構成に参考になりそうだ.

日本語 OCF フォントを CID-keyed フォントから再構成する方法があるらしい. この方法をきちんと研究すれば,gs-ja パッケージそのものを廃止できるだろう. と言うか,gs パッケージを用いた正式な日本語用の設定方法を広める方が建設的に決まっている.

9月17日

オフィシャルに管理しているパッケージが増えてきたので, build & test 用に sid の環境が必要になってきた. この目的には,通常は debootstrap で構築した chroot 環境が利用されることが多い. libpam-chroot を利用すると,特定ユーザーでログインした場合には sid の環境を利用する, というような事もできる.

しかし,一般ユーザー権限で作業中に seamless に sid 環境を利用したいとなると, ちょっと難しい.そこで,User Mode Linux との併用でなんとかならないかと考えた. それで調べてみると,rootstrap が使えそうだと思ったのだが,何通りも設定を変えて試してみても, 内部で debootstrap を呼び出している個所のエラーで失敗して先に進めない.

I: Retrieving http://ftp.jp.debian.org/debian/dists/woody/Release
E: Failed getting release file http://ftp.jp.debian.org/debian/dists/woody/Release

仕方がないので,debootstrap を使って手作業でディスクイメージを作成した.

  1. ディスクイメージ用の領域を確保して,ファイルシステムを作成する.
    dd if=/dev/zero of=/project/sid-root.img seek=4096 count=1 bs=1M
    mke2fs sid-root.img
    
  2. 確保した領域を loop デバイスを通して mount する.
    mkdir /project/sid
    mount -t ext2 -o loop /project/sid-root.img /project/sid
    
  3. ディスクイメージを作成する. 最初から sid の環境を作成しようとするとエラーで失敗したので, 一旦 woody の base system を作成してから, sid に upgrade するという手順で作業した.
    debootstrap woody /project/sid http://ftp.jp.debian.org/debian/
    chroot /project/sid
    shadowconfig on
    passwd root
    tzselect
    vi /etc/apt/sources.list
    apt-get update
    apt-get dist-upgrade
    
  4. Debian の user-mode-linux パッケージの kernel は, devfs を使うように設定されているので,そのように設定しておく.
    apt-get install devfsd
    vi /etc/default/devfsd # MOUNT=yes とする
    
    この設定が欠けていると,以下のエラーメッセージで悩むことになる.
    fsck.ext2: No such file or directory while trying to open /dev/ubd/0
    
  5. user-mode-linux の module 群をディスクイメージ上にコピーしておく.
    exit
    cp -pr /usr/lib/uml/modules/* /project/sid/lib/modules/
    
  6. これで一応,起動はするディスクイメージが得られたはずだ.
    umount /project/sid
    linux ubd0=./sid-root.img
    

後は,/home/ 以下を HostFS で見れるようにしたり, ネットワークの設定をしたり,という作業が必要なのだが. 今日はもう疲れはてたので,やめ.

9月27日

これまでずっと,ltmodem に頼ったダイヤルアップ環境を使い続けてきたのだが, 流石にちょっと悲しくなってきたので, P-in Free 1P を購入した.

とりあえず,何も設定せずに挿入してみると,TI16750 として認識される. まず,pppconfig と ppp を導入して,普通にプロバイダを設定する.

# apt-get install pppconfig ppp
# adduser username dip
# pppconfig

これで試してみると, このページの記述通り, 確かに速度が出ない.とりあえず,/etc/pcmcia/serial を以下のように変更してしのぐことにする.

diff -u -r1.1 /etc/pcmcia/serial
--- /etc/pcmcia/serial	2003/09/27 05:41:31	1.1
+++ /etc/pcmcia/serial	2003/09/27 05:45:49
@@ -33,6 +33,11 @@
 # Debian does not use the "cua" devices
     CALLOUT=$DEVICE
 
+config_phscard () {
+	log setserial /dev/$DEVICE uart 16950
+	log setserial /dev/$DEVICE uart 16550A
+}
+
 case "$ACTION" in
 
 'start')
@@ -55,6 +60,7 @@
     if [ -n "$SERIAL_OPTS" ] ; then
 	log setserial /dev/$DEVICE $SERIAL_OPTS
     fi
+    config_phscard
     fi
     if [ -n "$INITTAB" ] ; then
 	echo "S$NR:12345:respawn:$INITTAB $DEVICE" >> /etc/inittab
@@ -96,6 +102,7 @@
     if [ -n "$SERIAL_OPTS" ] ; then
 	setserial /dev/$DEVICE $SERIAL_OPTS
     fi
+    config_phscard
     do_fuser -k -CONT /dev/$DEVICE /dev/$CALLOUT $LINK > /dev/null
     ;;
 

さらに, このページの記述を参考にして, モデム初期化文字列などを /etc/chatscripts/atfreed に以下のように設定した.

ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
'' AT&F
'OK\r\n' ATE0\V2&C1&D2&K3&S0S0=0
OK-AT-OK "ATDTxxxx-yyy-zzzz#dddd"
CONNECT \d\c

折角,使い放題を契約したのだから,やっぱり pppd は persist mode で動かしたい. というわけで,/etc/ppp/peers/atfreed は以下のようにした.

hide-password 
noauth
connect "/usr/sbin/chat -f /etc/chatscripts/atfreed"
/dev/ttyS0
115200
defaultroute
noipdefault 
user "username"
remotename atfreed
ipparam atfreed
usepeerdns
persist
holdoff 5

そして,wmppxp2 に代えて wmppp.app を導入した.

# apt-get install wmppp.app
% cat ~/.wmppprc
start: pon atfreed
stop: poff -a

これで,wmppp を dock に登録しておくと,従来通りの使い方ができるようになった.

ついでに,resolvconf を導入. このパッケージを使うと,pump や ppp, laptop-net など /etc/resolv.conf を書き換えるパッケージを適切に調節してくれる. 例えば,dnsmasq をインストールしている環境では,自動的に 127.0.0.1 が /etc/resolv.conf に含まれるようになるので,殆んど何も考えないで済む.

ところが.PHS カードを挿入したままでは suspend できない,ということが判明した. 前回とは異なり, VMware のドライバを外しても,症状は改善しない. このままでは,suspend しようとする度にカードの抜き挿しを行う必要があることになってしまうが, それは少し過酷すぎる使い方だろう.さて,どうしたものだろうか?

9月28日

大学のネットワークでは,DHCP によって通知される DNS サーバーと異なる,独自の DNS サーバーを使う必要がある.これまでは, laptop-net/etc/resolv.conf を直接書き換えていたが, resolvconf を導入すると, そんな単純な方法ではうまく動かなくなってしまった(強行すると resolvconf と矛盾してしまう).

そこで,laptop-net から resolvconf を呼び出すことにした. 具体的には,/etc/laptop-net/profiles/scheme/rc.d/S00resolvconf に以下のようなスクリプトを設置した.

#!/bin/sh

[ -x /sbin/resolvconf ] || exit 0

cat <<EOF | /sbin/resolvconf -a eth0
search private.example.net
nameserver aaa.bbb.ccc.ddd
EOF

これで無事に独自 DNS サーバーが参照されるようになった. さて,後はサスペンドだ.

9月29日

手元で proxy server を動かしているのだが, このキャッシュ類も locate database に記録されているという無駄に気がついた. そこで,以下のように /etc/updatedb.conf を変更した.

diff -u -r1.1 updatedb.conf
--- updatedb.conf       2003/09/29 07:14:36     1.1
+++ updatedb.conf       2003/09/29 07:14:53
@@ -4,7 +4,7 @@
 PRUNEFS="NFS nfs afs proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs"
 export PRUNEFS
 # paths which are pruned from updatedb database
-PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs"
+PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /var/cache /sfs"
 export PRUNEPATHS
 # netpaths which are added
 NETPATHS=""
11月1日

唐突に,手持ちの CD を,いつでも聞けるようにしたくなった.

CD から Ogg Vorbis のデータを作成する.

@IT の記事を参考にして,grip を使うことにした.ここで,曲名などは日本語で入れたくなるのだが, 作成したデータのファイル名も日本語にすると後々面倒なので, kakasi を利用してローマ字に変換するパッチを書いた. このパッチを適用して,~/.grip に以下のように指定すると, 曲名をローマ字に変換してからファイル名として使うようになる.

ripfileformat ~/.ogg/%A/%d/%k.wav
mp3fileformat ~/music/%A/%d/%k.ogg

なお,ファイル名に日本語をそのまま使う場合は, 「設定」→「その他」→「ファイル名に日本語(EUC-JP)を使う」というオプションを有効にしておかないと, (日本語の曲名については)ファイル名が空になってしまって ripping に失敗する.

xmms で日本語を含む曲名を正しく表示する.

[debian-users:36043] を参考にして,フォントセットを使うようにする. xfonts-naga10 をインストールしておいて,以下のように設定した.

-adobe-helvetica-medium-r-*-*-8-*,-misc-fixed-medium-r-*-*-10-*
11月17日

いつもは,xsetroot -sold black という味もそっけもない背景で暮しているのだが, 突然に画像を張り付けてみたくなった. で,後輩の ~/.xsession を調べてみる. ふむ,qiv を使えば良いのか.

qiv --fullscreen -z image.jpeg

こんなのを後輩に見つかったら,気が狂ったかと思われるに違いない.


[Top] / [Debian Tips] / [ThinkPad X20] / [作業日誌 2001年, , 2003年, ]