No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 10 | 11 | 12 || Next»

VNCで合わせ鏡

誰でも考えるであろうことをふと思いつき,実際にやってみた.

何をやったかというと,Windows の VNC Client から coLinux につないで X (Xvnc) を立ち上げ,そのなかから Windows 側で立ち上げた VNC Server に VNC Client で接続するということをした.これをやると,Windows で画面描画をした際に coLinux 内の VNC Client の描画が起こり,その描画は Windows の VNC Client に伝わり Windows 側の新たな描画を生じる.あとはこのサイクルが描画イベントが画面領域の外に出るまで繰り返され,合わせ鏡と同じ現象となる.

ちなみに結果はこんなもん.(ただ単に Window が重なっているようにしか見えない...)

coLinuxes -- 複数起動

無意味に coLinux を複数起動して通信させてみた.

やり方としては TAPアダプタを複数用意してブリッジ接続してやるだけ.TAPアダプタの増やし方は,[コントロールパネル]->[ハードウェアの追加]->[新しいハードウェア デバイスの追加]->[一覧から選択]->[ネットワーク アダプタ]->[TAP-Win32 Provider(coLinux)]->[TAP-Win32 Adapter V8(coLinux)] で.追加されたら [コントロールパネル]->[ネットワーク接続] で名前を TAP1, TAP2, ... とかに変えておく.

あとは,coLinux の設定XMLファイルのほうで,

    <network index="0" name="TAP2" type="tap" />

のように name 属性を接続の名前 TAP1, TAP2, .. などに重ならないように指定するだけ.MACは自動でランダムに割り当てられるはずなので指定なし.

Gentoo 2-Way Boot (native & coLinux)

なんとなくデュアルブート用にインストールした Gentoo を coLinux で起動してみたくなった.これができると 2-Way Boot で結構便利なので.

で,そのためには coLinux の設定XMLを書かなければならないのだが,Windows のディスクナンバーとパーティションナンバーの管理の仕方が良く分からず苦戦.diskpart コマンドの返すディスクナンバーと,同パーティションナンバーからもずれているらしい.最終的に ,hda7, hda8 が /, swap である私の PC では次のような設定になった.まあ,ext3 のパーティションは一個しかないから全パターン試して起動したのが正解であっただけだけど.

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" alias="hda7" path="\Device\Harddisk0\Partition4" enabled="true" />
    <block_device index="1" alias="hda8" path="\Device\Harddisk0\Partition5" enabled="true" />
    <bootparams>root=/dev/hda7</bootparams>
    <initrd path="initrd.gz" />
    <image path="vmlinux" />
    <memory size="256" />
    <network index="0" type="tap" />
    <block_device index="2" alias="hdc" path="\Device\Cdrom0" enabled="true" />
</colinux>

(hda2 が拡張領域で hda3,4 が存在していないので,その分を引いた数がパーティション番号になるのかな?)

とりあえず,起動時に coLinux でサポートしていない機能に関して文句を言われるが,

ログイン画面が立ち上がったので今日のところはよしとしよう.

Installation of coLinux with Gentoo(3)

続いて GNOME と GDM の設定をする.

とりあえず emerge する.

emerge -k gnome
emerge -k gdm

GNOMEの設定は特に無いのでGDMの設定をする.

DIsplayManager として GDM を使うように /etc/rc.conf を修正

DISPLAYMANAGER="gdm"

次いで GDM の設定ファイル /etc/X11/gdm/gdm.conf を修正.ここでは必要な部分のみを示す(Xvfb へのサーバ変更と VirtualTerminal割り当てをしないのと XDMMCPの使用).

[daemon]
StandardXServer=/usr/X11R6/bin/Xvfb
VTAllocation=false
[xdmcp]
Enable=true
[server-Standard]
command=/usr/X11R6/bin/Xvfb
[server-Terminal]
command=/usr/X11R6/bin/Xvfb -terminate
[server-Chooser]
command=/usr/X11R6/bin/Xvfb 

以上で GNOME + GDM に置き換わっているはずである.VNC で接続すれば XDM の変わりに GDM が起動する.(ちなみに,GDM をデーモンとして起動するためにはXDMの起動スクリプトを使う.なので, rc-update add xdm default を実行してあれば GDM がデーモンとして起動される.)

ところで,GNOME の起動時に xscreensaver が無いと文句を言われるが,xscreensaver の emerge で

emerge -k xscreensaver
...
media-libs/svgalib-1.9.19-r3
!!! ERROR: media-libs/svgalib-1.9.19-r3 failed.
!!! Function kernel-mod_configoption_builtin, Line 114, Exitcode 1
!!! kernel has not been configured yet
!!! If you need support, post the topmost build error, NOT this status message.

のように文句を言われるため,今のところ仕方が無い.後で考える.同様の理由で KDE も emerge できないのだが,これも後で考える.

次は KDE が入ったらいいなぁ.

