HOME > 電算 > Zaurus SL-C750メモ(Zaurusで袖珍Emacs改め)

Zaurus SL-C750 メモ(Zaurus で袖珍 Emacs 改め)

更新:2006-1-25(Wed)どこが更新されたかは、ひ・み・つ。

このページに何が書いてないか:
気づいたら、http://www.ratocsystems.com/products/subpage/cfu1.html のドライバが http://paipai.org/~humorum/pukiwiki/pukiwiki.php?%5B%5BZaurusCfu1_dist%5D%5D にあった。これは、zaurus で USB 機器 (ハードディスク、外付キーボード、プリンタ) が使えるということである。在英中につき、USB カードが容易には手に入らざるため、試していない。
LaTeX および gs が http://www.snowelm.com/~t/doc/tips/20031120.ja.html で配られているようだ。印刷環境が改善されることが期待できる。

目次

Emacs を使う ターミナル  シェル  Emacs  日本語入力方法  Emacs から Anthy を使う  キーバインディング  キーリピート  シフトをトグル化  ispell  tc2  skk  Qtクリップボード(から|へ)転送
Emacs とは関係のない事ども nkf  fold  wc  armutils  telnet  ftp  wget  samba サーバ  samba クライアント  sed  awk  Perl  印刷  バックアップ gtar  unifont  dc  ssh ごしにリモートのメールサーバを使う  ed  メーラー  fetchmail&procmail&nomail&mutt  busybox  時計合わせ  w3m  QCop MySQL apache nmap bladeenc CVS
Zaurus から使う ハードウェア 無線アクセスポイント  LAN ハードディスク  LAN ケーブル  プリンタ  SmartMedia etc. を CF に変換  Zaurus SL-C760

このページは

