15 posts tagged “colinux”
wubiでセットアップした環境ではgnome上でgnome-terminalが問題なく使えるのに、
イメージを共有しているcoLinux側では、gnomeを動かしていないからか動かなくなった。
$ gnome-terminal
Failed to contact the GConf daemon; exiting.
検索してみると、gnome起動前にgconfにアクセスできないというのを見つけた。
GConf-2.22ならいけてGConf-2.24でこの状況になるらしい。
workaroundにしたがって次のようにする。
eval `dbus-launch --sh-syntax`
gconftool-2 --spawn
上記の二つのコマンドを実行しておけば、gnome-terminalが起動できる。
上記のコマンドを実行したセッションが生きている状態ならば、他のシェルからでも、
環境変数DBUS_SESSION_BUS_ADDRESSを設定するだけで大丈夫。
結果から書くと出来てない.実パーティションならcoLinux側で/dev/xxxとかを指定するので出来るみたいだけど.
coLinux側を100Mぐらいの最低限boot可能なイメージにして、ほとんどをwubi用のイメージを使うようにした.
警告なしにboot出来るようにするには
- /bin
- /etc
- /lib
- /sbin
- /var
/varは/var/run, /var/lockを上からマウントしてしまうとメッセージが出てしまうので、それ以外はbindしてかぶせてしまって構わなそう.
devel-coLinux-20080811.exeを入れたら、DNSで名前解決が出来なくなった。MLをみたら0.7.3-2からぶっ壊れてるというのがあがってた。
tftp用の対応が影響している模様。面倒なので0.7.3のzipを持ってきてcolinux-slirp-net-daemon.exeを置き換えた。
2008/08/20 追記
開発版のchangeLogをみたらr1112で修正されたようなので、devel-coLinux-20080820.exeに入れ替えました。
stableで困っていたら、SF.netの0.7.3-linux-2.6.22.18の所からcolinux-slirp-net-daemon-0.7.3-3.zipを持ってくれば直る模様。
ptexliveをビルドするのに、isoイメージの中身が必要らしいので適当に調べた。
すぐ思いつくのは、イメージファイルをloopでマウントする方法だが、容量に余裕があまりないcolinux側に持って行きたくない。
他に簡単にやる方法がないかと思ってみていると、coLinux 0.8からはcoscsiと言うものが出来て、ディスクイメージを普通のデバイスとしてみることが出来るらしい。参考
なので、これを使ってみた。
confにscsi0=cdrom,texlive2007-live-20070212.isoを書いて再起動すると、sr0として見えるようになる。scsi0 : Cooperative Linux SCSI Adapter
scsi 0:0:0:0: CD-ROM coLinux COCD 1.01 PQ: 0 ANSI: 2
sr0: scsi3-mmc drive: 32x/32x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 0:0:0:0: Attached scsi CD-ROM sr0
マウントすると普通にアクセスできるように見えるのだが、
ファイルの中身が見られない現象が多発したのでこの方法はあきらめた。
イメージがぶっ壊れてるのかも知れないと思ったけど、壊れてなかった。何かわかったらレポートしよう…
ubuntu kernel: attempt to access beyond end of device
ubuntu kernel: sr0: rw=0, want=3344004, limit=2097151
他の方法を考えていたら、cofsでマウントしている所にイメージファイルを置いたら、
loopでマウント出来そうだなと思ってやったら出来た。
これが、再起動もいらないし、一番簡単じゃないか…
ビルド自体は、libpng12-devとzlib1g-devを入れたぐらい。
pxdviは作らない(xdvi-jaでいい)のでX関係の開発用パッケージは不要だった。
いくつかは別に必要で入れてあったので、実は使ってるかも知れないけど。
同じフォントを複数保持するのがもったいないと思ったので、cofsでwindows\fontsをfonts.confで参照しているディレクトリ配下(とりあえず/usr/local/share/fonts/winfonts)にマウントした。マウントできたら、fc-cacheすれば、fontconfig経由で使えるようになる。
ついでにXmingのフォントの説明をまねをしてXmingから使えるようにした。
mkfontscale /usr/local/share/fonts/winfonts
mkfontscale -b -s -l /usr/local/share/fonts/winfonts
ただ、一部のフォントは名前の問題で使うことが出来なかったので、fonts.dirとfonts.scaleを書き換えた。
私の所では、bdf um+をbdf umplusにしたぐらい。
ここまでやれば、基本的に書き込むことはないので、roでマウントしなおした。
xlaunchでフォントサーバを指定すると、ローカルのフォントを見てくれなくなるので、
フォントサーバの指定をやめて、Xmingの追加オプションでフォントパスを指定するようにした。
-fp "built-ins,mplusの所,windowsの下のfonts,tcp/tapのアドレス:7100"
PulseAudioのWindows Binaryがあったので、EsounD(esd)がわりに入れてみた。
module-esound-protocol-{unix,tcp}, module-waveoutを読んで、
default.paに
を書いておけば、esd代わりに鳴ってくれる。frozen-bubbleとpysolは鳴った。load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;tapのアドレス
load-module module-waveout
pulseaudioを使うアプリがあるなら、module-native-protocol-{unix,tcp}を参考に
を入れておけばよいはず。load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;tapのアドレス
ついでに、imeproxyをいれて、scim-cannaとTamago v4をいれた。sudo aptitude install scim-canna egg
typoが合ったので直しました(titleがcoLinxだったのと、esound用のモジュール名までnativeになってた)
snapshotを新しくしたら、メモリが割り当てられるようになってた。
r956で入ったやつ。
video0=8で8M割り当ててみた。
covideo_pci_init: registering...
covideo0: buffer: e0880000, size: 8388608
covideo0: testing buffer at 0xe0880000 (size: 8388608)
covideo0: test passed!
covideo0: calling find_mode...
fb0: Cooperative video at: e0880000, size: 8192K
fbにアクセスするとログが出る。試しにfrozen-bubbleを起動したらfbの内容は書き換わったみたいだけど、ちゃんと画像に戻せない…
covideo0: open: user: 1
covideo0: close: user: 1
mltermをwindowsのランチャーから起動出来るようにしてみた。便利かも。CoLinux以外でも使えるし、もちろんmlterm以外でも。
plinkw user@host "mlterm -dtapのアドレス:0-w 12 -8=true --sb=false"
tapのアドレスはslirpでも良いんだけど、tapの方が速かったからtapのアドレス。
私はtapのアドレスを固定しているので、それをそのまま指定すればいい。
わからなければ、とりあえずsshでもtelnetでもいいからリモートからログインして、wとかwhoするかログを見る。
Xmingの設定でアクセス制限をしている場合、slirpならローカルホストになるのでxhostがそのまま使えるが、
tapだと当然別のアドレスになるのでうまく行かない。
最初は、
- slirp経由でログイン
- .bash_profileでxhostを使ってtap側のアドレスも接続可能にする
- DISPLAYをtap側に設定
以下は最初は.bash_profileに書いていたが、ログインシェルじゃなくても良いように.bashrcに移した。
export ESPEAKER=tapのアドレス:16001
export GTK_IM_MODULE=uim
export LANG=ja_JP.UTF-8
coLinuxにtapを追加してから、ネットワークの設定が自動でされなくなったので原因を調べたんだけど、書き忘れたので別エントリで書いておく。
問題
コマンドラインから起動するときと、サービスとして起動するときで違うMACアドレスが振られることがあるらしい。
MACアドレスとethXの対応をudevが記憶しているから、MACアドレスが変わるとethXが変わってしまい、eth0用の設定(ubuntuだと/etc/network/interfacesに書いてあるやつ)が適用されなくなってしまう。
なので、コマンドラインから起動したときのMACアドレスと、サービスとして起動したときのMACアドレスを両方同じethXになるように登録すれば解決。
対応
udevが対応を記憶しているファイル(/etc/udev/rules.d/70-persistent-net.rules)を見て、新規に追加されたエントリを割り当てたいethXにすればok。
私の場合は、元々eth0, eth1があったところにeth2, eth3が追加されたので、eth2→eth0, eth3→eth1にした。
こんな感じ
# PCI device 0x1a55:0x0005 (conet)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="サービス時のアドレス", NAME="eth0"
# PCI device 0x1a55:0x0005 (conet)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="コマンドライン時のアドレス", NAME="eth0"