2004年3月6日土曜日

SL-C860 メモ

りなざう備忘録・メモ

2004年2月12日に Linux Zaurus の SL-C860 を購入しました.

この文書に、 SL-C860 関連の備忘録・メモをまとめます。 当方は、この文書の内容についての保障はしません。 ここに書かれていることを実行するときは、自己責任で行って下さい。 ただし、つっこみは歓迎いたします。 掲示板 などを御利用ください。


インストールしたソフトたちの記録

gcc (zgcc)
GNU C コンパイラ.

qpe-embeddedkonsole-ja ワイド版
日本語 EUC,SJIS,JIS,UTF8 の入出力が可能なターミナル. SL-C860 付属 CD-ROM に入っているターミナルでは日本語が扱えないので導入.
なお,アイコンがタコだった.なるほど.

emacs21
emacsエディタ様.ターミナル上で動いてくれる. すご.
たぶんテキスト編集にしか使わないだろうから, emacs21-leim1_21.2.1-20021126_arm.ipk などの leim なパッケージはインストールしていない. 本来6パッケージをインストールしなくてはならないところ, 4パッケージしかインストールしていない. とりあえず,日本語テキスト編集などに問題はない.
欲をいえば,UNICODE に対応させたいな. UNICODE に対応させるための elisp パッケージ,名前忘れた.
で,とりあえずやってみました.

qpdf2
2.1.0 prerelease beta4 の qpdf2_render-freetype-2.1.0-20031208_arm.ipk というバージョンのものをインストール. freetype というライブラリ?を使って,きれいに表示してくれるバージョンの模様. ファイルサイズは およそ 940 KB . でかいので,コンパクトフラッシュカードがわにインストールをした.

libfreetype2
qpdf2 のインストール後にこれもインストール. ライブラリなので本体にインストールしてみた。 これをいれないと,pdf ファイルの本文部分の全角文字が豆腐(□)で表示された. とりあえず,この freetype2 により豆腐問題が解決. ありがたや.


Javaアプレットをちょっとだけ動かす

appletviewer hoge.html

上記のように、端末エミュレーター上やコマンドプロンプト上から ちょっと手軽にJavaアプレットを動かしてみる方法を模索した。 用意するのは、端末エミュレーターソフトウェアと、 クラスファイル(hoge.class)と、 アプレット実行用のhtmlファイル(hoge.html)の3つ。

hoge.html の絶対パスが [PATH] であるとすると、以下のように端末に打ち込むといい感じ。

evm -appletviewer localhost[PATH]
もしくは
evm -appletviewer [PATH]

もし hoge.html の絶対パスが /mnt/cf/hoge.html であるとすると、 コマンドは以下のようにする。

evm -appletviewer localhost/mnt/cf/hoge.html
もしくは
evm -appletviewer /mnt/cf/hoge.html

以下に 2つの失敗例も掲載。

localhost のかわりに file: という文字列をつけたら、 以下のようにエラーが出て失敗。

evm -appletviewer file:[PATH]
I/O exception while reading: URL connection with specified hostname is
not supported. Only localhost is supported.

localhost のかわりに file: という文字列をつけ、 [PATH] をhoge.htmlへの相対パスとしたら、 以下のようにエラーが出て失敗。

evm -appletviewer file:[PATH]
Bad URL: file://file:hoge.html ( java.lang.NumberFormatException: 
hoge.html )

emacs で unicode の読み書きをする

mule-ucs を使います.
何の因果か,手持ちの Debian マシンの emacs と,Zaurus 上の emacs とのバージョンがともに 21.2.1 と同じでした. したがって,Debian の emacs 用にコンパイルされた mule-ucs の elisp 群をそのまま Zaurus に流用してみます.

Debian マシン の /usr/share/emacs21/site-lisp/mule-ucs 以下にある elc ファイルを根こそぎ持ってきて,Zaurus の以下のディレクトリにコピーしました.

/home/QtPalmtop/share/emacs/site-lisp/mule-ucs

この elc ファイル群だけで, 5MB くらいの領域を使います. 以下がコピーしてもってきた elc ファイルの名前です.

big5c-cns.elc     big5c-ucs.elc     big5conv.elc     big5type.elc
jisx0213.elc      mccl-font.elc     mucs-ccl.elc     mucs-error.elc
mucs-type.elc     mucs.elc          mule-uni.elc     tae.elc
tbl-mg.elc        trans-util.elc    txt-tbl.elc      un-data.elc
un-define.elc     un-supple.elc     un-tools.elc     unicode.elc
unidata.elc       utf.elc           x0213-cdef.elc   x0213-char.elc
x0213-csys.elc    x0213-font.elc    x0213-mime.elc   x0213-udef.elc
x0213-util.elc

.emacs にはとくに何も書き加えず,以下のままです.

