個人的な今年のまとめ

自分自身は行っていないが周りではKVSやその周辺の話題でが盛り上がっていた。
RDBからKVSにこれからは全て変わっていくなどという幻想を持った人もいて、色々な情報が飛び交っていました。現実にはKVSは銀の弾丸ではなく一部の特殊な問題へ特化した回答のようである。RDBで作るべき部分を無理にKVSを使って実装を行った結果としてえらい目にあっている人が近くにいたが、そこから対処方法もある程度わかってきたようで来年も注目して期待分野だと思う。
やっと分散計算開発用環境もできてきたので、来年はHadoopの勉強に本格的に取り掛かろう。

その他のことは色々あったが悪夢でしかなかったので忘れよう。うん、そのほうがいい・・・ orz

VirtualBox OSE及びphpVirtualBoxのインストール まとめ

オープンソースVirtualBoxのインストール及び設定方法です。
プロプリエタリ版はhttp://d.hatena.ne.jp/umi_sati/20101218/1292650227を参照

環境はUbuntu10.10 desktop-amd64

VirtualBox OSE 3.2.8をインストール

$sudo apt-get install virtualbox-ose

続いてphpVirtualBoxのインストールを行うのだが、まずは前提条件となるapache + phpのインストールをする。

$sudo apt-get install apache2
$sudo apt-get install php5
$sudo /etc/init.d/apache2 restart

また、必須ではないがphpVirtualBox用のユーザーを作っておく。ユーザー名はphpVirtualBoxで初期値となっているvboxを使っています。

$sudo useradd -m -s /bin/bash -d /home/vbox vbox
$sudo passwd vbox
$sudo usermod -G cdrom vbox

環境は整ったのでphpVirtualBoxインストールを行う。

下記からphpVirtualBoxの圧縮ファイルとvboxwebsrv をダウンロードする。

http://code.google.com/p/phpvirtualbox/downloads/list

ダウンロードしたphpVirtualBoxを公開ディレクトリに展開し、ディレクトリ名を変更しておく(今回はフォルダ名をvboxにしておく)。apacheはディフォルト設定のままなので/var/www/が公開ディレクトリになっている。

$sudo unzip phpvirtualbox-0.5.zip -d /var/www/
$sudo mv /var/www/phpvirtualbox-0.5 /var/www/vbox

ダウンロードしたvboxwebsrvを編集する

$sudo gedit vboxwebsrv

vboxwebsrvのユーザーをVirtualBoxを動かすユーザー名に変更する。今回は初期値であるvboxで使うので編集をしていません。

USER=vbox

編集したvboxwebsrvを自動起動サービスに登録し、サービスを開始する。

$sudo chmod 755 vboxwebsrv
$sudo chown root vboxwebsrv
$sudo chgrp root vboxwebsrv
$sudo mv vboxwebsrv /etc/init.d
$sudo update-rc.d vboxwebsrv defaults
$sudo service vboxwebsrv start

このままだと、VRDPAuth絡みのバグ?で

Error logging in or connecting to vboxwebsrv

というエラーが出る。プロプリエタリ版でconfig.phpのユーザーおよびパスワードが不正な場合にも同様のエラーが出るが、OSEでは正しく指定でもエラーになる。
対策として、vboxwebsrvで指定したユーザーのVirtualBoxの設定を変更する。今回はユーザーをvboxとしたので、

$su vbox -c 'VBoxManage setproperty websrvauthlibrary null'

と設定する。

http://localhost/vbox/ に接続してみて画面が正常に出れば設定、成功!

VirtualBoxのHDDデータ複製

VirtualBoxのHDDデータファイル(vdiファイル)は個別のIDデータを持っている。このため単純にコピーしただけではコピー元のvdiファイルが登録されている場合、コピーしたvdiファイルは登録できない。
vdiファイルをコピーするためには、コマンドで

>vboxmanage clonevdi コピー元ファイル名 コピー先ファイル名

とする。

コマンドを覚えるのが苦手ないのでエイリアスを作っておくことにする。

set_alias.bat

doskey clonevdi="C:\Program Files\Oracle\VirtualBox\VBoxManage" clonevdi $*

このBATファイルを実行すれば、

>clonevdi コピー元ファイル名 コピー先ファイル名

でvdiファイルをコピーできる。

WindowsからUbuntu10.10へのGUIリモートログイン

Ubuntu10.10をホスト、Windowsをクライアントとしたリモートログインの方法。
いくつかのパターンを試したがもっともうまく動作するのは、Ubuntuのgdmのバージョンを上げてXDMCPで接続する方法でした。
XDMCPでのリモート接続環境構築方法を記載します。

まず、ホストとなるUbuntu側の設定をする。
https://launchpad.net/ubuntu/+source/gdm/
で最新版のgdmをダウンロードし、Ubuntuソフトウェアセンターからアップグレードする。今回は2.32.0-0ubuntu2 を使った。
GDMでXDMCPを有効にするため、custom.confを設定する。custom.confがない場合は新規に作成します。

$sudo gedit /etc/gdm/custom.conf

custom.confに以下を付け加える

[xdmcp]
Enable=true