ちなみに起動の様子はこんなもん(gdm, gnome).

Installation of coLinux with Gentoo(2)

続いて X の設定をする.今回は VNC で接続する形をとる.

まず,/etc/make.conf の USE に少々追加

alsa canna cjk emacs java mozilla mule ruby unicode usb xface

WMに IceWM を使うとして X 関係を emerge する.

emerge -k xorg-x11
emerge -k icewm
emerge -k kterm 
emerge -k mozilla

次いで,vnc と xinetd を emerge (VNC への接続を xinetd で管理する)

emerge -k tightvnc
emerge -k xinetd
rc-update add xinetd default

そして,日本語関係を emerge する.

emerge -k canna kinput2 
rc-update add canna default 
emerge -k kochi-substitute shinonome monafont mplus-fonts aquafont aquapfont mikachan-font

必要なものの emerge が終わったので,設定に入る.

まず,VNC が X のスタートアップに使う ~/.vnc/xstartup に以下を書き込む.

if [ -x /usr/X11R6/bin/kinput2 ] ; then
    /usr/X11R6/bin/kinput2 -canna &
    XMODIFIERS="@im=kinput2"
    export XMODIFIERS
fi 
export LANG="ja_JP.UTF8"
exec icewm-session 

そして,vnc 単体で起動したときと xdm を使ったときで同じ振る舞いをするように

ln -s ~/.vnc/xstartup ~/.xsession

でリンクを張っておく.

次にフォントサーバ Xfs の設定をする.まず,常時起動にする.

rc-update add xfs default

次にフォントパスの指定をする.編集するファイルは /etx/X11/fs/config で,以下を行う.

tcpを使いたいのでコメントアウト
# no tcp, use sockets!
# no-listen  =  tcp
catalogue に追加
	/usr/share/fonts/shinonome,
	/usr/share/fonts/monafont,
	/usr/share/fonts/mplus,
	/usr/share/fonts/aquafont,
	/usr/share/fonts/aquapfont,
	/usr/share/fonts/mikachan-font,

さらに,Xfs のポート設定をするために /etc/conf.d/xfs の書き換えをする.

XFS_PORT="7100"

以上の設定が正しいかどうかは,/etc/init.d/xfs start したあとに

xfsinfo -server localhost:7100

で正しい応答が示されればいい.

ここまでの設定で,手動でVNCサーバを立ち上げれば接続できるようになっているはず.VNCサーバの立ち上げは以下のコマンドでできる.

vncserver :1 -depth 24 -geometry 1024x768 -compatiblekbd -fp tcp/localhost:7100

そして,ホストOS の方から VNCclient で hogehoge:1 に接続すれば X が起動する.

続いて,一々ログインして手動で VNCserver を起動しなくてもいいように xinetd の設定をする.

まずはVNC接続をサービスに登録するため, /etc/services に以下を追加.

vnc-1024x768x24         5950/tcp                        # vnc server
vnc-1280x1024x24        5960/tcp                        # vnc server

これは,画面の解像度などに応じてポート 5900 以上に適当にエントリを作る.このポート番号から 5900 を引いたものがVNCのディスプレイ番号になる.なので,上の設定は 50 番で XGA, 60番で SXGA となる.

続いて,xinetd の設定ファイルを追加する.設定ファイルは画面サイズごとに作る(正確にはサービスごとに).

/etc/xinetd.d/vnc-1024x768x24 を以下のとおり作る.

service vnc-1024x768x24
{
        disable         = no
        socket_type     = stream
        wait            = no
        only_from       = 192.168.0.0
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -compatiblekbd -depth 24 -geometry 1024x768 -fp tcp/localhost:7100
        log_on_failure  += USERID
}

同様に /etc/xinetd.d/vnc-1280x1024x24 を以下のとおり作る.

service vnc-1280x1024x24
{
        disable         = no
        socket_type     = stream
        wait            = no
        only_from       = 192.168.0.0
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -compatiblekbd -depth 24 -geometry  1280x1024 -fp tcp/localhost:7100
        log_on_failure  += USERID
}

最後に,xinetd を常時起動にして xinetd の設定終了.

rc-update add xinetd default 

次に,ディスプレイマネージャ(GUIのログイン処理) XDM の設定をする.

作業としては以下のとおり.

/etc/X11/xdm/Xservers のサーバを Xvfb に変更
/etc/X11/xdm/Xaccess  の * で始まる行のコメントアウトはずす(上から二つ)
/etc/X11/xdm/xdm-config の最後の行(requestPort)をコメントアウト

/etc/init.d/xdm start として立ち上げてみて,

外部から vnc でつなげてログイン画面がでることを確認してから常時起動の設定をする.

rc-update add xdm default 

ちなみに,Xサーバの設定が間違っているとGentoo全体が立ち上がらなくなる可能性あり.

そうなったら gentoo.colinux.xmlでシングルユーザモードにして立ち上げて修正する.

    <bootparams>root=/dev/cobd0 single</bootparams>

