CoLinuxで使うP8210
★CoLinuxをインストール
ふと思いついてWindowsXP Tablet
EditionにCoLinuxをインストールしてみた。仕事ではLinuxばっかり使っているが、帰ってからホームページ書くときはWindows使っ
ていることが多い。で、Windowsが起動した状態からLinuxも使えたらそれなりに便利かも、と思って。
そもそも、せっかくのタブレットPCなのに、Linuxばっか使っていると、せっかくのペンの使い道が無さ過ぎるし。
このCoLinuxをインストールすると、Windowsの中の1プログラムとしてLinuxカーネルが走るのである。なんとも恐ろしい時代になったも
のだ。
ERROR
STROMさんのページなどを参考に、SOURCEFORGE
のここからCoLinuxの0.6.2と、debianのディスクイメージをダウンロードしてきた。ネットワークはTAPドライバを利用し、ブ
リッジ接続することにした。
TAPドライバをインストールすると、WindowsXPのコンパネのネットワークのところに「ローカルネットワーク接続2」が現われるが、名前の変更
使って「TAP」にしておく(後でdefault.colinux.xmlの中で指定するので)。この「TAP」と、ほんものの「ローカルネットワーク接
続」をコントロールパネル上で選択した後右クリックでブリッジ接続にしておく。
こうしておいて、CoLinuxの方もしかるべく設定すれば、CoLinuxの動く機械がもう一個存在していて、ネットワークでつながれているかのごと
く振舞う。便利である。ただし、コンソールはあっ
てもこのままではXとかは走らない(VNC使うという手もあるが、以下ではcygwinを使ってXサーバをWindows側に用意した)
★coLinuxインストーラ
世の中、ありがたいものを公開してくれている方がいるものである。というのは、CoLinuxをインストールしたものの、インストールされ
るディストリ
ビューションがdebianだったもので、設定に四苦八苦していたのである。しかしありがたいことに、Vineやそのほかのディストリビューションをイン
ストールするためのファイルを公開してくれている方がいるのである。XMLinux
ページのCoLinuxインストーラのページがそれ。
ここでVine
3.1インストーラを手にいれてやってみました。いやぁすばらしい。使い慣れたVineになりましたよん。sambaも無事動いて、WindowsXPの
中で動いているCoLinuxのVineがsambaサーバになって、Linuxディレクトリを読み書きににいくというおかしな状況に。つーわけで、現在
のcoLinux起動用のXMLはこんな感じ。
<?xml
version="1.0" encoding="UTF-8"?>
<colinux>
<block_device index="0"
path="\DosDevices\C:\coLinux-Vine\root.ext3" enabled="true"/>
<block_device index="1"
path="\Device\Harddisk0\Partition6" enabled="true" /> ←ほんもののVineの/home
<block_device index="2"
path="\Device\Harddisk0\Partition5" enabled="true"
/> ←ほんもののVineの/usr
<block_device index="7"
path="\DosDevices\C:\coLinux-Vine\swap_device" enabled="true"/>
<bootparams>ro
root=/dev/cobd0</bootparams>
<image path="vmlinux"/>
<memory size="64"/>
<network index="0" name="TAP"
type="tap"/> ←ネットワークの設定。nameを
Windowsから設定したのと合わせる。
</colinux>
\Device\Harddisk0\Partition6というのは/dev/hda7であり、Vine
Linuxが/homeとして使っているパーティション。これをCoLinuxからは/dev/cobd1と見えるようにしてある。Partition5
の方はVineの/usrで、この二つをCoLinuxからもマウントできるようにしてある。
ほんもののVineの/はマウントしてないが、してもいいかもしれない。ちなみに/homeは読み書き可能にしているが、/usrは
readonlyでmount(ちょっと怖いからね)。
これで後はCoLinuxの上でsambaを走らせれば、Windows側からもVine
Linuxの/homeや/usr以下が読めるわけだ。
それにしても、こんな使い方をするんなら、メモリ256Mは少なすぎるな。512Mか1Gに増設しないと、ということで512Mに増設した。1Gのメモ
リは今んところ、信じら
れないぐらい高い。→ADTECの対応
メモリのページ(富士通純正だともっととんでもない値段)。
★Cygwinと
CoLinuxがWindowsXPの上
うれしがって貼り付けておこう。WindowsXPの元で走るCoLinuxの上でxdviやemacsが動いているところ。ちょうどこのページを編集
中のmozilla
composer(これはWindows版だ)が上に被さっている。Windows上ではATOK15が動いていて、Linux上ではATOK
for Linuxが動いていて、二つのタスクバーが同時に出ている(下にある方がATOK for
Linuxのやつ)。どっちも「話し言葉関西」モードになってたりするが(^_^;)。
XserverはCygwinが担当している。
何が嬉しいといって、スタートメニューにしろxdviのボタンにしろ、指で押せるということ。emacsに至っては、選択するためには「ペンでなぞる」
(指でもいいけど、わしの指は太すぎて1行ずれてしまうことがままある)だけでいいのである。
★マウス中ボタン
Windowsのコンパネのマウス設定で「中ボタンでスクロールする」のチェックがONになっていると、中ボタンがX内で使えなくなって
しまうので気をつけよう。
★Vineのxfsを使う
CoLinuxからcygwinのXサーバを使っていたわけであるが、フォントがちょっと足りない。
どうせVineがインストールされているわけだし、ということでVineでxfsを起動しておいて、cygwinからxfsを使うようにした。
まず、coLinux側の/etc/X11/fs/configの最後に
no_listen = tcp
というのがあって、このままだとtcpを聞いてくれないそうなので、この前に#をつけてコメントアウト。
やらなくてもいいのかもしれないが、/etc/rc.d/init.d/xfsの中の
daemon xfs -droppriv -daemon
の後ろに「-port
7100」を追加。んでもってCoLinuxを再起動。xfsだけ再起動でいいのかと思ったら、なぜかしないとだめだった。どうしてだろう???
あとはcygwin側で
xset +fp tcp/coLinux:7100
しておく(cygwinの/etc/hostsに、coLinuxのIPアドレスを記述しておくこと)。このあたりを自動化するには、cygwinの
/usr/X11R6/lib/xinit/xinitrcの最後を、
#
start some nice programs
xhost +coLinux
xset +fp tcp/coLinux:7100
esd -public -tcp &
exec xterm -e /usr/bin/bash -l
のように変えておく(赤字が追加部分)。赤字の3行めはサウンドデーモンの設定。これでcygwin側でesdが動きはじめる。一方、CoLinux側で
サウンドデバ
イスとしてcygwinのesdを指定しておけば、とりあえず音は鳴る(私が試したのはKDE関係だけなので、kcontrolで「cygwin:
16001」と設定した)。
CoLinux側からはcygwinのXを使うことになるので、CoLinux側の.loginに
setenv DISPLAY cygwin:0.0
を追加しておき、「おまえのDISPLAYはcygwinにあるんだよ」と教えておく。もちろん、/etc/hostsにcygwinのIPアドレスを書
いておく必要がある。私はtcshを使っているのでこうやっているが、bashとかを使っている人はそれなりの書き方(試してないけど、「set
DISPLAY=cygwin:0.0」と、「export DISPLAY」でいいはず)でどっかに書いてちょうだい。
★CoLinuxのX上
でのIME
こうなると、CoLinux上でもできるだけ普通のLinuxと同じようにいろいろやりたくなるところだが、一番の問題は日本語入力である。
今のところ、二つの方法を使っている。一つはATOK for
LinuxをCoLinux内で動かす。何も考えずにcygwinのXを起動したのでは、httx(ATOK for
Linuxのインプットメソッド)は起動してない。CoLinux側でhttxを立ち上げてやる必要がある。
もう一つの方法はimeproxy。
cygwinでWindowsのIMEが使えるようになるというもの。CoLinux側からは、cygwinのマシンでcannaが動いているように見え
るので、「cannaserverはcygwinだよ」と教えてやりつつcannaを使うように設定すればよい。imeproxyを起動するには、
cygwin側で、
/usr/sbin/canna2imm32.exe -inet -a
を実行しておく(-aはATOK用だそうである)。
次に、.Xdefaultsに
Emacs*useXim:
True
*conversionOnKeys: Henkan
!! setup for kinput2
!!
*VT100*translations: #override
Shift<Key>space:begin-conversion(JAPANESE_CONVERSION)
Kinput2.mappedWhenManaged: false
Kinput2.width: 1
Kinput2.height: 1
Kinput2*ConversionStartKeys:
Shift<Key>space
Kinput2*OverTheSpotConversion.modeLocation:
bottomleft
!!
*KinputProtocol.BackwardCompatible:
true
*KinputProtocol.XlcConversionStartKey:
Shift<Key>space
!!
!!
*inputMethod: kinput2
Kinput2*conversionEngine: canna
Kinput2*cannahost: cygwin
Kinput2*useOverrideShellForMode:
True
を追加しておく。これで、httx(ATOK for
Linux)を使うにしろkinput2(canna=imeproxy)を使うにしろ、X側の設定はOK。
さらに、.loginに
if ( "$XIM_PROG"
== "atokx2" ) then
setenv XMODIFIERS @im=htt
else
setenv XMODIFIERS
@im=kinput2
endif
を追加。これでXMODIFIERSを適切にセットする。
#!/bin/bash
case "$XIM_PROG" in
canna* | Canna*)
if [ -z "`ps xc | grep kinput2`" -a -n "$DISPLAY" ]; then
kinput2 &
fi
;;
atokx2* | AtokX2*)
if [ -z "`ps xc | grep httx`" -a -n "$DISPLAY" ]; then
if [ -f ~/.Xdefaults ]; then
xrdb -merge ~/.Xdefaults
fi
/usr/lib/im/httx -if atokx2 -xim htt_xbe &
fi
;;
esac
というファイルをstartimeとして作る(当然、chmod
+xしておく)。これはVineがXを立ち上げる時に実行するスクリプトから抜き出した。
これで、環境変数XIM_PROGがcannaならkinput2を、atokx2ならhttxを起動してくれる。CoLinuxの場合、Xを起動する
のはcygwin側なので、インプットメソッドをCoLinux側で起動してやらないといけない(Vineを普通に使う時は、XもVineで動いているか
らこのあたりは勝手にやってくれる)。
Vineのスクリプトである「setime」は環境変数の面倒をみてくれるので、以上の設定をやっておけば、「setime
canna」とか「setime atokx2」とかで必要な設定をやっておいてくれる。
後はcygwinのXが立ち上がっている状態でstartimeを実行すれば、以後立ち上げるXのプログラムでATOK for
Linuxなりimeproxyなりを使った日本語入力が使える。startimeも.loginで実行させてもいいかもしれない。
二つの問題点を書いておくと、
ATOKの場合:なぜか、「変換」キーで変換モードに入るのに、「変換」キーでは抜けられなくなる時がある????もしかしたらWindows側で窓使い
の憂鬱を使っている影響???
cannaの場合:途中まで入力して、「途中まで入力して」という状態になった後で「変換して」と打つと「途中まで」が「とちゅうまで」とひらがなに戻っ
てしまう。cannaってこんな動きしてたっけ???
そこでもう一つの方法として、canna-tamagoを使う方法でやってみたところ、今のところはこれが一番よさそう。
まず、「apt-get install tamago」しておく。次に、.loginの最後の方に
setenv CANNASERVER cygwin
setenv EMACS_IME canna-tamago
を書く。.emacs.elのcanna-tamagoを使っている部分(これまたVineの)
(if (or (and (not (and (boundp 'CANNA) CANNA))
(>= emacs-major-version
21))
(equal emacs-ime "canna-tamago"))
(progn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emacs-dl-canna/emcws でないとき (tamago4)
;; Canna サーバの指定
(if (null (getenv "CANNASERVER"))
; 下はcoLinux向けに書き直した。
(setq canna-hostname "cygwin")
(setq canna-hostname (getenv "CANNASERVER")))
と直した。Vineに最初からついてきたのだと、canna-hostnameでなくcanna-serverになっていてうまくいかなかった。なぜだろ
う?
後は
(define-key global-map [henkan]
'toggle-input-method)
(define-key isearch-mode-map [henkan]
'isearch-toggle-input-method)
として変換キーで漢字モードのONOFFをするようにして、
;(define-key its-mode-map [henkan]
'its-kick-convert-region)
の方はコメントアウトしておいた。これだと一応今のところは無事。一番ストレスなく動く。