編集したら保存し、gdmを再起動する。再起動するには Ctrl-Alt-F1 でシェルプロンプトに移り、

$sudo /etc/init.d/gdm restart

で再起動する。再起動するとGUI画面に移るので、Ctrl-Alt-F1でシェルプロンプトに戻り、

$exit

でログアウトする。ログアウトしたら Ctrl-Alt-F7で X グラフィックのGUI画面に戻る。
gdmの再起動がうまくいできないならばPC自体を再起動すればよい。

ホスト側の設定はこれで完了。
クライアント側であるWindowsの設定を行う。
WindowsVM PlayerもしくはVirtualBoxをインストールし、バーチャルマシン上にUbuntuをインストールする。
バーチャルマシン上のUbuntuにて、ホストにXDMCPで接続するためにXephyrをインストール

$sudo apt-get install xserver-xephyr

以上で設定終了。

IPアドレス192.168.1.xxxのホストに接続するためには、バーチャルマシン上のUbuntu

$Xephyr -query 192.168.1.8 -screen 800x600 :1 -keybd ephyr,,,xkbmodel=evdev -3button &

とすれば接続できます。起動時のコマンド引数でエラーが出ているが、不都合は出ていないのでエラーの消し方は積んでおく。
バーチャルマシンを使わずXmingで接続する方法では接続がうまくできませんでした。
また、バーチャルマシン上のUbuntuにバーチャルマシン用のドライバを入れた場合、
ディスプレイ周りの問題でXephyrが起動できなくなってしまった。

VNCでも試してみたが、過去の日記の通り上記の方法よりも残念な結果になってしまったので省略します。

リモートログインしたいんです その2

GDMのバージョンを上げれば内部からはXDMCPを使えるようなので、VNCを通してリモート接続を試みる。
vnc4serverとvnc4serverをアクセスがある度に起動させるためのxinetdをインストールする。

sudo apt-get install vnc4server
sudo apt-get install xinetd

vnc4serverでのパスワードファイルを作る。パスワードは短すぎると怒られます。

sudo vncpasswd /etc/vncpasswd
sudo chown nobody /etc/vncpasswd
sudo chgrp nogroup /etc/vncpasswd

xinetdの設定ファイルの記述。

sudo gedit /etc/xinetd.d/xvnc

今回は下記のようにする。

service Xvnc
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = yes
user = nobody
group = tty
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -geometry 800x600 -depth 24 -once -DisconnectClients=0 -desktop vboxpc -NeverShared PasswordFile=/etc/vncpasswd
port = 5900
}

PasswordFile=の記述をなくし"-SecurityTypes None"を追加すればvnc接続のためのパスワードをなくせる。
しかし、ログインしたままでvnc接続をきった場合、ログイン状況は残るのでvncで接続するれば誰もが自由に操作できるようになってしまう。

vnc接続で操作できるようになったがd keyがウィンドウ最小化になってしまう。
調べてもよくある症状のようでキーバインドを変更くらいしか対処方法がないようだ。(未確認)
その他にもキー入力で不便な点が多いので、別の手段を考えるしかなさそう。

リモートログインがしたいんです

一昨日はGDMでのXDMCP接続に失態したの、昨日はGDMからKDMに切り替えてXDMCP接続に挑戦しようとしていた。しかし、KDMがうまく動かない。ログオフすると真っ暗な画面のまま応答不能に。調べてみるとKDMのバグらしいので、KDMを諦めXDMをインストールする。再起動すると真っ暗な画面のまま応答不能
悪化してる・・・
罠を避けようとして泥沼に
DisplayManagerは一度入れると消すのが難しいようなので、初期化することにしました。

XDMCPによるリモートログイン

https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/408417
ということでUbuntu10.10では バグによりXDMCPによるGUIログインがサポートされていないのだが、11.04ではGDM2.32.0を使うこと修正されている。
Tom Ellis氏によるパッチを当てれば10.10でのバグは修正できるとのことだが、GDMのバージョンを上げるという方針をとってみる。
結論としてはうまくいきませんでした。
以下、行った方法

https://launchpad.net/ubuntu/+source/gdm/
で最新版のgdmをダウンロードし、Ubuntuソフトウェアセンターからアップグレードする。
GDMでXDMCPを有効にするため、custom.confを設定する。custom.confがない場合は新規に作成します。

$sudo gedit /etc/gdm/custom.conf

custom.confに以下を付け加える

[xdmcp]
Enable=true

編集したら保存し、gdmを再起動する。再起動するには Ctrl-Alt-F1 でシェルプロンプトに移り、

$sudo /etc/init.d/gdm restart

で再起動する。再起動するとGUI画面に移るので、Ctrl-Alt-F2でシェルプロンプトに戻り、

$exit

でログアウトする。ログアウトしたら Ctrl-Alt-F7で X グラフィックのGUI画面に戻る。
gdmの再起動がうまくいできないならばPC自体を再起動すればよい。

Ubuntu同士でのXephyrを使ったログインは無事成功。
しかし、WindowsからXDMCPを使って接続すると、ログイン画面からユーザー画面の切り替えで落ちる。
無理があったか・・・