ちなみに,Windows 側の VNC としては Gentoo も使っている tightvnc のほか,

それの改良版(?)である UltraVNC やオリジナルの系統である RealVNCがある.

とりあえず,Gentoo にあわせて tightvnc をダウンロードしてインストールし,hogehoge:50 に接続すると XGA のログイン画面が現れ,ログインすると IceWM が起動することが確認できる.

ちなみに起動の様子はこんなもん(xdm, icewm).

次は GNOME と GDM へ.

Installation of coLinux with Gentoo

突然 coLinux を使ってみたくなってインストールしたので,その記録を残してみる.

まずはhttp://www.colinux.org/ から 0.6.2 のインストーラ(coLinux-0.6.2.exe)をダウンロード.そして, インストーラを実行して適当なディレクトリにインストール(例えばN:\coLinux).インストールオプションは,WinPcap は使う予定が無いのでチェックをはずして,さらに Gentoo をインストールするのでルートイメージのダウンロードはしない.Gentoo のルートイメージは別途 Wiki からたどってダウンロード.ルートイメージをcoLinuxのインストールディレクトリにでも展開する.

ちなみに解凍されるルートイメージは 512M なので,/usr なども同一イメージ上に作成するのであれば topo\topoenlarge.bat を使って適当にサイズを大きくする(4Gぐらいほしいなぁ).別のイメージを用意するならば,cygwin の dd とかで適当なサイズのファイルを作っておく(フォーマットはマウント後に普通にやればいい).

で,以下のような感じで設定ファイル gentoo.colinux.xml を書いて保存.

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" path="\DosDevices\n:\coLinux\gentoo512" enabled="true" />
    <block_device index="1" path="\DosDevices\n:\coLinux\swap64" enabled="true" />
    <bootparams>root=/dev/cobd0</bootparams>
    <initrd path="initrd.gz" />
    <image path="vmlinux" />
    <memory size="256" />
    <network index="0" type="tap" />
    <block_device index="2" alias="hdc" path="\Device\Cdrom0" enabled="true" />
</colinux>

起動は以下のコマンドで行う(バッチファイルでも書いて置けば楽).

colinux-daemon.exe -t nt -c gentoo.colinux.xml

あと,coLinux 側からネットワークを使うため,ホストPCのネットワークインターフェースとcoLinux の TAP ドライバをブリッジ接続しておく.

引き続きGentoo側の設定をする.

まず,portage のスナップショットを取ってくる(emerge sync でもいいけど).そのために,とりあえず手動でネットワークの設定をしておく(DHCP がイメージに入っていないので).

ifconfig eth0 192.168.0.4 netmask 255.255.255.0
ifconfig eth0 up
route add default gw 192.168.0.1
wget ftp://ftp.isu.edu.tw/pub/Linux/Gentoo/snapshots/portage-yyyymmdd.tar.bz2
tar -xvjf portage-yyyymmdd.tar.bz2 -C /usr

この作業は大量の画面出力を伴うが, coLinux のコンソールの挙動がおかしいので最後の tar コマンドは /dev/null へリダイレクトしておいたほうが無難かも.

次に,swap パーティションを大きくする.適当に大きなサイズ,ここでは512メガのファイルを swap512 という名前で手適当に作って(cygwin の dd コマンドで十分)

   <block_device index=\"2\" path=\"\DosDevices\n:\coLinux\swap512\" enabled=\"true\" />

の行を gentoo.colinux.xml に追加してマウントできるようにし,gentoo のほうで

mkswap /dev/cobd/2

を実行して swap 用にする.そして, gentoo.colinux.xml を書き換えて

    <block_device index="1" path="\DosDevices\n:\coLinux\swap512" enabled="true" />

にする.これで swap パーティションの切り替え終了.

あとは基本的に Gentoo のインストールに従うだけでしょう.http://www.gentoo.org/doc/ja/gentoo-x86-install.xmlの「13. ステージ3から始める場合」以降からで.

ホスト名の設定

echo hogehoge > /etc/hostname

タイムゾーン設定

ln -sf /usr/share/zoneinfo/Japan /etc/localtime

システムロガーとCronのインストール

emerge -k syslog-ng
rc-update add syslog-ng default
emerge -k vixie-cron
rc-update add vixie-cron default

ルートパスワード設定

passwd

ネットワーク設定

/etc/conf.d/net で eth0 を dhcp にして gateway の設定もなくすDHCPを使うので dhcpcd を入れて自動で立ち上げるように設定

emerge -k dhcpcd
rc-update add net.eth0 default

SSHを常時使用に

rc-update add sshd default 

その他に必要なものとして, screen, vi は必須なので入れておく.

emerge -k screen
emerge -k vim

次は X の設定で.

«Prev || 1 | 2 | 3 |...| 10 | 11 | 12 || Next»
Search
Feeds

Page Top