喫茶店で、Emacs を使って、テキストを入力したいというのが、長らく私の願いであった。このたび(というか、だいぶ前になるか)、SHARP から Linux を OS (というか、カーネル)として採用した Zaurus(通称「りなざう」)(http://ezaurus.com/lineup/sl/index.html#slc760/750)が発売されたので、SL-C750 というのを買ってみたのである(http://www.sharp.co.jp/products/slc750/index.html)。しかし、Emacs を使うのには、若干の作業が必要である。手当たり次第に Web で検索をかけて、くわしい人々が公開している内容を見、自分に都合のいいところをメモしておいたのが、この頁である。だから、周知のことが書いてあるのだ。ただし、私の勘違いで、ウソ書いてるかもしれない。(できる限り、パクってきた元の URL を記しておいた)。

(追加)10ヵ月程風流の旅(定住・国外)に出ることになったので、この際、Zaurus だけで母艦のない生活を試みようと考えた(もしかして俺ってバカ? だって、ノートパソコン持ってないんだもん)。大量のデータをどうするか、印刷をどうするか、無線 LAN の設定は Zaurus だけでできるのか……

わしの目的

(最初の目的は) Zaurus SL-C750で、Emacs を使ってキーボードから日本語テキストを打ち入む。しかも、20 dot 以上の大きなフォントが使いたい。

(そして)母艦なし Zaurus 生活(無線 LAN して、外部ハードディスク使って、テキストを印刷する)。

(なんだか) Zaurus

ターミナル

私が使ってみたもののまとめ

パッケージ名等 日本語対応日本語入力窓でか文字半角カナ対策ゴミ対策入手場所
qpe-terminal-ja_1.5.0-3_arm.ipk × 付属CD
qpe-embeddedkonsole-ja_1.5.0-5_arm.ipk × × × http://sourceforge.jp/projects/zaurus-ja/
embeddedkonsole-c700.bin × http://www.geocities.co.jp/SiliconValley-Oakland/4550/linzau.html
opie-terminal-ja_1.0.2_arm.ipk × http://www.castanet.homeip.net/~tos/sl-c700.html
embeddedkonsole-ja.20030214.bin http://www.memn0ck.com/d/index.cgi?LinuxZaurus%2FDownload
qpe-embeddedkonsole-ja_1.6.0-wide3_arm.ipk×http://kimux.org/liza/#kon
qpe-embeddedkonsole-ja_1.6.0-jinput3_arm.ipk

付属 CD に、qpe-terminal-ja_1.5.0-3_arm.ipk というものあり。Emacs で日本語を使うとの画面があまりうまく表示できぬ。また、これだけでは、キーボードからの日本語を入力がきぬ。フォントを大きくできるのはよろしい。

http://sourceforge.jp/projects/zaurus-ja/ に、qpe-embeddedkonsole-ja_1.5.0-5_arm.ipk というのがあり、これなら Emacs で日本語がうまく表示される。しかし、これだけでは、キーボードからの日本語を入力ができぬ。フォントを大きくできるのはよろしい。いわゆる半角カナというやつを入力してしまうと、おかしくなるようだ。特に、 Fn+L や、Fn+u で鈎括弧を入力すると、半角カナらしきやつが入力されてしまって、妙なことになることが多いので注意。なお、Anthy で日本語入力をするなどすると、画面に線状のゴミが残る。terminal 切りかえのタブがあって、画面がそれだけ狭くなっている。

http://www.geocities.co.jp/SiliconValley-Oakland/4550/linzau.html の「古いもの」というところに、embeddedkonsole-c700.bin というやつがあった。これは、/home/QtPalmtop/bin/ 中の embeddedkonsole 等と入れ換えて使うのである。入力用の窓があるので、これだけでキーボードから日本語が入力できる。しかし、フォントの大きさが、最大 16 ドットなので、私には小さ過ぎる。

http://www.castanet.homeip.net/~tos/sl-c700.html にある、opie-terminal-ja_1.0.2_arm.ipk というのを使っている人が多いようである。これだけでキーボードから日本語が入力できる。日本語入力窓が大きい。しかし、いかんせん、フォントの大きさが、最大 16 ドットなので、私には小さ過ぎる。半角カナのたたりがないらしい。ゴミ問題も解決されているみたいだ。

http://www.memn0ck.com/d/index.cgi?LinuxZaurus%2FDownload に、embeddedkonsole-ja.20030214.bin というのがあって、これは日本語が 36 dot まで使えて、もともと Zaurus についてくる入力方法で入力できる。また、半角カナのたたりもないらしい。ゴミ問題も解決されているみたいだ。ちなみに、入力用の窓で一覧できるのは日本字で 11 文字まで。embeddedkonsole-ja_1.5.0-5_arm.ipk に比べて、terminal 切りかえのタブがないぶん、広く使える。Fn + 1 で、ターミナルを切り替える。Fn + 2 で、ターミナルのバーを消す/現す。Fn + 5 で、新しいターミナルを作る。これは本体だけなので、qpe-embeddedkonsole-ja_1.5.0-5_arm.ipk をインストールした後に、/home/QtPalmtop/bin 中の embeddedkonsole-ja と入れかえて使うとよい。

http://kimux.org/liza/#kon に、qpe-embeddedkonsole-ja_1.6.0-wide3_arm.ipk 「ワイド版パッケージ(日本語入力欄なし)」は使ったことがない。

qpe-embeddedkonsole-ja_1.6.0-jinput3_arm.ipk「日本語入力欄付きワイド版パッケージ」は、なかなかよい。決定版と言えるか。Fn+q で文字のサイズとカラー、それにコーディング(JIS,SJIS,EUC,UTF8)を変更でき、Fn+1 でウィンドウ(セッション)切り換え、Fn+5 で新しいウィンドウ(セッション)を作れる。Fn+2 で、上っちょにあるバーを消す。Fn+a で、クリップボードからペーストできる。クリップボードへのコピーは、スタイラスで選択だそうだが、Shift キーを押してからやると、うまくいく。また、なんと、Shift+上下キーで、画面をスクロールさせることができる。こいつぁ便利。ところで、前の版と違って独自のアイコンを持っているけど、これがタコ(生物のオクトパスのことなり)。前の版が時々突然成仏してたけど(再現性がないので、あまり自信を持って言えない)、この版では治ってるといいなー。

シェル

terminal を立ち上げると、bash が使われているが、su したりリモートログインしたりすると ash になってしまう。で、補完が使えん。/bin/sh は /bin/ash へのリンクになっていて、これが標準のシェルである。bash と打ってやると、bash が使える(当たり前か)。/etc/passwd を書き換えて、bash にしておいてもいいが、メモリ食うか。

一定時間操作をしないと、サスペンドになるが、復帰後、ターミナルで動いていた Emacs の挙動がおかしくなる。これは、シェルのせいらしい。標準でついてくる bash を置き換える手もあるが、そこまでしなくても、set +m と打ってジョブコントロールをやめておくと大丈夫。この項、http://emmie.koka-in.org/~kensyu/zaurus/diary/20030115.html 参考。

因みに、set +m は、.bashrc にそのまま書いておいても意味がない。サブシェルで実行されてしまうからである。.bashrc の中に書くなら、

function emacs () { arg=$*; set +m; /home/QtPalmtop/bin/emacs $arg; } 

としておけば、当座の用は足りそうである。もっとも、これでは emacs 以外には効かないし、何か恰好が悪い。抜本的な方法はないものか。(なお、{ と } は、それぞれ、Fn Shift , と、Fn Shift . で入力可能)。

そもそも、Qt レベルでサスペンドをやめてしまうという手もあるか。 http://www.geocities.co.jp/SiliconValley-Oakland/4550/memo.txt に、

qcop QPE/System 'setScreenSaverMode(int)' 0

というのが載っていた。「3 以上で再開」とか。未だ試してないけど。

Emacs

http://sourceforge.jp/projects/zaurus-ja/ に、
emacs21-bin_21.2.1-20021126b_arm.ipk
emacs21-leim1_21.2.1-20021126_arm.ipk
emacs21-leim2_21.2.1-20021126_arm.ipk
emacs21-lisp1_21.2.1-20021126_arm.ipk
emacs21-lisp2_21.2.1-20021126_arm.ipk
emacs21-lisp3_21.2.1-20021126_arm.ipk
というのがあるので、これらをインストールする。

このまんまだと、日本語が使えないから、.emacs に、

 ;;
 ;; .emacs for emacs21 / SL-C700
 ;;
 ;; Japanese Setting
 (set-buffer-file-coding-system 'euc-jp-unix)
 (set-terminal-coding-system 'euc-japan)
 (set-language-environment "Japanese")
 (set-keyboard-coding-system 'euc-jp)
  ;; Menu ==> Raise menu in tty
 (global-set-key [f11]       'tmm-menubar)
  ;; Sensible of pen tapping
 (xterm-mouse-mode 1)

とか書いておく。これは、http://linucha.s25.xrea.com:8080/pukiwiki.php から引用。

http://www.icome.gr.jp/~abura/zaurus.html によると、シェルで export TERM=xterm-new して、Emacs で、(global-font-lock-mode t) すると、Emacs がカラーになるんだって。なんでなのかは、ぼくわかんない。でも、やってみたら、なったよ。

なお、qpe-embeddedkonsole-ja_1.5.0-5_arm.ipk でインストールされるターミナルで Emacs を動かした時は、vertical-motion など画面上の位置に依存する関数は使えなかったようだが、embeddedkonsole-ja.20030214.bin では、これができるようになったようだ。例えば、見掛け上の一行上に移動する関数など自作した lisp 関数が使えることになった。これは、自然言語を書く時には、とても便利なことだ。

また、Emacs は重いからということをよく聞くけど、Zaurus SL-C750 では、全く遅いとは感じなかった。もっとも、重いというのが、ディスクスペースのことを言っているのなら、話は別か。

日本語入力方法

Emacs でインライン入力がしたいので、日本語入力を別途手当てする。http://sourceforge.jp/projects/zaurus-ja/ から、 anthy_3500c-1_arm.ipk をもってきてインストール。

imkit-anthy_0.3.5-1_arm.ipk をもってきて(これには、libstdc++2.10-glibc2.2_2.95.4-0.010407-fam1_arm.ipk が必要。これは、ftp://ftp.handhelds.org/pub/linux/dists/familiar/feeds/unstable/packages/armv4l/ にある。ホームページはhttp://handhelds.org)、インストールすると、入力メニューに Anthy が加わって、どのアプリケーションからでも使えるが、Emacs からだけ使うのには不要のことなり。ちなみに、次のようにして使うことができる。

Ctrl + x  j  ひらがな入力モード
Ctrl + x  q  カタカナ入力モード
Ctrl + x  l  半角英数入力モード
Ctrl + x  L  全角英数入力モード
(http://zaurus-ja.sourceforge.jp/imkit/README.txt.ja から引用)

Emacs から Anthy を使う

http://sourceforge.jp/projects/anthy/ から、 anthy-4313.tar.gz というのを持ってきて包をほどくと、その中の src-util というディレクトリに、

src-util/anthy-conf.el
src-util/anthy-isearch.el
src-util/leim-list.el
src-util/anthy-dic.el
src-util/anthy.el

というのがある。これらを、/opt/QtPalmtop/share/emacs/site-lisp に入れる。しかる後に、(load-library "anthy") をロードする。 .emacs に書くなどしておくとよろしい。なお、Anthy 起動のキーバインディングが、C-\ というのが使えないので、これを (global-set-key "\M-p" 'anthy-mode) などとして、別のキーにバインドしてやる。これで、インライン変換ができるようになる。

これは、http://www.icome.gr.jp/~abura/zaurus.html を参考にした。

Emacs からの Anthy の使い方は、上の tar をほどくと doc というディレクトリがあり、その中の ELISP というファイルに、

  入力モードへの移行
   +C-\ anthy-modeのon-off
  入力モード
   +/ 英数モードとの一時的なトグル
    `/'そのものを入力したい場合は`/'を2回打ってください
   +l 英数モードへの変更(プリエディットの無い状態で有効)
   +C-j 日本語モードへの変更
   +q ひらがなカタカナのトグル(プリエディットの無い状態で有効)
  編集モード
   +C-i 文節の短縮
   +C-o 文節の拡大
   +C-f 右文節
   +C-b 左文節
   +C-n, space 次候補
   +C-p 前候補
   +C-j 確定
   +return 確定

とか書いてある。この + というのは、打たないでよろしい。Cというのは、コントロールキーのことである。つけ加えておくと、Ctrl+Shirt+l で、いわゆる全角英字が打てるモードになる。これらは、skk のキーバインディングに似ているようじゃな。

anthy を使って初めて漢字変換をすると、ホームディレクトリに、.anthy というディレクトリができ、その中に、last-record2_default というファイルができる。anthy-add-word-interactive で単語を登録すると、新しい単語がこのファイルに加えられる。しかし、登録した単語は次に anthy が起動する時まで、使うことができないみたい。それから、add-word-interactive で登録できるのは、一般名詞だけのように思える。そいから、anthy-dic-tool というのを使うと、一気にたくさん登録できたりする。

キーバインディング

Emacs を使う時に、Zaurus に Ctl キーがないのが問題になる。(Esc は Cancel キーがその役割を果たしてくれる)。

~/Settings/qpe.conf を手で編集する。(http://www.castanet.homeip.net/~tos/sl-c700.html を参考にした)。~/Settings/qpe.conf を編集する。

Left2nd = Applications/addressbook 

とあるのを、

Left2nd = @1021

にして、再起動すると、Address ボタンが、Ctrl になる。ただし、これをやった後、標準メニューの「設定」を使って変更を加えると、この設定が駄目になってしまう。

因みに、この、Ctrl が @1021 というのは、http://doc.trolltech.com/3.0/qnamespace-h.html から調べたそうである。

もっと徹底的にやるには、http://yakty.s31.xrea.com/linuzau/ から、keyhelper_1.0.6-1_arm.ipk をとってきてインストール。同ページに keyhelper_ctrl.xml などの見本の設定があるので、これを参考に keyhelper.html という設定ファイルを書いて、/home/zaurus/Settings/ に入れ、ターミナルから khctl reload と打つ。色々なキーカスタマイズができるらしい。http://www.yo.rim.or.jp/~mono93/mobile/ に、親切な解説あり。設定ファイルなしで、keyhelper をインストールしただけでも、Shift + HOME でタスクが切り替えられるようになる。

キーリピート

Zaurus SL-C750 のキーリピートは、大変遅い。kbdrate とかもないし。すなおに前述の KeyHelper を使うのが順当なんだろうなあ。/home/zaurus/Settings/keyhelper.xml に以下を書いて、ターミナルから khctl reload と打って設定を読み込むと、リピート開始までの待ち時間を300ミリ秒、リピート間隔を20ミリ秒に設定できる。

<?xml version="1.0"?>
<keyhelper>
<repeater>
<repeat delay="300" period="20" mode="1"/>
</repeater>
</keyhelper>

シフトをトグル化

「shift キーを押しながら」、を、「押してから」、に変えるには、やはり keyhelper を使うとよろしい。

<modifiers>
<define key="Shift" type="Shift" toggle="True"/>
</modifiers>

というのを、キーリピートの項で書いた、<keyhelper></keyhelper>の中の要素として、<repeater></repeater>と同じ階層に加えてやる。

ispell

有名なスペルチェッカー。どうも ipk にしている人が見つからないので、仕方がないから、自分で ipk 作った。terminal や emacs から使えるです。emacs interface は、上で紹介した emacs にはじめから入っているです。私が意図せずにアホなものを書いていると、大変なことになるっす。そんな時でも、私は知らんぷりをするっす。自己責任ってやつっす。こう言っておどかしておくことが、まあお決まりっす。作成に当たっては、http://www2.wbs.ne.jp/~pdev/zaurus/selfdev.html とか http://zaurus-ja.sourceforge.jp/ipkg.html とか参考にしたです。

ispell 本体 http://fmg-www.cs.ucla.edu/geoff/ispell.html で配られている ispell の source から、http://www.killefiz.de/zaurus/showdetail.php?app=293 で配られている dev_img-1.3 を使って、セルフで(つまり、Zaurus 上で)make ispell とかやって作った ispell を、ftp://lorien.handhelds.org/pub/linux/feeds/demo/ で配られている ipkg-tools.tgz に含まれる ipkg-build によってパッケージングしたものであります。make は Zaurus 上で、ipk-build は VineLinux 2.5 CR 上でやった。

ispell_3.2.06-1_arm.ipk

これは本体だけだから、辞書がないと使えないっす。英語と米語の辞書を ipk で用意してみたっす(↓)。

(上記emacsで日本語英語混じりの文に ispell-buffer をやると、エラー出ることあり。コンソールからファイルを指定してやるとこの問題が起きない)

ispell 用の辞書(英語・米語) http://wordlist.sourceforge.net/ から READMEというライセンスのもとに配られている british.med+ と american.med+ と english.aff から、http://fmg-www.cs.ucla.edu/geoff/ispell.html からたどった ftp://ftp.cs.ucla.edu/pub/ispell-3.1 で配られている ispell-3.1.20.tar.gz を使って make buildhash とやって作った buildhash というプログラムによって作った british.hash を、ftp://lorien.handhelds.org/pub/linux/feeds/demo/ で配られている ipkg-tools.tgz に含まれる ipkg-build によってパッケージングしたものであります。作業は VineLinux 2.5 CR 上でやった。

英語版と米語版の ipk は、どちらかしかインストールできない。、インストールは、SD や CF にも可。

英語版 ispell-british-hash_0-1_arm.ipk
米語版 ispell-american-hash_0-1_arm.ipk

flyspell-mode について 上で書いた emacs で、ispell-buffer は english.hash がデフォルトだが、flyspell-mode は何故か american.hash がデフォルトだ。上の hash をインストールする ipk が、english.hash という名前で british.hash も american.hash もインストールする(なんでこんなことにしたかというと、ipk のインアンストール時に実行されるべき、スクリプトが、インストール完了時に実行されてしまうので、インストール時実行のスクリプトの中でリンクが自由に作れないという点にもともとの問題があるのだ――これは http://zaurus-ja.sourceforge.jp/ipkg-symlink.txt で知った)ので、たとえ ispell-american-hash_0-1_arm.ipk をインストールしておいても、flyspell-mode では辞書がないと文句を言われる。flyspell-mode を使うには、american_hash の ipk をインストールした場合も british_hash の ipk をインストールした場合も .emacs の中に、
(setq ispell-dictionary "english")
と書いておくとよろしい。

日本語中に英単語が先ざっているようなケースを Emacs の ispell-buffer にかけると、うまくいかなかったことがある。文字コードの問題らしい。

余談だが、この版の ispell は、コンソールから引数なしで起動すると、対話的に一つずつ単語を入力して使うことができる。たとえば british 辞書で、gozilla と入れてやると、how about: Gozilla, gorilla とか出てきたぜ。

tc2

セルフで make はあまり問題なくできたのだが……。make してから気がついてみると、t-code を使うのにキーの数が足りない。ひえー。外付けのキーボードを使えるようにするまで、お預けだ。以前は irKB101 という製品(http://www.jtt.ne.jp/products/keybord/wiresskeyborad.html)が売られていたが、この頃手に入らんようである。せっかくドライバを公開している人(http://www.wheel.gr.jp/~dai/sl-zaurus/ps2key.html)がいるのになあ。あとは、「トランジスタ技術」の世界なのか?(http://homepage1.nifty.com/trap/ とか)。

skk

では、ということで、skk を試してみることにするのだ。

http://hp.vector.co.jp/authors/VA026588/apel_10.4-1_arm.ipk
http://hp.vector.co.jp/authors/VA026588/ddskk_12.1.1-1_arm.ipk

ddskk_12.1.1-1_arm.ipk は SKK-JISYO.M つき。L 辞書を使いたいので、/home/QtPalmtop/share/emacs/21.1/etc 以下にインストールされた M 辞書を rm して、母艦から L 辞書を SD に cp 。ついでに、母艦の ~/.skk-jisyo も Zaurus の ~/ に cp。そして、.emacs に、

(load-library "skk")
(setq skk-large-jisyo "/mnt/card/SKK-JISYO.L")

とか書いておいた。skk-serv を使うという手もあるらしい。

(参考 http://sun.dhis.portside.net/~sakira/wiki/index.cgi?cmd=view;name=SL-C700%A4%C7SKK%A4%F2%BB%C8%A4%A6)

なお、SKK を使う時には、keyhelper を使って Shift をトグルにすると使いやすいように思われる。

Qt クリップボード (から|へ) 転送

http://yakty.s31.xrea.com/linuzau/ --> 「Misc Software(その他の雑多なソフトウェア等)」 --> qcf(Qtopia Clipboard Filter)

を、

http://www.rr.iij4u.or.jp/~nam/ の 「for qcf」というスクリプト

なんかから使うといいかも。これから試してみます。

そういや、ターミナルに qpe-embeddedkonsole-ja_1.6.0-jinput3_arm.ipk を使うと、ターミナルレベルで切り貼りはできる。あんまり長いものは切り貼りできないらしいが。

Emacs とは関係のない事ども

nkf

http://digit.que.ne.jp/visit/?2002%C7%AF12%B7%EE#i13 から、nkf_2.01-3_arm.ipk というのを持ってくる。これは、UTF-8 [を|に] 変換できるようである。一方、上に挙げた emacs では、UTF-8 は読むことができないようであった。メニューには出てくるのだけど、少くとも日本語については使えない。

fold

2 バイト文字が使える SL-Zaurus で動く fold をさがしていて気がついた。日本語に対して使いたいなら nkf の -f オプションを使えばいいんじゃん。nkf -f40 とかやって使う。-f と 数字の間にスペースを入れてはいかんよ。

wc

busybox にあるので、はじめから使える。

そうそう、余計なことかもしれないけど、例えば
expr `nkf -e -f40 my_story.txt | wc -l` / 20
(原稿用紙換算してる)なんてやる時の ` は、Fn Shift+@ で打てるのだよ。

armutils

http://www.geocities.co.jp/SiliconValley-Bay/1180/download.html から、armutils_1_arm.ipk.bin をとってくる。.bin を外してインストール。いろいろなコマンドとライブラリが入っている。http://www.geocities.co.jp/SiliconValley-Bay/1180/armutils-list.txt がそのリストだそうです。ちなみに、less などは日本語に対応していない。

telnet

telnet サーバははじめから入っている。/etc/inetd.conf を編集すると使えるようになる。

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

のコメントアウトを外す。(この上の行に ftp の設定があるが、ftp サーバは入っていないから、コメントアウトを外しても ftp サーバは使えるようにならない。ftp クライアントは、何もしないでも、ごく普通に使える。)http://www.areanine.gr.jp/~nyano/telnet.html とか参考にした。

ps ax | grep inetd で、pid を調べて、kill で HUP を送って、inetd を再起動するとか、あるいは、killall -HUP inetd でよし、と。

セキュリティー上の必要から /etc/hosts.deny と /etc/hosts.allow を作成。

因みにtelnet クライアントは、何もしなくてもごく普通に使える。

ftp

ftp クライアントはもともと入っているので、何もしないでも使える。

Emacs にも ftp クライアントの機能があり、リモート・ホスト上のファイルを ftp ごしに編集するのに便利(find-file で、ミニバッファに /kabipanotoko@upload.benki.toilet.co.jp: とか入れてやる)。

補完好きの人(オレだ)には http://www.geocities.co.jp/SiliconValley-Bay/1180/download.html に ncftp_3.1.5-1_arm.ipk がある。

ncftp -u username -p password servername

でよし、と。http://www.ncftp.com/ncftp/doc/ncftp.html がマニュアル。

おっと、http://www.killefiz.de/zaurus/showapps.php?cat=7 に ncftp2 というのがあったぞ ipk で。試してないけど。

おっと、lftp の ipk を発見したぞ。 lftp 2.6.7-1 ていうのが、http://www.killefiz.de/zaurus/showapps.php?cat=7 にあった。私は未だ使っていない。これもきっと補完な人向けであろう。

なお、ftp サーバは Zaurus には入っていない。

wget

使える。-r が再帰的ダウンロード、-np が親ディレクトリを遡らない、-p が画像なんども一緒にダウンロード、なんぞがよく使うオプション。

samba サーバ

samba サーバははじめから入っている。/etc/rc.d/init.d/samba start でサーバを起動できる。Liux から使うには、mount -t smbfs //192.168.1.9/home /mnt/tmp などとやる。Windows から使うには、/home/root/usr/lib/samba/smb.conf を編集。WORKGROUP となっているところを、Windows のほうに合わせておいてやる必要がありそうだ。http://www.ayati.com/KOMONO/a300smb.htm 参考。

samba クライアント

多くの Linux では、mount で -t sambafs とかやって、間接的に smbmount を使い、リモートのマシンにあるディレクトリをマウントする。しかし、Zaurus SL-C750 には smbmount が入っていないから、mount -t smbfs 云々とかやっても駄目。

で、http://www.zaurii.com/zfi/index.phtml?p=r&r=smbmount から smbmount_0.1_arm.ipk を持ってきてインストール。これで、Zaurus SL-C750 から
smbmount //192.168.1.4/homes /mnt/smb -o username=myname,password=mypasswd
とかやって、マウントできる。これは、mount を介さずに smbmount を使っている。Zaurus SL-C750 の mount コマンドは、例によって busybox へのリンクになっているのだが、-t smbfs はうまく使えなかった。(http://www.busybox.net/lists/busybox/2001-October/005049.html とか参考)。

こうして CF や SD 以外のディスクをマウントすると、少々問題が起こる。標準の datebook (カレンダーというやつ)なんぞを起動してしまったりすると、この smbmount したディスクも見に行ってしまうのである。こいつが、巨大なディスクだったりした日には、もう大変。いつまでも、ディスクが回り続ける。umount もできない。結局 # killall datebook とかやるはめになる。(アイコン長押しで出るメニューで「高速起動」がチェックされとると、起動した覚えがなくても、このディスク見回りが始まるぞい)。datebook のオプションには、SD とか CF とかを使う使わないというのがあるが、その他のディスクのことは考えていないらしい。どうしたらいいか? 今から考えるのである。(まあ、datebook については、置き換え版というのがあるようだけどね)。

おまけ 上のマウント用コマンドの例は、VineLinux2.5CR で、動いている samba サーバで試したものである。ちなみに、VineLinux2.5CR での samba サーバの設定は、root になって、smbadduser myname:myname (myname は、私のログイン名)とやって、/etc/rc.d/init.d/smb start しただけ。また、上の例では、Zaurus 側で、/192.168.1.4/homes とやっているが、この homes というのは、サーバ側での /etc/smb.conf の [homes] セクションを使うということ(なのだと思う)。

sed

http://emmie.koka-in.org/~kensyu/zaurus/ から、 sed-ja_3.02-3_arm.ipk を持ってくると日本語が使える。

この版の sed は \| や \+ で、Perl の | や + と同じように使えるじゃん。こいつァ便利。驚いた私は遅れてるのか?

awk

http://emmie.koka-in.org/~kensyu/zaurus/ から、 gawk-ja_3.0.4-4_arm.ipk を持ってくると、たぶん日本語が使える。

Perl

下のほうの「メーラー」--> 「Perl で自動化」を参照。

印刷

Zaurus からリモート・プリンタに出力できればいいと思った。lpr を ipk にしている人がいた。Post Script を手書きしたら、Post Script プリンタに出力できた。

http://www.wayga.org/ipkg/ というところから、lprng_3.8.15-2_arm.ipk を持ってきて、Zaurus 上で root になって ipkg install lprng_3.8.15-2_arm.ipk とかやってインストール。「設定」のところから gui でやると失敗するが、これはパーミッションの問題なり。root になって terminal からやればよろしい(# ipkg install lprng_3.8.15-2_arm.ipk ね。くわしくは、ipkg --help 2>&1 | more とかで見れ)。これで、lpr -Plp0@192.168.1.4 mydocument.ps とかやると、印刷できた(私の環境では)。

Zaurus にシリアルポートをつくる方法はいくつかあるらしい(UNIX USER Spt. 2003, SOFT BANK で紹介されていたのを見た)ので、直接プリンタにつなぐ道もたぶんあるのだろう。もしシリアルポートがなくても、この頃は一万円も出せば Linux から TCP/IPで使えるプリントサーバが買えるよね(使ったことないけど)。

Post script 以外のプリンタについては、フィルタが手に入ればなんとかなるのだろう。ちなみに、私が持っている Canon のインクジェット・プリンタ BJF360 は RedHat 用のフィルタが提供されているが、肝心の部分はソースの公開がないライブラリとなっているようだ。これではお手上げ。

gs を使ってできる場合もあるらしい。http://www.lares.dti.ne.jp/~ich/sl_printer.html なんかに紹介されてる。

母艦なし Zaurus 計画は、ここで大いに挫折するのであろうか。旅先に OKI Microline 803 PSII を持っていくわけにはいかないではないか。

いやいや、そうではない。Postscript プリンタがなくても、IrDA がある。テキスト書類なら、これで簡単に印刷じゃ。これについては、このページの下のほうで Canon の小さなプリンタを使ってみた報告をしておいたぜ。

バックアップ

標準でついているバックアップ・ツールを使って、コンパクトフラッシュ(CF)にバックアップしようとして、失敗することがあった。理由は定かでないが、あるいは、このツールがバックアップに必要な容量を予測し間違えているせいかもしれない。何の証拠もないけど。そこで、tar と gzip という、標準で入っている busybox 中のツールを使うことを考えた。下は、本体メモリの /home/ 以下のバックアップを CF にしている例。

# cd /mnt/cf
# tar cvO /home | gzip -v > backupfile.tar.gz

でバックアップ。ディスクスペースが足りないと、途中でエラーになります。わはは。

# cd /mnt/cf
# gzip -c -d backupfile.tar.gz | tar xvC /

で復元。

さて、Zaurus SL-C750 は、リンクが複雑にはられている。

/mnt -> /var/mnt
        /var -> /home/system/var

となっているから、/mnt の下に自分でマウントポイントを作って、そこに大きなストレージ・デバイスをマウントしたまま /home を tar などでバックアップしてしまうと、その大きなストレージ・デバイスをまるごとバックアップしてしまうことになる。

CF や、SD については、

/home/system/var/mnt/cf -> /usr/mnt.rom/cf
/home/system/var/mnt/card -> /usr/mnt.rom/card

というシンボリックリンクになっているから、/home を tar でまるごとバックアップしても、こいつらまでバックアップしてしまう心配はない。

だから、たとえば、/mnt/smb というマウントポイントを作って、LAN ハードディスクなんぞをマンウトしていたなら、バックアップは、

# cd /
# tar cvO --exclude home/system/var/mnt/smb home | gzip -v > /mnt/cf/backupfile.tar.gz
とかしないと、ひどい目にあうのだ(それに、このやり方は、CF SD 以外のマウントしたメディアにバックアップをとる時には当然必要になるわけだ)。なお、--exclude は相対パスで指定しないと効かない点に注意。

tar&gzip したバックアップファイルの特定のディレクトリの中身を知るには、たとえば
gzip -dc backupfile.tar.gz | tar t home/zaurus/
とかやればよくって、好きなファイルだけ戻してやるには
gzip -dc backupfile.tar.gz | tar xvC / home/zaurus/sukisuki.txt
なんてやってやればいわけじゃな。

(tar でバックアップすると、一部がこわれると、全部駄目になってしまうということを思い出した。ええと、そんな時は……)

gtar

標準の tar の正体は busybox だ。細かいオプションをつけたい向きは、
http://kimux.org/ukulele/2003-04.shtml
から gtar_1.13.25-1_arm.ipk をげっと。

これは gzip 形式で圧縮した tar ファイルも使えるなど便利。ま、私の場合はたいがいのことはパイプと標準の gzip でできるので贅沢品ですかナ。

tar の一般的まにあるは、http://www.gnu.org/software/tar/manual/tar.html

unifont

ホームページ(Web page のことです。為念)を Zaurus の NetFront で見ていて、£ とかが化けていると、とても不安である。日本語以外も表示できるようにしたい。

ftp.trolltech.com/qt/source から、qt-embedded-free-3.2.0b2.tar.gz を持ってきて展開すると、lib/fonts の中に unifont_160_50_t10.qpf というファイルがある(オリジナルの unifont については http://czyborra.com/unifont/HEADER.html を参照)。これを、Zaurus に持っていって、

# rm /home/QtPalmtop/lib/fonts/lcfont_160_50_t10.qpf
# ln -s unifont_160_50_t10.qpf /home/QtPalmtop/lib/fonts/lcfont_160_50_t10.qpf

とかやってやる。あるいは、再起動が必要かもしれない。

もともとあった lcfont_160_50_t10.qpf というのは、/usr/QtPalmtop.rom/lib/fonts/lcfont_160_50_t10.qpf へのシンボリックリンクだから、必要なら後でリンクをはり直せば復活させることができる。

これで、NetFront などで、£ が正しく表示される(16 dot 以外で表示したり、ゴシックが指定されていたりすると駄目なんだけど、まあ、我慢我慢)。ついでに、中国語も、かなりの確率でうまく表示される。標準でついてくる HancomWord などでも、16 dot なら中国語を使えるようだ。もっとも、インプットメソッドが別途必要か。

これは、SL Zaurus が英語版しかなかった頃に日本人がやっていた手らしい。(こん項 http://oze.oc.to/zaurus/sl5000d/jp/ を参考)

もっと自分で自由にやりたいという人は、例えば、「UNIX MAGAZINE」Sep. 2003, ASCII なんかにフォントの作り方がくわしくのっていた。

dc

dc は、いわゆる逆ポーランド式の計算機。Zaurus SL-C750 の dc は、busybox へのリンクになっており、これは、我々がよく知っているものとは違い、対話的に使うことができない。(一方、bc のほうは、我々がよく知っているのと同じ動きをするようだ。)ちょっとした計算は dc が便利なので(ほんとか? ひねくれてないか?)、Zaurus SL 用に「ふつう」のバイナリを作ってみた。

ftp://ftp.jaist.ac.jp/pub/os/linux/Vine/Vine-2.6/SRPMS/SRPMS/から、GPL2でライセンスされている bc-1.06-2vl1.src.rpm を取ってきて、VineLinux2.5CR 上に置き、http://more.sbc.co.jp/sl_j/tool/tools.htm#Linux から取ってきた gcc-cross-sa1100-2.95.2-0.i386.rpm と glibc-arm-2.2.2-0.i386.rpm と linux-headers-arm-sa1100-2.4.6-3.i386.rpm を使ってクロスコンパイル環境を作り、make した。

これがそれ。 dc

Zaurus のほうでは、dc を /bin/ とかに置くことができないので、/usr/bin/ にもともとある dc という名の /bin/busybox へのリンクと置き換えて使うとよろしい。

ssh ごしにリモートのメールサーバを使う

最近はどこの学校・会社でも ssh ごしでなければリモートでサーバにアクセスさせないようになってきた。SL-C750 には、ssh クライアントが入っていないので、これは自分で手当てしなければならぬ。

http://zaurus.showportal.net/downloads/ から openssh_1.2.3_arm.ipk というのを取ってきてインストール。あとは、たいがいの Linux のディストリビューションと変わりなかろう。つまり……

ターミナルから、たとえば、
ssh -L 1100:mould.kabipan-u.ac.jp:110 -L 2500:mould.kabipan-u.ac.jp:25 -l mouldman mould.kabipan-u.ac.jp
とかやって、相手側に ssh 接続をすると、ローカルの1100番ポートへの要求 が mould.kabipan-u.ac.jp の110 番ポートに、ローカルの2500番ポートへの要求が mould.kabipan-u.ac.jp の25番ポートに送られるようになる(ポートフォワーディング)。

あとは、Zaurus SL-C750 についてくる qtmail というメーラでは、「メール」→「アカウント」→「編集」で、
「送信」の「SMTPサーバ」に「localhost」、「SMTPポート番号」に 「2500」、
「受信」の「POP3サーバ」に「localhost」、「POP3 ポート番号」に「1100」
とか入れてやればよろしい。

ed

あると安心する:-)

ed

(ftp://ftp.jaist.ac.jp/pub/os/linux/Vine/Vine-2.6/SRPMS/SRPMS/ed-0.2-19vl1.src.rpm を母艦(VineLinux2.5CR)上で展開し、patch < ed-mkstemp.patch をやっておいてから、 export CC=/opt/Embedix/tools/bin/arm-linux-gcc; ./configure --host=arm-linux; make でお気楽クロスコンパイルしただけのもの。)

メーラー

qtmail の謎 標準でついてくるメーラー、qtmail に謎あり。無線LANにすると、qtmail は、Zaurus が DHCP でわり当てられた ip を持っていない限り、メールを受信しようとするとハングしてしまうのだ。有線LANにしているとそういうことはない。また、無線LANでも、qtmail を使わずに、telnet を使って pop3 をじか打ちすると使えるから、これは qtmail のせいだと思うのだけど、私の知恵が浅くて、よくわかん。これは、C760 でも同じであった。

手動 究極の選択は、メーラー(Mail User Agent)を使わないことである。pop3 も smtp も アプリケーション層より下は telnet と同じなので、
telnet pop.kabi.unko-u.ac.jp 110
とか、
telnet smtp.kabi.unko-u.ac.jp 25
とか手動でやる。

コマンドについては、http://www.atmarkit.co.jp/fnetwork/rensai/netpro05/netpro01.html (SMTP)とか、http://www.atmarkit.co.jp/fnetwork/rensai/netpro07/netpro01.html (POP3)とかに、わかりやすい解説を発見。

POP3 を少しメモしておく。

STATステータスを表示
LIST (メッセージ番号) メッセージ番号とサイズ
RETR メッセージ番号 ヘッダとボディを取得
TOP 0 メッセージ番号 ヘッダを取得
TOP n メッセージ番号 n > 1 で n 行のボディを取得
DELE メッセージ番号 メッセージの削除
RSET DELE の取消し
UIDL メッセージ番号 UIDL(Unique ID Listing)の取得
QUIT ログアウトする

日本語メールの本文は jis であるが、前に紹介した embeddedkonsole-ja.20030214.bin では、ターミナルの文字コードが GUI メニューから簡単に変えられるので、読むことができる。

Perl で自動化 http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2fPerl は、Zaurus で Perl を使うに当たって大変有用な情報と ipk がある。http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2f%a5%c0%a5%a6%a5%f3%a5%ed%a1%bc%a5%c9 にある perl_5.6.1-8.3-2_arm.ipk が本体である。lib-perl-libnet_1.16-1_arm.ipk をインストールすると、/usr/local/lib/site_perl/Net 以下に POP3.pm というのがインストールされる。

pod2text /usr/local/lib/site_perl/Net/POP3.pm | more

とかやって、使い方を見ることができる。(pod2text は、上で紹介した Perl 本体の ipk をインストールすると入っている。)

自分でスクリプトを書けば、スパム・メールの本文をダウンロードしないで削除とか、巨大添付ファイルの受信とかできるであろう。なんちって。暇人でない限り下の項目を見られい。

fetchmail&procmail&nomail&mutt

標準でついてくる qtmail への不満はいろいろ聞くが、私の場合メールが非テキストファイルで蓄積されるのが不便で、それにヘッダが読めないのが不安。

qtmail を使わないメール受信方法のうちで、代表的なものは fetchmail と procmail と mutt という組み合わせのようじゃ。fetchmail がリモートのメールサーバから持ってきたメールを procmail に渡して、ローカルファイルに貯め込むのじゃな。それを mutt で読み出す。

だが、設定を自分で考えようとすると、頭が混乱してきてなかなかうまくいかん。あきらめて http://kimux.org/liza/mutt.shtml に書いてあることをそのまんまやったら簡単。じつに親切なページでござった。

送信について、上記のページが教えているやり方は、mutt で書いて (エディタに下請け出すけど)、nomail で送信するというやつ。ただし、nomail を動かすのに Perl が要る。

一応レファレンスを収集しておくことにする。
fetchmail は http://www.catb.org/~esr/fetchmail/ の http://www.catb.org/~esr/fetchmail/fetchmail-man.html にオンラインマニュアルあり。
procmail のホームページは http://www.procmail.org/ だけど、マニュアルはそれだけでは置いてない。man と sample を html にしたのが http://www.stimpy.net/procmail/tutorial/ref/ にあった。
mutt は http://www.mutt.org/ に マニュアルもそこにある。html 形式のをダウンロードするなら、http://www.mutt.org/doc/manual.html.tar.gz 。日本語訳している人がいて、http://ha4.seikyou.ne.jp/home/Kohtaro.Hitomi/mutt で、このバージョン用には manual_ja-1.4i-1.tar.gz かな。
nomail は http://www.ku3g.org/negi/nomail/ で、ドキュメントもそこにあり。

以下、こうして設定された Mutt の操作についてだらだらしたメモ。

メールはメールボックスに入れて管理する。第一のメールボックスは典型的には /var/mail/zaurus という受信用スプールファイルであり(ひとつのファイルであっても複数のメールを納めるからボックスと呼ぶことができる)、mutt はもともとここに新しいメールが配信されることを期待しているらしい。mutt をオプションなしで起動すると、これを読みに行く。しかし、このファイルは我々の環境では使われない (と思う)。

第二のメールボックスは、~/Maildir/mbox/ というディレクトリである。このディレクトリの下には new, cur, tmp というみっつのディレクトリがあるが、あくまでも mbox というディレクトリがひとつのメールボックスであり、その内部構造は問題にされない。第一のメールボックスが典型的にはただのファイルであったのに比べて、こちらは複数の階層をもったディレクトリである。しかし、どちらもメールボックスであることにかわりはない。この点にしばしばユーザは混乱させられるように思われる。とまれ、われわれの設定では、procmail はここにに新着メールを配達する。

カレント・メールボックスの変更は c でできる。その上で ? を押すと候補メールボックス名が列挙される。-y オプションをつけて mutt を起動すると、はじめから mbox が選択されている。

第三のメールボックスは、~/Maildir/outbox というディレクトリで、第四のメールボックスは ~/Maildir/postponed というディレクトリである、それぞれ、送信用、下書き用である。

メールボックスを新しく作成するには、移動コマンド s を使って未だ存在しないメールボックスにメールの移動を試みればよい。マニュアルでは、s はメッセージのセーブするコマンドと書かれているが、この説明はわれわれの環境においては、わかりにくい。なお、新規メールボックスは ~/Maildir/ 以下に作成される。(~/Maildir/ 以下に手動で mkdir しておけば、そのディレクトリ以下にメールボックスを作成することもできる。)

メールの削除は d で、その結果当該メールに D という表示がつく。まぎらわしいのは、s で移動をするときも D が表示されるということ。当該メールボックスからは削除されるという意味らしい。N は未読を示す。

カレント・メールボックスを離れるときに実際に削除や移動が実行されるが、$ コマンドを使えばカレント・メールボックスにとどまったまま同じ結果を得ることができる。

メッセージの作成は m。~/.mutt/muttrc 中で設定しといたエディタが勝手に立ち上がるので、メッセージを書いて保存。y で送信(といっても送信用スプールに送るだけだけどね) e で再編集。もし ispellがインストールされていれば、i でスペルチェックができるぞい。

送信メールにファイルを添付するには、a。受信メールの添付書類を見たり保存したりするのは v。

一般的に、Control+g でプロンプトを出してきたコマンドのキャンセルができることが多いし、q で前の画面に戻れることが多い。

busybox

whereis が使えないんで不便だと思っていたら、which が使えたのね。というようなことがよくある。一度 busybox のドキュメントを読んでおいたほうがいいみたいだ。(http://www.busybox.net/downloads/BusyBox.html)。もっとも、ここに書いてある全てのコマンドが Zaurus の busybox で使えるわけではないけど。

時計合わせ

http://www.geocities.co.jp/SiliconValley-Bay/1180/download.html から、ntpdate_ntp-4.1.1b-z-4_arm.ipk を取ってきた。Zaurus は、ふつうのやり方ではハードウェア・クロックが設定できなが、こいつはこの問題を解決する仕組みがついているそうである(http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FSL%2DA300%A4%C8KISS%231#i9 とかに情報)。

# ntpdate clock.nc.fukuoka-u.ac.jp

で、

18 Sep 12:13:38 ntpdate[1399]: adjust time server 133.100.9.2 offset -0.014821 sec

とか出れば問題なし。そうでなければ、以下の点をチェック。(もちろん、福岡大のサーバがとまっているだけということもあるから http://www.eecis.udel.edu/~mills/ntp/servers.html とか見て別のサーバ試してもいいんだけど、それよりありそうなことは……)。

まず、ntp のプロトコルは、発信・受信ともに、UDP 123 番ポートを使う(きちんと調べていないから間違っているかもしれない。TCP も使うと言っている人もいたような。http://www.ntp.org/ あたりを読むといいのではなかろか)。しかし、多くのファイアーウォール内からは、特権ポートからは特権ポートへの通信ができないようになっている。こうした時は、ntpdate に、-u オプションをつけてやれば、プライベート・ポートから発信するようになる。なお、-d でデバッグする時は、常にプライベート・ポートが使われるので、-d では成功するが -d をつけないと失敗するような場合には、-u をつけてやればよいことが多いわけである。ntp サーバを運用しないなら、123 番を開けておくより安全だろう。ちなみに、-d をつけると、時計は変更されない。(http://www.eecis.udel.edu/~mills/ntp/html/ntpdate.html 参考)

ネットワークに接続したした時に自動で時刻を合わせるには。/etc/pcmcia/network を編集する(http://park11.wakwak.com/~nkon/homepc/zaurus/config/ntpdate.html 参考)。(注・PPP の場合は後述)。このファイルには

case "$ACTION" in
'start')
    略
    ;;
'stop')
    略
    ;;
    以下略

というところがあるので、start の最後のところの ;; だけからなる行の前に以下のような一行を挿入する。

/usr/bin/ntpdate -u clock.nc.fukuoka-u.ac.jp > /dev/null 2>&1

-u は必要に応じてつければよろしい。

ただし、接続したネットワークを通って目的の NTP サーバに到達できないような場合(インターネットにつながっていないLANなど)、NTPDATE が諦めるまで、ながながと接続待ちになっちまう。

また、PPP でダイヤルアップしたときは、これでは起動せん。この場合、たとえば、home/etc/ppp/ip-up の最後に上と同じ一行を書いておく。 (http://www.geocities.co.jp/SiliconValley-Bay/1180/download.html には、この場所のほかに home/etc/pcmcia/network.opts に置くという示唆もあった)

ええと、たしか Zaurus にも、GUI で時計合わせをやってくれるアプリケーションもあったような気がする(それを早く言えって?)。

w3m

何をインストールしたらいいのかよくわからんの声。シンボリックリンクで乗り切るのだ。

# ipkg install libgc6_6.1alpha5-k1_arm.ipk
# ipkg install libssl_0.9.7b-1_armv4l.ipk
# ipkg install libcrypto_0.9.7b-1_armv4l.ipk
# ln -s /usr/lib/libssl.so.0.9.7 /usr/lib/libssl.so.0.9.6
# ln -s /usr/lib/libcrypto.so.0.9.7 /usr/lib/libcrypto.so.0.9.6
# ipkg install w3m_0.4-m17n-k4_arm.ipk

参照ページ http://emmie.koka-in.org/~kensyu/zaurus/w3m.html
w3m_0.4.1-m17n-gcc3-k4_arm.ipk と libgc6_6.1alpha5-gcc3-k1_arm.ipk あり。

参照ページ http://oxy.lcs.mit.edu/feeds/oxygen-v0.7.1/base/
libssl_0.9.7b-1_armv4l.ipk と libcrypto_0.9.7b-1_armv4l.ipk あり

QCop

http://www.malor.net/Qt/qtopia-free-1.5.0/en/qtopia/qcop.html

「QCop messages allow applications to communicate with each other.」だって。/home/QtPalmtop/bin/qcop というのが最初から入っていて、これが使えるらしい。なんか楽しそう。これから読みます。

http://www.memn0ck.com/d/?LinuxZaurus%2fQCop にその他の情報も。

MySQL

http://www.caulfei.demon.co.uk/zaurus/ から mysql_3.22.32-2_arm.ipk を持ってくる。このページにフルパケージ版というのもあり、ワシはこっちをインストールしてみた。普通のとどこがどう違うか私は調べていない (コラコラ)。とにかく、これら 2 つは ipk ファイルの名前が同じだから注意じゃ。

インストール完了後、# chown -R daemon /var/lib/mysql とかやって、ツリーごと所有者を daemon (渡哲也とは関係ない) に変更。

/usr/bin/mysqlstart という起動用シェルスクリプトがついてくるので、これを使うとサーバ mysqld の起動がとっても楽。プロセスは daemon の所有で走っていることが、ps U daemon で確認できるじゃろ。もちろん、クライアントもインストールされとるぞ。mysql という名前じゃ。

http://www.mysql.com/documentation/index.html に MySQL のマニュアルがあるぞい。

ちなみに、この版の MySQL は、ビューが使えない、select 文中の where 句の中でサブクエリーが使えない、ユーザ変数が使えないという、ちょっと不便なやつだ。マニュアルの サブクエリーについては、6.4.2.11 Rewriting Subqueries for Earlier MySQL Versions に書き直しのヒントあり。なお、これらの制限は Ver.4 で部分的に、Ver.5 で完全に撤廃されると説明に書いてあった。

apache

http://www.choup.net/v2/index.php?id=pda というページに、素Apache と、PHP つき Apache の ipk あり。

MySQL のためのインターフェイスとして使おうという魂胆なので、PHP つきの http://www.choup.net/v2/dw.php?file=apache-1.3.27-php-4.2.3_0.1_arm.ipk をダウンロード。これは ipk のままで、2.6Mもあって、ディスクスペース不足の折、インストールできず。

古い版の apache-1.3.24-php-4.2_0.4_arm.ipk をインストールせんとす。インストールはできたが、libdb.so.2 がないといって怒られる。/home/QtPalmtop/lib/ libdb.so.1.0.0 -> /usr/QtPalmtop.rom/lib/libdb.so.1.0.0 によると、2002年9月において、libdb.so.2 はできてないとあり、それ以後の情報も google からは取れず。(探し方悪い?)

仕方がないから、もうひとつ古い版 apache-1.3.19-php-4.0.5_0.1_arm.ipk をインストール。本体は /home/www/bin/httpd 基本的な設定ファイルは、/home/www/conf/httpd.conf にインストールされた。したがって、起動は

/home/www/bin/httpd -f /home/www/conf/httpd.conf

てな具合でよかろ。ストップや再起動は、/home/www/logs/httpd.pid に書き込まれた pid(プロセスID)を cat で調べてこれに kill でシグナルを送るざんす。# kill -TERM 1234 (停止)とか # kill -HUP 1234 (再起動)とか。

/home/www/htdocs というのがデフォルトのドキュメントルートだ。最初はカラだ。

Netfront で http://localhost でやってみる。LAN でも Internet でも、なにか外につないでいない限り、Netfront は「ネットワークに接続しますか」とか言ってくる。(w3m はそんなこと言わない)

で、http://park11.wakwak.com/~nkon/homepc/zaurus/config/opie_sh_1.html を見たら、「inux としては、ネットワークは生きているけど、 Qtopia として落ちている」とあり、シェルから qcop QPE/Network 'up()' とやればいいそうだ、と書いてあった。やってみたらうまくいった。

ところで PHP ですが、phpinfo() の結果は、こんな具合でヤンス。

PHP を使っての MySQL への接続も成功したでヤンス。

HTML 4.01 のドキュメントは、http://www.w3.org/TR/1999/REC-html401-19991224/ なんかか。(余計なお世話か)

apache のドキュメントは、http://httpd.apache.org/docs-project/

PHP のドキュメントは http://www.php.net/docs.php

nmap

ppp で Internet につないだりするので、セキュリティが心配。自分の zaurus のポートスキャンくらいしてみよう思った。

http://ipkgfind.handhelds.org/details.phtml?package=nmap&official=&format= というところから、Version 3.10ALPHA9 from Familiar 0.7.2 base つーところをクリックして、nmap_3.10ALPHA9_arm.ipk をダウンロード&インストール。nmap localhost してみると、libstdc++-libc6.2-2.so.3 がないとか怒られる。

ためしに /usr/lib を見ると、 /usr/lib/libstdc++-libc6.1-2.so.3 -> libstdc++-3-libc6.1-2-2.10.0.so なんてリンクが張ってある。$ lipkg search /usr/lib/libstdc++-3-libc6.1-2-2.10.0.so で調べてみると、こいつらは、mysql のパッケージがインストールしたものじゃった。んで、ついつい、 # ln -s /usr/lib/libstdc++-3-libc6.1-2-2.10.0.so /usr/lib/libstdc++-libc6.2-2.so.3 なんてやってしまう。結果は、今のところ nmap は動いてる。でも、そのうちバチがあたるかも。

http://www.muffy.jp/sl/slc030216.htm という人は、同じ目的のために libstdc++2.10-glibc2.2_2.95.4-0.010407-fam1_arm.ipk をインストールしたと書いておられる。

ちなみに http://ipkgfind.handhelds.org/ で探してみるといろんなバージョンが出てきた。

ともかく nmap localhost をやってみると、予想しなかったものとして tcp の 111 番 (sunrpc) というのが開いておる。何が使っとるんじゃと考える。NFS は使われていないと思うんだが謎。ともかく /usr/sbin/rpc.portmap というのがクサイ。http://www.geocities.co.jp/SiliconValley-Bay/1180/tips2ch.html で、/etc/rc.d/rc5.d/S23portmap がこれを起動するスクリプトだと知る。無考えに、同スクリプトの exit 0 とだけ書いてある行のコメントを外して再起動。

bladeenc

Zaurus 標準の voicerec で録音した wav を mp3 にせむとす。

http://www.geocities.co.jp/SiliconValley-Bay/1180/ の 「もっと」から http://www.geocities.co.jp/SiliconValley-Bay/1180/pickup.html に入ると、bladeenc (http://bladeenc.mp3.no/ が www ページ) の実行形式 bladeenc.bin を発見。

voicerec の「オプション」-->「録音設定」から、「音質」を 32,000Hz か 44,100Hz か 48,000Hz に設定しておけば、blaeenc で mp3 化することができる (デフォルトは 8,000Hz だ)。ちなみに録音はモノラルでされる。ステレオのマイクを入れると(イヤホンのところに入れりゃいいんだよ)、左側マイクが使用されるぞい。入力レベルは音質によって調節したほうがいいかも。

20 分ほどの wav をエンコードしてみたら、10 時間以上かかった。nice なんか使って裏でのんびりやらせよう。

CVS

ftp などで母艦からファイルを持ってきて、母艦・Zaurus 双方で同じファイル編集していると、何が最新のファイルなのかわからなくなってしまう。そこで CVS の出番。

http://noir.s7.xrea.com/archives/000029.html から cvs-core_1.11.18-1_arm.ipk を持ってきてインストール(sd-card へのインストール可)。

母艦には当然ログインできるのだから、母艦にあるリポジトリを使う限り、わざわざ母艦で PSERVER を準備しなくてもよい。手っ取り早く SSH 経由で使ってしまえば、母艦側では(SSH サーバを起動させておくほかは)何もやらないで済む。

.bashrc に、

export CVS_RSH=ssh
export CVSROOT=:ext:login-name@hostname:/pass/to/repository

と書いておけば、自ホストにリポジトリがあるのと同じやうに、cvs checkout projectname で、チェックアウトできたりする。もし母艦側で zaurus というユーザを作っておくなら、login-name@ の部分は不要であり、あるいはこのほうが編集ログに Zaurus から変更された旨が記録されて好ましいかもしれぬ。

ところで、-m でメッセージをつけることをせずに commit しようとすると、vim がないと文句を言われる。あらかじめ、

# ln -s /usr/bin/vi /usr/bin/vim

しとくといいかも。

参考 http://www2.i-e-c.co.jp/ssh5.html

ハードウェア

私が興味を持っている点は、母艦がない孤立無援の状態で工場出荷時のままのハードウェアを設定できるかということ。(だから必ずしも Zaurus 固有の問題ではなくて Zaurus しかない時に特に痛感される Linux 使用時の問題だったりもする)。

無線アクセスポイント

メルコの WLA2-S11(http://buffalo.melcoinc.co.jp/products/catalog/item/w/wla2-s11/)を買った。11b のみ対応。http で設定できる。工場出荷時の設定では ip を DHCP で取得する。DHCP サーバがない時はどうなるのかは不明。Zaurus SL-C750 には dhcp サーバが入っていたので、/etc/dhcpd.conf に、

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.20 192.168.1.30;
  default-lease-time 600;
  max-lease-time 7200;
}

とかやって、# dhcpd やったら、dhcpd.leases がないとおこられたので、

touch /var/state/dhcp/dhcpd.lease

とかやって再度試みたら、無事動いた。

ここで、 WLA2-S11 をリセットしたら、192.168.1.20 をわり当てることができた。で、Zaurus 上の NetFront で、http://192.168.1.20 とやると、IE でなきゃだめだとか注意が出るけど、無視して続行すると、無事設定ができた。この時に WLA2-S11 の ip を固定にしておいた。

LAN ハードディスク

メルコの HD-80LAN (http://buffalo.melcoinc.co.jp/products/catalog/item/h/hd-lan)という NAS(Network Attatched Strage)を買ってきた。中で samba が動いているという話であった。これがあれば、いわゆる母艦なしでも、ストレージの容量に困ることはないのだ。

これは、(Windows からしか設定できないと書いてあるけど、一般に)http で設定ができる。HD-80LAN の添付 CD に、pdf 形式で入っているマニュアル(http://buffalo.melcoinc.co.jp/download/manual/h/hdlan.html にも公開されている)を読むと、工場出荷時設定では、「DHCP サーバがネットワーク内に無い場合」「IP アドレス:192.168.11.150」「ネットマスク:255.255.255.0」に「自動設定され」るとある。しかし、これは、http://buffalo.melcoinc.co.jp/qa/hd/b3270010.html から類推するに、192.168.11.200 からしか要求を受け付けないようである。

そこで、Zaurus の ip を一たん 192.168.11.200(マスクは 255.255.255.0 だよ)にしてから、HD-80LAN のリセットスイッチを押してやると、Zaurus 上の NetFront から http://192.168.11.150 で設定画面を出すことができた。

ちなみに、nmapしてみたら、

80/tcp     open        http                    
139/tcp    open        netbios-ssn             
548/tcp    open        afpovertcp              

ということでした。マウントして使うのには、smbmount を Zaurus に入れる必要があることは、上のほうに書いておいた通り。

LAN ケーブル

Ethernet の LAN では 10Base-Tという規格を使うことが多いが、果たしてこの規格の正体は何かというと、意外にわからない。Web で検索しても、一次資料はなかなか見つからないし、二次資料はまちまちなことが書いてある。

そもそも、10Base-T というのは、ケーブルの規格なのか、ケーブルの規格を含んだ Ethernet の規格なのか。あるいは、コネクタの規格はどう関係しているのか。さて、どうしてそんなことが気になったかというと……

すごく細い LAN 用ケーブルが売られている。RJ-45 のジャックには 8 つの電極があるが、結局われわれ(って誰だ?)が使っているのは 1,2,3,6 の 4 本だけらしい。そこで、1,2,3,6 だけしかつないでいないケーブルを作れば、相当細くなるということなのだ。これは、10Base-T をうたっていないが、使うのに問題はなかった。

以上のことを、「規格」という観点から正確に書こうとすると、どう書けるのか?

プリンタ

もちろん、母艦なしの状態で直接使うのだ。

Canon の PIXUS 50i(http://cweb.canon.jp/bj/lineup/50i/index.html)というプリンタを買ってきた。これは、IrDA(赤外線通信の規格)が使えるとうたっている小さなインクジェット・プリンタである(重さ約 1.8 Kg)。デザインがなんかなつかしい感じ(高度成長期の人が想像した「未来的」っていうか)がする。バッテリー駆動も可(オプション)。

イージーな道 GUI メニューを使って日本語テキスト・ファイルの印刷。Zaurus 側と、PIXUS 50i 側の赤外線ポートを近づけておく。Zaurus の標準のファイラ(つまり「ファイル」というタブを押すと出てくる画面)から、目的のテキスト・ファイル(Shift JIS + CR LFでないと駄目だと思う)のアイコンを押したままにして、出てきたメニューから、「赤外線通信」というのを選ぶと、送信が始まる。これだけで、印刷される。PIXUS 50i は、なななんと日本語のフォントを持っているのだ。

もちろん、これはただべたーっと印刷するだけであって、書式なんか指定できるはずもない。用紙のサイズは、A4 で、日本字で、50 字 62 行である。字の大きさは、10 ポイントくらい。英字は、プロポーショナルである。

同じような手順で jpeg 画像を印刷できる。すべての jpeg 画像が印刷できるわけではないかもしれないけど。

少し調べてみる /home/etc/rc.d/init.d/irda に IrDA を起動・停止させるスクリプトがある(http://www.linux.or.jp/JF/JFdocs/Infrared-HOWTO/infrared-howto-s-irda-pda.html 参考)。このスクリプトは irattach を起動させて、IrDA スタックを /dev/ttyS1 にバインドするものである。その結果、/dev/ircomm でがシリアル・デバイスであるかのように使えるようになる(http://users.linpro.no/janl/README.irattach 参考)。このプロトコルには、IrCOMM が使われる。IrComm というのは、シリアルポートなどをエミュレートするためのプロトコルで(http://www.irda.org/standards/pubs/ircomm10.pdf 参考)、IrDA(これは、プロトコルの集合の呼び名である)の、オプショナルなプロトコルと位置づけされている(http://www.irda.org/standards/standards.asp 参考)。

具体的には、

/home/etc/rc.d/init.d/irda start

で、IrDA が使えるようになって、

cat file.txt > /dev/ircomm

とかやると(file.txt は、ShiftJIS 改行 dos 形式)、PIXUS 50i は、日本語をはき出してくれる。

そして、

/home/etc/rc.d/init.d/irda stop

で、IrDA を止めることができる。

あとは、IrDA の問題ではなくて、プリンタの制御方式の問題なのだろう。たぶん。

では、一体このプリンタが、どうやって制御されているのかということになると、とんとわからない。どうも、携帯電話からのデータを印刷できるというところからみて、IrDA で ESC/P という規格のデータをもらうと印刷するんではないかと予測する。ちなみに、ESC/P というのはセイコーエプソン株式会社の登録商標なのだそうだ。ところが、肝心のエプソンの web ページから、この規格についての情報を見つけることができなかった。仕方がないから、手当たり次第に近そうなものを見つける。

そして、それらしき制御コードを書いてはプリンタに送ってみることにする。そのために、Emacs で 10 進とか 16 進とかでコードを入力する関数を作った。自分用だから、エラー処理は全くないぞ。

(defun insert-decimal (decimal)
  (interactive "Mdecimal : ")
 (insert (string (string-to-number decimal))))

(defun insert-hex (hex)
  (interactive "Mhex : ")
 (insert (string (read (concat "?\\x" hex)))))

で、今のところわかったことを、少しまとめておこう。([ESC] で 0x1b を、[FS] で 0x1c を表すことにする) 。制御コードは1バイト(8 ビット)のコードのならびで、引数を持つことも多い。(漢字コードの簡潔なる便覧 http://tohoho.wakusei.ne.jp/wwwkanji.htm)。

他は調べ中。縦書きできないかなあ。

http://www.lares.dti.ne.jp/~ich/sl_printer.html という人は、gs (Canon 用のフィルタを持ってる) を使えば Postscript ファイルが (usb または IrDa 経由で) 印刷できるんではないかと示唆しておられる。こりゃ gs 入れて実験しなきゃなりませんな。(ワタシは gs のフィルタをナメてましたハイ。ごめんなさい) そして、さらに LaTeX の世界に突入なのか??

PostScript プリンタがあるなら、このページ上のほうの「印刷」を見よう。

SmartMedia etc. を CF に変換

私のデジカメは、SmartMedia である。そこで、SmartMedia を CF に変換する PCM5 なる台湾製アダプタ(http://www.datafab.com/Product/Product.asp?ID=68)を 3,999 円で買ってきた。これで、SmartMedia, Secure Digital, MultiMedia, Memory Stick が使えるそうである。SmartMedia で試したら、うまく使えた。めでたし。めでたし。

Zaurus SL-C760

妻をだまして、SL-C760(http://www.sharp.co.jp/products/slc760/index.html)を買わせた。SL-C750 より厚っこくなっているが、これは電池が大きくなったせい。小さな電池用のフタもついてきたから、厚くていやだという人は、別売の小容量電池を買えば薄くできます。ぎゃくに、SL-750 のために、大容量電池を買うと、厚っこくするフタがついてくるんだぜ。

中身 SL-C750 とがどう違うのかは、めんどくさいから調べていない。で、カタログにのっていることしかわからない。

簡単に辞書が内蔵されているが、これは本当に簡単なものだ。辞書については、また別の機会に。


これは本当の自分だけのためのメモ(信用しないでマニュアルを見よう)

マニュアルを見ないで済むように、ここに「リセット」「フォーマット」の方法を書いておくことにしよう。間違ってるかもしれないから、信用してはいけないよ。

ソフト・リセット

  1. すべてのアプリを終了。電源を切る。
  2. 電池交換スイッチを「解除」側に。
  3. 5 秒待ってから、Fn と ホーム のキーを両方押しながら、電池交換スイッチをロックにする。
  4. 電源を入れる。

フォーマット:

  1. すべてのアプリを終了。
  2. AC アダプターを接続。充電ランプが点灯していることを確認。
  3. 本体裏側の電池交換スイッチを「解除」に切り替える。
  4. 5 秒待ってから、Fn と「ホーム」キーの両方を押しながら、電池交換スイッチを「ロック」にする。
  5. 充電ランプが点灯していることを確認して、背面の OK ボタン(またはキーボードの OK キー)を押しながら、「電源ボタン」を押す。
  6. メンテナンス・メニューがあらわれる。
  7. フォーマットを選択する。
――目次――
HOME雑文写真壁紙馬鹿読書語学
│├英語
│└日本語電算地理
│└白地図リンクブログTwitter