(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-japan)
(set-language-environment "Japanese")
(set-keyboard-coding-system 'euc-jp)

mule-ucsディレクトリが入っている site-lispディレクトリには subdirs.el がもうすでに作られているため, わざわざ .emacs で パス を通す必要はないです.

この変更により,emacs の起動に 30秒ほどかかるようになります. これは elc ファイルをカード側に置いたときと,あまり変わりません.

なお,コンパクトフラッシュカード側に elcファイルを置く場合は, .emacsload-path を通せばよいようです.
以下は,コンパクトフラッシュ上の /mnt/cf/mule-ucs というディレクトリの中に elcファイルたちを入れた場合の .emacs の例です.

;;; mule-ucs -- UNICODE の読み書きに対応
(setq load-path
      (cons (expand-file-name "/mnt/cf/mule-ucs")
     load-path))
(require 'un-define) ; Unicode
(require 'jisx0213)  ; JIS X 0213

(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-japan)
(set-language-environment "Japanese")
(set-keyboard-coding-system 'euc-jp)

2004年1月12日月曜日

Debian GNU/Linux, kernel 2.2.x と 2.4.x とを共存させる

新カーネル導入設定と旧カーネルとの同居

今だに、Debian GNU/Linux では、カーネルの安定版としてバージョン2.2.x系を採用している。 (2003年7月現在) しかし、他の多くのLinuxディストリビューションでは2.4.x系が主流となっている。 各種USBデバイスを繋げられること、ALSAの新しいバージョン(ver.0.9)が使えるようになることなど、2.2.xから2.4.xへのアップグレード利点も多い。 そこで、 旧カーネル2.2.17も生かしつつ、新カーネル2.4.20を試していく ことにする。 旧カーネルと新カーネルはそれぞれ起動し分けることができるよう、LILOの設定も行いたいと思う。

Debianといえば、apt。 カーネルのソースも apt-get コマンドで持ってくるのだ。
root になってから以下のようにカーネルソースを頂戴してくる。

$ su -
Password:
# apt-get install kernel-source-2.4.20
すると /usr/src/kernel-source-2.4.20.tar.bz2 が置かれるので、これを展開してやることとする。 展開された kernel のソースは /usr/src/kernel-source-2.4.20 以下に置かれる。
そうしたら、例のごとく(?)カーネルの設定をグラフィカルなインタフェースで行なうため、make xconfig する。
# cd /usr/src/kernel-source-2.4.20
# make xconfig
下に、2.2.17 のときの xconfig の画像とそのときの設定項目、2.4.20 のときの xconfig の画像とそのときの設定項目を並べた。 設定の可能な項目がいろいろと増えたのが視覚的にも比べられる。
2.2.17のとき
2.2.17 での xconfig の様子
そのときの設定可能項目
  Code maturity level options
  processor type and features
  Loadable module support
  General setup
  Plug and Play support
  Block dvices
  Networking options
  Telephony Support
  SCSI support

  I2O device support
  Network device support
  Amateur Radio support
  IrDA (infrared) support
  ISDN subsystem
  Old CD-ROM drivers (not SCSI, not IDE)
  Character devices
  USB support
  Filesystems

  Console drivers
  Sound
  Kernel hacking
2.4.20 のとき
2.4.20 での xconfig の様子
そのときの設定可能項目
  Code maturity level options
  Loadable module support
  Processor type and features
  General setup
  Memory Technology Devices(MTD)
  Parallel port support
  Plug and Play configuration
  Block devices
  Multi-devie support (RAID and LVM)
  Networking options
  Telephony Support
  ATA/IDE/MFM/RLL support

  SCSI support
  Fusion MPT device support
  IEEE 1394 (FireWire) support (EXPERIMENTAL)
  I2O device support
  Network device support
  Amateur Radio support
  IrDA (infrared) support
  ISDN subsystem
  Old CD-ROM drivers (not SCSI, not IDE)
  Input core support
  Character devices
  Multimedia devices

  File systems
  Console drivers
  Sound
  USB support
  Bluetooth support
  Kernel hacking
  Library routines

カーネルの設定。 いっぺんにいろいろ設定するのは危険なので、必要最低限の設定だけにしておく。

カニさんチップの載った愛用のイーサネットカードを使うための設定。
Network device support → Ethernet(10 or 100 Mbit) → Realtek RTL-8139 PCI Fast Ethernet Adapter support を n から m へ。
こいつのモジュール名は、helpを表示させて確認した。 どうやら今度からは 8139too.o という名前になるらしい。

いろいろなファイルシステムを扱いたかったので、その辺の設定。
File systems → Ext3 journalling file system support を n から y へ
File systems → DOS FAT fs support を n から y へ
File systems → MSDOS fs support を n から y へ
File systems → VFAT(windows-95) fs support を n から y へ
File systems → Native Language Support → Japanese charsets(shift-jis, Euc-jp) を n から y へ


設定が終わったら保存して終了。

カーネルをコンパイル。(構築)

# pwd
/usr/src/kernel-source-2.4.20
# make-kpkg kernel_image
# cd /usr/src
# dpkg -i kernel-image-2.4.20_Custom.1.0_i386.deb
このあと、リブートを経て、晴れて新しいカーネルから起動する。
ここで、eth0 が消えていたので、新しいカーネルにネットワークカードを認識させる。
モジュール8139tooをinsmodし、ifconfigでIPアドレスを振った。 そしてルーティングの設定をrouteでしてあげれば、内ネットワーク、外ネットワークをちゃんと区別できるようになった。
具体的には以下のようなコマンドで解決した。
# insmod 8139too
# ifconfig eth0 192.168.0.4 netmask 255.255.255.0
# ifconfig eth0 up
# route -add -net 0.0.0.0 netmask 0.0.0.0 dev eth0 gw 192.168.0.1
見ての通り別段複雑なルーティングテーブルじゃあるまいに、内のネットワークにあるホスト、外のネットワークにあるホストそれぞれに ping を打って、ちゃんと返事が帰ってくればオッケーでしょう。
なお、今後は起動時に自動的に eth0 を認識してもらうため、 /etc/modules に 8139too を書き加えておいた。

まだまだやることはいっぱいだ(1) 「カーネルを起動し分ける」
LILOを使って、次の4つを起動し分けるようにしたい。

  1. 新しく構築したばっかりの最新の2.4.20カーネル
  2. そのいっこ前の2.4.20カーネル
  3. もう使わないかもしれないけど、いちおう2.2.17カーネル
  4. Windows98
まずは、
/boot/vmlinuz-2.4.20 を /boot/old.vmlinuz-2.4.20 にコピー。
そうしたら次のようなシンボリックリンクをはる。
/vmlinuz        →  /boot/vmlinuz-2.4.20
/vmlinuz.2.2.17 →  /boot/vmlinuz-2.2.17
/vmlinuz.old    →  /boot/old.vmlinuz-2.4.20
今後カーネルを再設定し、構築したものは /boot/vmlinuz-2.4.20 に上書きされるので、古い /boot/old.vmlinuz-2.4.20 も生かしておけるようになる。

次にこの3つのカーネルとwin98とを選んでブートできるように /etc/lilo.conf を書く。 /etc/lilo.conf の骨子は以下の通りだ。
lba32
boot=/dev/hda
# boot=/dev/fd0  ### installing LILO in a floppy
root=/dev/hda1
install=/boot/boot.b
map=/boot/map
delay=20
vga=normal

default=Linux

image=/vmlinuz
        label=Linux
        read-only

image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional

image=/vmlinuz.2.2.17
        label=Linux2.2.17
        read-only
        optional

other=/dev/hda3
        label=win
        table=/dev/hda
LILOでの起動プロンプトで Linux, LinuxOLD, Linux2.2.17, win の4つのラベルからそれぞれ 新2.4.20カーネル、旧2.4.20カーネル、2.2.17カーネル、Windows98 の4種の起動方法が選べるようになる。
なお、上記の boot=/dev/hda をコメントアウトし、 boot=/dev/fd0 のコメントをとり有効にしてから root で /sbin/lilo を実行すると、LILOをフロッピーディスクにインストールできる。 起動ディスク用にLILOディスクが一枚あると便利である。
そのまま書き換えずに root で /sbin/lilo を実行するとハードディスクの MBR に LILO が書き込まれる。
MBRとフロッピーにLILOを 書き込んだらリブート。 Shiftキーを押しながらブートすれば、3つのカーネルと1つの別の OS どれを起動するか選べるようになった。

まだまだやることはいっぱいだ(2) 「コンパクトフラッシュカード R/Wを使う」
コンパクトフラッシュカードリーダ(以下CFと表記するかも)の読み書きのできる REX-CF03F という製品を使うため、カーネル 2.4.x を再構築する。
USB CF R/W と USBプリンタ を利用できるにいたるまでの設定は ここここ で、もうすでに済ませてある。 今回行うのはカーネルレベルで USBデバイスを扱うための設定となる。
まずはこの製品の紹介webサイトに置いてあるパッチを手に入れ、これをあてる。 パッチは /usr/src/kernel-source-2.4.20/drivers/usb/storage ディレクトリに入っている transport.c と unusual_devs.h の2つのファイルにあてる。
~user/lib にメーカのwebサイトから手に入れたパッチを展開し、
root になってから以下のようにパッチを当てた。 もちろんパッチの当て方はパッチに同梱の説明書に詳しく書いてあるので、 実際にやる人はそちらをよく読むべきだと思う。

# cd /usr/src/kernel-source-2.4.20/drivers/usb/storage
# patch -p1 < ~user/lib/cf03/patch/redhat7-1/transport.patch
# patch -p1 < ~user/lib/cf03/patch/redhat7-1/unusual_devs.patch

次にカーネルのコンフィグを行う。 /usr/src/kernel-source-2.4.20 にカレントディレクトリを移し、例によって # make xconfig で設定をする。
  • USB Support → Support for USB を y から m にする
    (モジュール名は usbcore.o)
  • USB Support → UHCI Alternate Driver (JE) Support が m になっているか確認する
    (モジュール名は uhci.o、 2.2.17カーネルのときとは違う名前になったので注意か
  • USB Support → USB Mass Storage Support が m になっているか確認する
    (モジュール名は usb-storage.o)
  • USB Support → USB Printer support を n から m にする
    (モジュール名は printer.o)
同梱の説明書には
Code maturity level options → Prompt for development and/or incomplete code/drivers
も有効にせよとあるが、有効にしなくても現に動いているので筆者はこれを無視した。
それと、上記にわかるとおり、CF R/Wの設定といっしょに usb プリンターの設定もこっそりと行っている。

旧バージョンのカーネル用のモジュールの名残がまだ詰まっている /usr/src/modules を /usr/src/modules2.2.17 と名前を変えてから、カーネルを再構築、そして、リブートを行う。
リブート後からは root権限で # depmod -av の後に、uhci, usb-storage, printer を modprobe してやれば、CF R/W も usb プリンターも利用できるようになった。

まだまだやることはいっぱいだ(3) 「音楽演奏」
これは手短に紹介。
alsaのソースを apt で頂いてくる。

# apt-get install alsa-source
するとここで debconf 設定の画面となる。 ここで isapnp 、 デバッグ用メッセージ、サウンドカードに載っているチップにあうドライバ(筆者のものでは sb8 (Sound Braster Pro用)) まで対話的に選択していける。 つぎに /usr/src/alsa-driver.tar.gz を展開する。
# cd /usr/src
# tar xvzf alsa-driver.tar.gz
そうしたら /usr/src/kernel-source-2.4.20 へ行き、
# cd /usr/src/kernel-source-2.4.20
# make-kpkg modules_image
そして /usr/src にできている alsa-modules の debパッケージをインストール。 その後、alsaconf で設定を行った。
# cd ..
# dpkg -i alsa-modules-2.4.20_0.9.2-7+Custom.1.0_i386.deb
# alsaconf
以上で終わり。 音楽演奏も可能となった。
以前使っていたバージョン0.4の alsa で演奏をさせると、マクロメディアフラッシュ等で画像の再生に演奏が追い付かなかった。 だがこのバージョン0.9 ではその問題はかなり解消された。 よかったよかった。

Debian GNU/Linux, woody から sarge へのアップグレード

Debian安定版からテスト版への移行とそれに伴うトラブル

安定版にしがみついてばかりいないで冒険をしようと思い立ち、Debian GNU/Linux の安定版である woody から テスト版の sarge へとアップグレードした。

アップグレードをするため、/etc/apt/sources.list の中の woody という文字をすべて sarge へ置き換えて保存。 ちょうど、こんな /etc/apt/sources.list の中身を

http://・・・(URL)・・・・・.jp/ woody main contrib nonfree
ftp://・・・(URL)・・・・・.jp/ woody main contrib nonfree
こういう風に置換しただけ。
http://・・・(URL)・・・・・.jp/ sarge main contrib nonfree
ftp://・・・(URL)・・・・・.jp/ sarge main contrib nonfree
そうしたら root 権限で
# apt-get update
# apt-get dist-upgrade
以上のコマンドでアップグレードは完了。 筆者の debian box では 396個のパッケージがアップグレードされ、405個のパッケージが新たにインストールされ、9個のパッケージが削除され、3個のパッケージが今とバージョンがわからないままとなった。
アップグレードに際し、消されるのパッケージは以下だった。
alsa-modules-2.2.17, alsautils, libpng-dev, libwings-deb, libwraster2-dev, openoffice.org, org-debian-files, openoffice.org-l10n-ja
これは # apt-get dist-upgrade のコマンドを打つと表示されるので、後々のためにもメモをとっておくべきであろう、うん。

大量のパッケージをダウンロードし、それらのインストールが終わったら晴れて sarge への移行は終了だ。
この後、いくつか再設定をしなくてはならない項目がある。

トラブル(1) 「eth0 が使えない」
さすがにカーネルを移行したわけじゃないんだから、eth0 を認識しなくなったというわけではない。 ifconfig -a を実行するとちゃんと eth0 は存在する。
とりあえず eth0 を利用できるようにしてやるなら以下のようにコマンドを打ってあげる。

# ifconfig eth0 192.168.0.4 netmask 255.255.255.0 up
そして、OSの起動時に eth0 を自動で上げたいので、
# ln -s /etc/init.d/networking /etc/rc2.d/S20networking
をしてやる。 なぜか /etc/rc2.d にあったはずの S20networking が消えていたのが原因のよう。
アップグレード時に勝手に消されてしまったのだろう。

トラブル(2) 「どうも画面がチカチカする」(Xwindow)
どうも落ち着かないので /etc/X11/XFree86Config-4 を編集した。
現在使っているグラフィックカードに合わせて以下のように編集した。
Section "Device"

Chipset    "mgag200"
を追加。
それから、Section "Monitor"
Modeline "1152x864" 92.00 1152 1208 1368 1474 864 875 895 915
のように、結構いい加減に記述。 "1152x864" より後ろの数字はなんなのか、気になるところだが、
$ man XF86Config-4
に載っている。
dot (pixel) clock (MHz), hdisp, hsyncstart, hsyncend, htotal, vdisp, vsyncstart, vsyncend, vtotal
だそうだ。 しかしまあ、改めて見るといい加減な数値にしてるな…。
書き換えたら X を上げ直してみて、様子を見る。 とりあえずこれでチカチカしなくなったので、よしとした。

トラブル(3) 「どうしても kochi(東風) や Osaka といったスケーラブルフォントの表示が出来ない」
XFree86-4.x ならば xfs や xfs-tt などのフォントサーバを上げなくても truetype フォントなどの表示が出来るのだと聞いて喜んでいたのに、これらの文字が表示されない。 具体的には先ほども出てきた /etc/X11/XFree86Config-4 の中の Section "Module" の中で

Load    "xtt"
についているコメントをとってやるのだ。 しかし筆者の debian box ではこのように xtt のモジュールを組み込んでやっても truetype のフォントの表示がされなかった。 色々悩んだが、結局 xserver-xfree86 のバージョンを 4.2.x から 4.1.0 へとダウングレードすることで乗り切ることにした。

トラブル(4) 「man の表示が変」
manでマニュアルを見ると表示が妙なことになる。 以下がその例。

$ man XF86Config-4
XF86Config-4(5x)                                              XF86Config-4(5x)



^[[1mNAME^[[0m
       XF86Config-4 - Configuration File for XFree86 4.x server

^[[1mDESCRIPTION^[[0m
       ^[[4mXFree86^[[24m  uses  a  configuration  file called ^[[1mXF86Config 
^[[22mfor its initial
       setup.  This configuration file is searched for in the following places
       when the server is started as a normal user:

           ^[[4m/etc/X11/^[[24m<cmdline>
           ^[[4m/usr/X11R6/etc/X11/^[[24m<cmdline>
           ^[[4m/etc/X11/^[[24m^[[1m$XF86CONFIG^[[0m
           ^[[4m/usr/X11R6/etc/X11/^[[24m^[[1m$XF86CONFIG^[[0m
           ^[[4m/etc/X11/XF86Config-4^[[0m
           ^[[4m/etc/X11/XF86Config^[[0m
           ^[[4m/etc/XF86Config^[[0m
           ^[[4m/usr/X11R6/etc/X11/XF86Config.^[[24m<hostname>
           ^[[4m/usr/X11R6/etc/X11/XF86Config-4^[[0m
           ^[[4m/usr/X11R6/etc/X11/XF86Config^[[0m
XF86Config-4(5x):

見にくいことこの上ない。 原因はページャ(PAGER) lv のせいのようだった。 このページャを違うものに変えたところ、表示に問題はなくなった。 man の引数 -P の後に lessなどの違うページャを指定するか、環境変数 PAGER で less を指定するかで解決気味。
$ man -P less XF86Config-4
XF86Config-4(5x)                                              XF86Config-4(5x)



NAME
       XF86Config-4 - Configuration File for XFree86 4.x server

DESCRIPTION
       XFree86  uses  a  configuration  file called XF86Config for its initial
       setup.  This configuration file is searched for in the following places
       when the server is started as a normal user:

           /etc/X11/<cmdline>
           /usr/X11R6/etc/X11/<cmdline>
           /etc/X11/$XF86CONFIG
           /usr/X11R6/etc/X11/$XF86CONFIG
           /etc/X11/XF86Config-4
           /etc/X11/XF86Config
           /etc/XF86Config
           /usr/X11R6/etc/X11/XF86Config.<hostname>
           /usr/X11R6/etc/X11/XF86Config-4
           /usr/X11R6/etc/X11/XF86Config
           /usr/X11R6/lib/X11/XF86Config.<hostname>
 Manual page XF86Config-4(5x) line 1

Debian GNU/Linux, USB接続のプリンタの利用とネットワーク印刷 @ kernel 2.2.17

hp deskjet 5551 動作報告とSamba利用のプリントサーバ

先日、 hp のインクジェットプリンタ、 deskjet 5551 を購入した。 「パソコンから紙に印刷をしたい」という家族からの要望により、代わりに買ってきた次第だ。 家族からは、WinME 搭載のノート型コンピュータからこのプリンタを使って印刷ができればよい、と言われていた。 だが、スペースの関係上、このプリンタを私の部屋に設置しなくてはならなくなった。 部屋に設置するというなら、私もプリンタの恩恵にあやかりたいと思い、

  • Linux からも印刷をできるようにする。
  • home LAN 経由で印刷データをプリンタに転送できる(印刷できる)
という環境を目指した。
なお、LinuxPrintingで、どのプリンタを買おうか吟味してから電機屋へ買いにいった。 YドバシCメラにて、2,2800円だった。

なお、まだまだ不備もある。 今まだ残っている問題を以下に挙げておく(投げやり)

  • Linux からテキストを直接印刷できない。(フィルタの不備です)
  • 例えば Windows での印刷の際の「印刷進渉表示」や「インク残量表示」などのプリンタからの情報がパソコンまで届かない。
  • 世界中のクラッカーが私の部屋のプリンタで印刷ができてしまう。

下地となる環境詳細

  • OS = debian GNU/Linux
  • Kernel version = 2.2.17 (USB backport パッチ済み[詳細]
  • イーサネットLAN[詳細]により、同一ネットワーク上に筆者の debian box と ノート型コンピュータ(WinME搭載)がある。

何をしたいか。

  • Linux box と プリンタをUSBで直接つなぎ、Linux からプリンタで印刷をする。(PS形式データのみ)
  • samba を Linux上で走らせておき、WinMEから印刷データを受けとってプリンタに流す。

そもそも Linux がインクジェットプリンタで印刷する手順がわからなかったので、適当に以下のように解釈。

プリントしたいデータ(すべてPS形式とする)をプリンタスプーラに送る。

スプーラはそのデータに対して、ちょっと処理をかましておく。(フィルタ処理)

フィルタ処理の仕事は、プリントしたいデータを ghostscript(gs)hpijs(hp inkjet server)を通して hp deskjet 5551 が印刷可能なデータに変換すること。

変換されたデータを usb デバイスへと流す。

とりあえず、gsとhpijsなるものをインストールしておく。 もちろん、筆者は debianパッケージを使い、dpkgコマンドを使って楽々インストールをする。(ぉ
ちなみに、これは後々判明することなのだが、現在(2003 Mar)安定版としてインストールできる hpijs(ver 1.0.4-1)では deskjet5551 が動かなかったので、テスト版の hpijs (ver 1.3.2) を使用した。

USBのプリンタを使う、ということで、カーネルコンフィグ。

# cd /usr/src/kernel-source-2.2.17
# make xconfig

  設定画面が上がるので、
  USB support → USB Printer support の m にチェックを入れて
  保存して終了

# make-kpkg kernel_image
# cd ..

  /usr/src に kernel-image-2.2.17_Custom.1.000_i386.deb などの
  カーネルパッケージができているので、それを組み込む

# dpkg -i kernel-image-2.2.17_Custom.1.000_i386.deb
# reboot

  再起動

# depmod -av

  depmod -av の出力の中に printer.o があるのを確認(何
  以下のコマンドで printerモジュールをカーネルに組み込めるようになった

# insmod printer
これでハードウェア面での設定はおおよそ終わった。
プリンタを使うときは、上で示したように # insmod printer コマンドや # modprobe printer コマンド*1でモジュールを組み込んでおかないと当然動かない。 modprobeコマンドは、モジュールの依存関係をも考慮してその他必要なモジュールも一緒に組み込んでくれるから便利。

*1(「# insmod modprobeコマンド」と書いていたのを訂正、modprobeという名のモジュールを組み込むわけではありません、ごめんなさい Apr 3)

LPRng(バークレーLPRの拡張)を入れる。 やっぱり # apt-get install lprng で楽してインストール。 この方法だと、ブート時にLPDを上げるか聞かれるので、景気よく y と答えておいた。 見ると、 /etc/rc2.d/S20lprng ができていた。

次に、ソフトの設定を進めていく。
hpijsのサイトの説明によれば、gs の ver 6.53以上から hpijs に対応しているとのこと。
$ gs -h というコマンドを打ち、その中に ijs という出力があればよいらしい。 また、hpijsの使用例として

  • $ gs -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="DESKJET 990" -r300x300 -dNOPAUSE -dSAFER -sOutputFile="/dev/lp0" file.ps -c quit
  • $ lpr -Plp0 tiger.ps
などと載せていた。 特に上の例のコマンドは長過ぎ。 特に、急いでいるときなどには打ちたくない。

deskjet 5551 をプリント出力先として /etc/printcap ファイルに書き加える。 (この辺は他サイト等の情報を元にしている。)

hp_deskjet_5551|hp deskjet 5551:\
:lp=/dev/usb/lp0:\
:sd=/var/spool/hp_deskjet_5551:\
:lf=/var/spool/hp_deskjet_5551/log:\
:af=/var/spool/hp_deskjet_5551/acct:\
:if=/usr/bin/hp_deskjet_5551-if:\
:mx#0:\
:sh:
上記のように書いてしまったので
  /dev/usb/lp0というキャラクタデバイス
  /var/spool/hp_deskjet_5551/log などのディレクトリ
  /usr/bin/hp_deskjet_5551-if というフィルタの役割をするシェルスクリプト
の3点セットを作っておく。
# mkdir /dev/usb
# mknod /dev/usb/lp0 c 180 0

# mkdir /var/spool/hp_deskjet_5551
# chgrp lp /var/spool/hp_deskjet_5551
/dev/usb/lp0 にアクセスされたらメジャー番号180、マイナー番号0番のキャラクタ型デバイスをセットする、という。 いまいちよくわからなかったが、/proc/devices 内の記述を参考してみた。
プリンタからの情報を得るには、この辺が重要になるのかな。 そして、/usr/bin/hp_deskjet_5551-ifというシェルスクリプトだが、これもまた他サイトの情報を参考にしている。
#! /bin/sh
#
# filter for hp deskjet 5551

/usr/bin/gs -q -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="deskjet 5551" -r300 -dNOPAUSE -dSAFER -sOutputFile=- -
上記の最後の1行は、先ほど見かけたあの長いコマンドを deskjet5551 風にアレンジしたもの。 まずはこの長い gs コマンドを普通にターム上で打ち込んでみて、ちゃんと ps ファイルがプリンタから出力されるのを確認してから、スクリプトに組み込む。 こんな風に(以下)打つと、name.ps がプリンタから出力される。
# gs -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="deskjet 5551" -r300 -dNOPAUSE -dSAFER -sOutputFile="/dev/usb/lp0" name.ps -c quit
やっぱり、改行文字をバックスラッシュでエスケープしたほうが見やすくてかっこいと思った・・・。

試し印刷。 こんどは lpr コマンド使用で ユーザでも印刷ができるか確かめる。

$ lpr -Php_deskjet_5551 name.ps
筆者の場合は、lprコマンドで psファイルを指定した場合にのみ印刷ができるようになった。 もじらなどでの印刷はできるが、$ lpr hoge.txt などのコマンドを打つと印刷に失敗する・・・。 magicfilter なるものを使うとこの辺を処理してくれるらしいのだが、それって自分で filter を書き直せば出来そうな気もするけど・・・。
以下次号にご期待・・・。(ぉ
とりあえず、これでLinuxからの印刷に関する設定をいったん中断する。

Sambaをインストール
やっぱり

# apt-get install samba samba-common
でインストール。すると、 debconfで初期設定ができる。 以下はこのdebconfで聞かれることをおおざっぱに訳したものと、設定例。
  1. debconfでsmb.confの設定をしますか? ---- ok
  2. Workgroup/Domain name? ---- home.pr.jp(※ WinMEのネトワク名に合わせること)
  3. 最近の窓は暗号化パスワードを使います。もし生テキストのパスワードがいいっていうなら、窓のレジストリを書き換えて、/etc/samba/smbpasswd というファイルで、各ユーザごとに smbpasswdコマンドでちゃんと設定してください。で・・・、暗号化パスワードを使いますよね? ---- yes
  4. nmbd と smbdのログの場所が /var/log から /var/log/samba に別々の名で保存されるようになりましたのでよろしく。 ---- ok
  5. サーバは daemon か inetd から上げられます。どっちがいいですか。なお、daemonが推奨されますよ。 ---- daemons ok
  6. パスワードについて、手動で smbpasswd コマンドを打ってメンテナンスしてください。 ---- ok
  7. /etc/samba/smbpasswd ? ---- yes
このあと、/etc/samba/smb.conf にプリンタ周りの設定を書き加える。 主だって変更した設定についてのみ、以下に挙げる。
[global]
 workgroup = MSHOME

[homes]
 変更無し

[printers]
 comment = All Printers
 path = /var/spool/samba
 create mask = 0700
 printable = Yes
 browseable = No

[printer1]
 path = /tmp
 guest ok = Yes
 printable = Yes
 print command = cat %s > /dev/usb/lp0 ; rm -f %s
 printer name = hp_deskjet_5551
[printer1] 以下が deskjet 5551 周りの設定である。 WinME 機から送られてくるデータはプリンタが扱える形式のデータのはずなので、デバイス /dev/usb/lp0 に cat コマンドで直接流し込んでいる。 なお、 %s は印刷データのファイル名に変えられる。

ユーザをつくる。
# smbpasswd -a username コマンドで username というユーザを作る。 このとき、 Linux 側にも username さんというユーザがいなくてはならない。

WinME に、deskjet 5551 のドライバを「ネットワークプリンタ設定」でインストールする。 その際、ネットワークプリンタとして hp_deskjet_55 を追加してやればいい。 なお、なぜ窓上で hp_deskjet_55 と尻切れとんぼに表示されるのかは謎である。

おまけ情報。
YドバシCメラのプリンタコーナーでは、hpやキヤノンの社員が接客をしてくれる。 売場には「競合他社との闘い」「客の取り合い」という見えない火花が散っている。 プリンタに関しては、さすがに相手は社員さんなので、何を聞いても正確に答えてくれる。 だが、YドバシCメラ1階の店内にはびこる Yahoo BB! の勧誘員はどうだかは知らない。

Debian GNU/Linux, KDE3.1 を Debパッケージからインストール

KDE3.1のインストール

Windowmaker はテーマを持ち、メニューを持ち、日本語化もでき、軽く、あのドックアプリを広めるのに貢献したXウィンドウマネージャだ。 しかし、 Windowmakerに少し飽きてきた+KDE3.1がリリースされた+スケスケ(透過)メニューに憧れていた ということで、debianパッケージを利用して楽にKDEへ移行してみたいと思ったわけだ。

管理者権限でインストール作業をするため、suコマンドでrootになる。 (sudoコマンドを使ってもよいかと。) まず、 /etc/apt/sources.list に以下を書き加える。

# for kde ver.3.1
deb http://download.kde.org/stable/3.1/Debian stable main
そうしたら、このKDE本家のdebianパッケージ置場(?)を apt line に加えるため以下のコマンドを叩く。
# apt-get update
これで apt-get install kde のようなコマンドで kde を入れられるのかと思いきや、
root@jaga[/etc/apt]# apt-get install kde
Reading Package Lists... Done
Building Dependency Tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

Since you only requested a single operation it is extremely likely that
the package is simply not installable and a bug report against
that package should be filed.
The following information may help to resolve the situation:

Sorry, but the following packages have unmet dependencies:
  kde: Depends: kdelibs3 but it is not going to be installed
       Depends: libkmid or
                libkmid-alsa but it is not going to be installed or
                libkmid-bin but it is not installable
       Depends: kdebase but it is not going to be installed or
                kdebase3 but it is not installable
       Depends: kdebase-audiolibs but it is not going to be installed or
                kdebase3-audiolibs but it is not installable
       Depends: kdebase-libs but it is not going to be installed or
                kdebase3-libs but it is not installable
       Depends: libkonq3 but it is not going to be installed or
                libkonq4 but it is not going to be installed
       Depends: konqueror but it is not going to be installed or
                konqueror3 but it is not installable
       Depends: kate but it is not going to be installed or
                kate3 but it is not installable
       Depends: konsole but it is not going to be installed or
                konsole3 but it is not installable
       Depends: kdebase-doc but it is not going to be installed or
                kdebase3-doc but it is not installable
       Depends: kscreensaver but it is not going to be installed or
                kscreensaver3 but it is not installable
       Depends: kuser but it is not going to be installed
       Depends: ksysv but it is not going to be installed
       Depends: kcron but it is not going to be installed
       Depends: kpackage but it is not going to be installed
       Depends: secpolicy but it is not going to be installed
       Depends: kghostview but it is not going to be installed
       Depends: kview but it is not going to be installed
       Depends: kmail but it is not going to be installed
       Depends: korn but it is not going to be installed
       Depends: ark but it is not going to be installed
       Depends: kab but it is not going to be installed
       Depends: karm but it is not going to be installed
       Depends: kcalc but it is not going to be installed
       Depends: kcharselect but it is not going to be installed
       Depends: kdepasswd but it is not going to be installed
       Depends: kdf but it is not going to be installed
       Depends: kedit but it is not going to be installed
       Depends: kfind but it is not going to be installed
       Depends: khexedit but it is not going to be installed
       Depends: kjots but it is not going to be installed
       Depends: knotes but it is not going to be installed
       Depends: kpm but it is not going to be installed
       Depends: kpaint but it is not going to be installed
       Depends: kiconedit but it is not going to be installed
       Depends: kfract but it is not going to be installed
       Depends: ksnapshot but it is not going to be installed
       Depends: kruler but it is not going to be installed
       Depends: kdict but it is not going to be installed
       Depends: kit but it is not going to be installed
       Depends: knode but it is not going to be installed
       Depends: ksirc but it is not going to be installed
       Depends: koffice but it is not going to be installed
       Depends: knewsticker but it is not going to be installed
       Depends: ktimer but it is not going to be installed
       Depends: kcoloredit but it is not going to be installed
E: Sorry, broken packages
激しくエラー・・・・。
エラー出力を睨みつつ、依存関係を満たすようにこんなコマンド(長いけど1行)を打ってみるも・・・
root@jaga[/etc/apt]# apt-get install kde kdelibs3 libkmid-alsa kdebase3 kdebase3-audiolibs kdebase3-libs libkonq3 konqueror3 kate3 konsole3 kdebase3-doc kscreensaver3 kuser ksysv kcron kpackage secpolicy kghostview kview kmail korn ark kab karm kcalc kcharselect kdepasswd kdf kedit kfind khexedit kjots knotes kpm kpaint kiconedit kfract ksnapshot kruler kdict kit knode ksirc koffice knewsticker ktimer kcoloredit kde-i18n-ja
上のコマンドに対する出力。
Reading Package Lists... Done
Building Dependency Tree... Done
Package kdebase3 has no available version, but exists in the database.
This typically means that the package was mentioned in a dependency and
never uploaded, has been obsoleted or is not available with the contents
of sources.list
W: Couldn't stat source package list file: stable/non-free Packages (/var/lib/apt/lists/_cdrom_dists_stable_non-free_binary-i386_Packages) - stat (2 No such file or directory)
W: Couldn't stat source package list file: stable/non-free Packages (/var/lib/apt/lists/_cdrom_dists_stable_non-free_binary-i386_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these problems
E: Package kdebase3 has no installation candidate
やっぱり・・・。 結局エラーメッセージに振り回され撃沈。
どうやるんだ、インストール?

やっぱり改めてネットで方法を調べるか、と思い直し、 Xttp://davidpashley.com/debian-kde/faq.html こんな資料あるやんか。
結局以下のコマンドでOKらしい。

root@jaga[/etc/apt]# apt-get install arts kdelibs kdebase kdenetwork kdepim kdegraphics kdeadmin kdemultimedia
でも依存関係により、 wine (窓エミュレータ)が消されてしまった。 あとついでに、
# apt-get install kde-i18n-ja
とかもやったら、rootでの作業は終わり。

root から 「KDEを使うユーザ」に戻ったら、さっそく startkde コマンドを打つ。 と思ったら Windowmaker を起動したままだった。 まあとりあえずそのままで 操作や挙動、GUIの設定を行う。 最後に、xdm ログイン時に Windowmaker ではなく、kde が上がるように設定する。
startkde の PATH を調べてから、~/.xsessionを書き換える。
~/.xsession ファイルの骨子は以下のようしてある。

WINDOW_MANAGER=/usr/bin/startkde
export WINDOW_MANAGER

kinput2-canna-wnn  -jserver localhost &
LANG=ja_JP.eucJP
export LANG
PATH=$HOME/bin:$PATH

if [ -x "$WINDOW_MANAGER" ]; then
  realstartup=$WINDOW_MANAGER
elif [ -x /usr/bin/x-session-manager ]; then
  realstartup=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
  realstartup=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
  realstartup=x-terminal-emulator
fi
exec $realstartup
これでめでたく xdm からログインすると KDE が上がるようになった。

ひとりスクリーンショット自慢大会

  1. 全体図(420KB)
    メニューが透けてるよ(; ´Д`)ハァハァ
    KDE3.1の透過メニューを開いた図)
  2. Konqueror(86KB)
    画像・動画ファイル、テキストデータとわかるものを勝手に展開表示するファイラ。 ファイラだけでなく、webブラウザにもなる。
    KDE附属のソフト(概して、k から始まる名称が多い)はかなり重い・・・。 Konquerorってすごいね、の図

Debian GNU/Linux, X や Mozilla で TrueTypeフォントを使う

TrueTypeフォントに奮闘(もじらで使おうTTフォント)

今まで筆者は xfs(X Font Server かな?) を使いビットマップフォントだけを使用していた。 だが、もじらでTrueTypeフォントを使いたくなってしまったため、急きょTrueTypeフォントの東風フォントを導入することにした。

まずフォントファイル(*.ttf)をもらってこなくてはならない。 とりあえず yasu さんのホームページ(Xttp://www.on.cs.keio.ac.jp/~yasu/jp_fonts.html)から東風明朝フォントと、東風ゴシックフォントの二つを頂いてくる。
次にそれを解凍して、 *.ttf ファイル(フォントファイル)と fonts.dir.xtt ファイルを /usr/lib/X11/fonts/truetype_jp というディレクトリへコピーした。 その際、fonts.dir.xtt を fonts.dir と名称変更をしておく。
このパスを見れば想像がつくかもしれないが、ファイルのコピーにはrootの権限が必要になる。 個人的に楽しむ目的ならばroot権限でフォントを導入する必要は全くないだろうから、一般ユーザのホームディレクトリ以下にこれらを置いておいても問題はないだろう。
ここでは /usr/lib/X11/fonts/truetype_jp にフォントファイルを置いたと仮定して話を進めていく。

$ tar jxvf kochi-mincho-0.2.20020727.tar.bz2
$ tar jxvf kochi-gothic-0.2.20020727.tar.bz2
# cp kochi-mincho/fonts/kochi-mincho.ttf /usr/lib/X11/fonts/truetype_jp/
# cp kochi-gothic/fonts/kochi-gothic.ttf /usr/lib/X11/fonts/truetype_jp/
# cp kochi-gothic/examples/fonts.dir.xtt /usr/lib/X11/fonts/truetype_jp/fonts.dir
$ cat /usr/lib/X11/fonts/truetype_jp/fonts.dir
16
kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ai=0.15:kochi-mincho.ttf -kochi-mincho-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:ai=0.15:kochi-mincho.ttf -kochi-mincho-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
bw=0.5:kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ai=0.15:kochi-mincho.ttf -kochi-mincho-medium-o-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ds=y:ai=0.15:kochi-mincho.ttf -kochi-mincho-bold-o-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ai=0.15:kochi-mincho.ttf -kochi-mincho-medium-i-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:ai=0.15:kochi-mincho.ttf -kochi-mincho-bold-i-normal--0-0-0-0-c-0-iso8859-1
kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ai=0.15:kochi-gothic.ttf -kochi-gothic-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:ai=0.15:kochi-gothic.ttf -kochi-gothic-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
bw=0.5:kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ai=0.15:kochi-gothic.ttf -kochi-gothic-medium-o-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:ds=y:ai=0.15:kochi-gothic.ttf -kochi-gothic-bold-o-normal--0-0-0-0-c-0-jisx0201.1976-0
bw=0.5:kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ai=0.15:kochi-gothic.ttf -kochi-gothic-medium-i-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:ai=0.15:kochi-gothic.ttf -kochi-gothic-bold-i-normal--0-0-0-0-c-0-iso8859-1

次に、TrueTypeフォントを扱うためのxfs-xttサーバが入ってない(!)ので、インストールする。 今後は xfs に代わって xfs-xtt を介してフォントを表示させていくこととなる。

# apt-get install xfs-xtt

インストール中にいろいろメッセージが出るのだが、おそらく一番重要なのは3番目にでるものだろう。 以下にそれらのメッセージを挙げる。

  +-------------------------- Configuring Xfs-xtt ---------------------------+
  x                                                                          x 
  x xfs-xtt serves fonts using 100 dpi resolution                            x 
  x                                                                          x 
  x You should be aware that, by default, xfs-xtt (the X Font Server with    x 
  x X-TrueType) preferentially delivers fonts to clients using a resolution  x 
  x of 100 dots per inch.  This affects the visible font size.  Another      x 
  x common default is 75 dpi; some font rasterizers do not deal well with    x 
  x other dpi settings.                                                      x 
  x                                                                          x 
  x This setting can be changed by editing /etc/X11/fs-xtt/config.  See the  x 
  x xfs-xtt(1) manual page for more information.                             x 
  x                                                                          x 
  x                                  <Ok>                                    x 
  x                                                                          x 
  +--------------------------------------------------------------------------+
                                                                               
  +-------------------------- Configuring Xfs-xtt ---------------------------+
  x                                                                          x 
  x xfs-xtt does not listen on TCP port by default                           x 
  x                                                                          x 
  x Because xfs-xtt (the X Font Server with X-TrueType) is a daemon that     x 
  x runs with superuser privileges, by default it runs with TCP port         x 
  x listening disabled as a security measure.  This means that, as shipped,  x 
  x xfs-xtt is not reachable via the network and is unable to to serve       x 
  x fonts to X servers running on remote hosts.  Most people do not need to  x 
  x enable TCP port listening in xfs-xtt; it can serve fonts to local X      x 
  x servers without this functionality enabled.                              x 
  x                                                                          x 
  x xfs-xtt can be configured to remote X servers by appropriately editing   x 
  x /etc/X11/fs-xtt/config.  See the xfs-xtt(1) manual page for more         x 
  x information.                                                             x 
  x                                                                          x 
  x                                  <Ok>                                    x 
  x                                                                          x 
  +--------------------------------------------------------------------------+
                                                                              
  +-------------------------- Configuring Xfs-xtt ---------------------------+
  x                                                                          x 
  x xfs-xtt use 7110 port insted of 7100                                     x 
  x                                                                          x 
  x xfs-xtt would use 7110 insted of 7100 default, xfs-xtt does not          x 
  x conflict original xfs. So, if you installed xfs-xtt (1.3.0.1-15 or       x 
  x earlyer) previous and will not install xfs, you should modify font path  x 
  x in XF86Config, like this:                                                x 
  x                                                                          x 
  x FontPath "unix/:7100" ->  FontPath "unix/:7110"                          x 
  x                                                                          x 
  x                                  <Ok>                                    x 
  x                                                                          x 
  +--------------------------------------------------------------------------+
  
  +-------------------------- Configuring Xfs-xtt --------------------------+
  x                                                                         x 
  x xfs-xtt use /etc/X11/fs-xtt for config files                            x 
  x                                                                         x 
  x Older version of xfs-xtt (1.3.0.1-15 or earlyer) used /etc/X11/xfs for  x 
  x config files. Now this version uses /etc/X11/fs-xtt directory. So, you  x 
  x can use both xfs and xfs-xtt at the same time on the same machine.      x 
  x                                                                         x 
  x                                 <Ok>                                    x 
  x                                                                         x 
  +-------------------------------------------------------------------------+

3番目のメッセージでは、
「xfs-xttはポート7100からポート7110を使うようになるのでXF86Configファイルを編集しておくよう」注意を促している。
筆者の環境では /etc/X11/XF86Config-4 が X の起動時に使われるファイルとなっているので、それを編集した。
その他にも、フォントパスを追加したり、モジュールとしてxttを組み込むよう書き込んでいる。
以下に筆者の /etc/X11/XF86Config-4 の内容(一部)を示す。 強調部分が編集対象部分だ。

     :
     :
Section "Files"
#       FontPath        "unix/:7100"                    # local font server
        FontPath        "unix/:7110"                    # for XTTserver
        # if the local font server has problems, we can fall back on these
        FontPath        "/usr/lib/X11/fonts/misc"
        FontPath        "/usr/lib/X11/fonts/cyrillic"
        FontPath        "/usr/lib/X11/fonts/100dpi/:unscaled"
        FontPath        "/usr/lib/X11/fonts/75dpi/:unscaled"
        FontPath        "/usr/lib/X11/fonts/Type1"
        FontPath        "/usr/lib/X11/fonts/Speedo"
        FontPath        "/usr/lib/X11/fonts/100dpi"
        FontPath        "/usr/lib/X11/fonts/75dpi"
        FontPath        "/usr/lib/X11/fonts/japanese"
        FontPath        "/usr/lib/X11/fonts/truetype_jp"
EndSection

Section "Module"
        Load    "GLcore"
        Load    "bitmap"
        Load    "ddc"
        Load    "dri"
        Load    "extmod"
#       Load    "freetype"
        Load    "xtt"
        Load    "glx"
        Load    "int10"
        Load    "pex5"
        Load    "record"
        Load    "speedo"
        Load    "type1"
        Load    "vbe"
        Load    "xie"
EndSection
     :
     :

編集が終わったら、

$ /etc/init.d/xfs stop
$ /etc/init.d/xtt-xfs restart

などでxtt-xfsデーモンを立ち上げてみよう。

xfontselで kochi が加わったか確認してみる。
xfontselは、xfontselとシェルに打ち込めば上がるはずだ。
xfontselイメージ
文字が表示されていれば、他の場所(もじらなど)でも表示できるはずだ。

よくわからないけど・・・・。
xdmを使う際、
/etc/X11/xdm/Xservers というファイル内に
:0 local /usr/X11R6/bin/X vt7 -deferglyphs 16
のように書くと X に -deferglyphs all オプションつきで起動ができるとのこと。 これがないと X が固まるとの噂が・・・・。 だが筆者は特にこれを有効にしていないが、問題なく xdm から X が上がるのだが・・・・。

見くらべてみよーう。
ビットマップフォントのモナーフォント、TrueTypeフォントの東風フォントを使った際の例を以下に示す。

(フォント画像1) モナーフォントのとき
文字を縮小すればつぶれてしまい、
拡大すればカクカクが目立ってしまう
(フォント画像2) 東風フォントをそのまま指定
フォントサイズによっては
意外と荒さが目立ってしまう
(フォント画像3) 東風フォントにアンチエイリアスをかけた場合
より美しく表示、実にきれい(下記参照)

さらにもじらでこだわってみた。(上画像参照) せっかくTrueTypeフォントを使っているのだから、フォントにアンチエイリアスをかましてよりきれいに表示させてみたい。 なにやら、アンチエイリアスをかますことで、文字色の中間色を使用し文字曲面などのギザギザを目立たなくしてくれるというのだ。
なお筆者は mozilla ver.1.0.1(日本語化パック)を使用している。

$HOME/.mozilla/user_name/random.slt/user.js に次のように書き込んだ。(とはいえ、これもどっかからの写しで恐縮だが・・・・(ぉぃ))

// it is best to leave hinting off
user_pref("font.FreeType2.autohinted", false);
user_pref("font.FreeType2.unhinted", false);
// below a certian pixel size anti-aliased fonts produce poor results
user_pref("font.antialias.min",        8);
user_pref("font.embedded_bitmaps.max", 100000);
user_pref("font.scale.tt_bitmap.dark_text.min", 32);
user_pref("font.scale.tt_bitmap.dark_text.gain", "0.1");
// sample prefs for TrueType font dirs
user_pref("font.directory.truetype.1", "/usr/X11R6/lib/X11/fonts/Type1");
user_pref("font.directory.truetype.2", "/usr/X11R6/lib/X11/fonts/truetype_jp");

最後のほうにある /usr/X11R6/lib/X11/fonts/truetype_jp の下にはTrueTypeフォントが入っている。 この部分は、人それぞれに違うであろうから、丸写しをしても意味はないかと思われる。
### もちろん、もうすでにFontPathにこのディレクトリが指定されている。
書き込んで以降、もじらを起動すると、フォントのアンチエイリアスが可能となる。

メニューバー → 編集(E) → 設定(E)...

を選択し、設定ダイアログをあげる。

設定ダイアログ内のカテゴリから「表示」をダブルクリック → カテゴリの「フォント」をクリックする

とフォント変更ができるようになる。

東風フォントの場合では

Take-kochi gothic-jisx0208.1990-0
Take-kochi mincho-jisx0208.1990-0

のような、フォントが選択できるようになっている。
この最初の一文字が大文字のフォント「アンチエイリアス可」を表しているらしいのだ。 これらのフォントをいつも通り選択してやればよい。 実に楽々だ。

追記(8.Jan 2003)
もじらでフォントにアンチエイリアスをかけると、 フォントを太字にしたり斜体にしたりしても反映されない。
しかしアンチエイリアスをかけないようなフォントを選ぶと、 ちゃんと太字や斜体がちゃんと選択され、表示されたりする。
TrueTypeフォントと同じディレクトリにある fonts.dir の書き方がおかしいのか。
はたまた、これがもじらの限界なのだろうか。
情報求む。

追記(17.Jan 2003)
もじらで、東風フォントにアンチエイリアスをかけずに使用したとき、 全角文字は太字・斜体を表現できるのだが、半角(アスキー)文字は太字・斜体にならない。
しかし、なぜか fonts.dir を以下のように書き換えたらそれなりにうまくいった。
この fonts.dir は東風フォント+和田研フォント+渡辺明朝フォントのフォントデータといっしょに /usr/X11R6/lib/X11/fonts/truetype_jp/ の中に置いてある。
書き換えたら xset fp rehash コマンドでも打てばすぐに反映されるかも。

36
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-c-0-iso8859-1
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-p-0-iso8859-1
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-m-0-jisx0208.1983-0
wadalab-gothic.ttf -wadalab-gothic-medium-r-normal--0-0-0-0-m-0-iso8859-1
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-c-0-iso8859-1
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-p-0-iso8859-1
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-m-0-jisx0208.1983-0
watanabe-mincho.ttf -watanabe-mincho-medium-r-normal--0-0-0-0-m-0-iso8859-1
kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ai=0.15:kochi-mincho.ttf -kochi-mincho-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:ai=0.15:kochi-mincho.ttf -kochi-mincho-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
eb=y:kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ai=.2:kochi-mincho.ttf -kochi-mincho-medium-i-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ds=y:ai=.2:kochi-mincho.ttf -kochi-mincho-bold-i-normal--0-0-0-0-p-0-jisx0201.1976-0
bw=0.5:kochi-mincho.ttf -kochi-mincho-medium-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ai=0.15:kochi-mincho.ttf -kochi-mincho-medium-i-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:kochi-mincho.ttf -kochi-mincho-bold-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:ai=0.15:kochi-mincho.ttf -kochi-mincho-bold-i-normal--0-0-0-0-c-0-iso8859-1
kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0
ai=0.15:kochi-gothic.ttf -kochi-gothic-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0
ds=y:ai=0.15:kochi-gothic.ttf -kochi-gothic-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
eb=y:kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ai=.2:kochi-gothic.ttf -kochi-gothic-medium-i-normal--0-0-0-0-p-0-jisx0201.1976-0
eb=y:ds=y:ai=.2:kochi-gothic.ttf -kochi-gothic-bold-i-normal--0-0-0-0-p-0-jisx0201.1976-0
bw=0.5:kochi-gothic.ttf -kochi-gothic-medium-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ai=0.15:kochi-gothic.ttf -kochi-gothic-medium-i-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:kochi-gothic.ttf -kochi-gothic-bold-r-normal--0-0-0-0-c-0-iso8859-1
bw=0.5:ds=y:ai=0.15:kochi-gothic.ttf -kochi-gothic-bold-i-normal--0-0-0-0-c-0-iso8859-1

東風フォントの中でも、半角文字の jisx0201.1976 をプロポーショナルフォントとして名付ける感じ(?
上の例の東風フォント(明朝・ゴシック)の jisx0201.1976 のとこだけ p とし、他は c (等倍たっけ?)になってしまった。 全角文字の jisx0208.1983 のほうも p としてもよいが、表示がすごく遅くなってしまった。
ああ、アンチエイリアスのかかったきれいなフォントを使いたいなあ。

なお、そもそも xfontsel で東風フォントを表示させたときに pxlsz のところの選択肢が * と 0 と 17 の3つしかなかった、ということが判明。
学校(そらりす2.6)のモリサワフォントを xfontsel で見てきたところ、pxlszのところの選択肢が多くて、下は 2 、上は 48 くらいまで選べるではないか。 この問題には xserver やらが関わってきてとってもめんどそう。
→xttp://search.luky.org/vine-users.3/msg04150.html(参照)
xfontselの pxlsz選択肢 が全部選択可能でない限りは、アンチエイリアスどころではないのかもしれない。
ヽ(`Д´)ノウワーン

Debian GNU/Linux, bashシェルスクリプトでファイル名の一括変更

 ファイルをまとめてリネームするためのシェルスクリプトpowercp(in bash) 

2002-11-28版

既存のファイル file に対して mv file hogefile を実行するのみ。 ワイルドカードを使うと、複数個のファイルをいっぺんにリネームできる。
ただ現行ファイル名の頭に文字列をくっつけるだけにすぎない。 まだあまり柔軟性はない。
しかし、リネーム+他のディレクトリへの移動の際には上のhogeのところを特に /home/username/hoge のように書けばいい(あまり便利ではないが)。

ソース

#!/bin/bash
for h in $*
do
  if [ ! -f "$h" ]; then
    echo '***以下のファイルは本当に存在しますか?'
    echo $h
    exit 1
  fi
done

for j in "$*"
do
  echo '***以下のファイルについて処理を行います'
  echo $j
done

echo ''
echo '***文字列を入れてください'
read i

echo ''
echo '***以下のコマンドを実行します'
for j in $@
do
  echo mv $j $i$j
done

echo ''
echo '***よろしいですか? (y/n)'
read k
if [ "$k" = "y" -o "$k" = "Y" ]; then
  for j in $@
  do
    mv -vi $j $i$j
  done
else
  echo '***中断します'
fi

実行例

$ powercp 0*.mpg
***以下のファイルについて処理を行います
01.mpg 02.mpg 03.mpg 04.mpg 05.mpg 06.mpg 07.mpg 08.mpg 09.mpg

***文字列を入れてください
2p_not_so_good

***以下のコマンドを実行します
mv 01.mpg 2p_not_so_good01.mpg
mv 02.mpg 2p_not_so_good02.mpg
mv 03.mpg 2p_not_so_good03.mpg
mv 04.mpg 2p_not_so_good04.mpg
mv 05.mpg 2p_not_so_good05.mpg
mv 06.mpg 2p_not_so_good06.mpg
mv 07.mpg 2p_not_so_good07.mpg
mv 08.mpg 2p_not_so_good08.mpg
mv 09.mpg 2p_not_so_good09.mpg

***よろしいですか? (y/n)
y
`01.mpg' -> `2p_not_so_good01.mpg'
`02.mpg' -> `2p_not_so_good02.mpg'
`03.mpg' -> `2p_not_so_good03.mpg'
`04.mpg' -> `2p_not_so_good04.mpg'
`05.mpg' -> `2p_not_so_good05.mpg'
`06.mpg' -> `2p_not_so_good06.mpg'
`07.mpg' -> `2p_not_so_good07.mpg'
`08.mpg' -> `2p_not_so_good08.mpg'
`09.mpg' -> `2p_not_so_good09.mpg'