[debian] AudioGalaxy on Wine on Debian/wheezy

AudioGalaxyで自宅サーバにはいってる音楽を外から聞けるように。Win/mac用のサーバしかないのでwine経由でうごかしてやる。

cf. http://www.avidandrew.com/guides/67-audiogalaxy-linux

Wineをいれる

コンパイル済みdebを使用

http://dev.carbon-project.org/debian/wine-unstable/

sudo apt-get ia32-libs lib32z1
sudo dpkg -i libwine-unstable_1.4~rc3-0.1_amd64.deb
sudo dpkg -i libwine-bin-unstable_1.4~rc3-0.1_amd64.deb
sudo dpkg -i wine-bin-unstable_1.4~rc3-0.1_amd64.deb

AudioGalaxyクライアントを設定する

audiogalaxyの公式からログインすると、認証設定済みのサーバexeがダウンロードできる。

とりあえず起動してみるとえらー:

$ wine Audio*.exe
wine: Call from 0x7b83ad72 to unimplemented function msvcp90.dll.??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z, aborting

なんかFAQらしい?のでworkaround

$ cd .wine/drive_c/windows/winsxs/
$ mv x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_deadbeef.manifest x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_deadbeef.manifest.bak

My Musicを対象フォルダへのsymlinkに

cd .wine/drive_c/users/$USER
rm "My Music"
ln -s /mnt/hogehoge/music "My Music"
$ wine Audio*.exe

ちゃんと起動することを確認。

Xvfb経由で起動するように

sudo apt-get install xvfb
#!/bin/bash

if pgrep Audiogalaxy; then
	echo "AudioGalaxy already running"
	exit 0
fi

cd /home/$USER/ag

nohup Xvfb :0 -screen 1 800x600x24 &
DISPLAY=localhost:0.0 nohup wine Audio*.exe &

echo "seeing if the program runs >10sec..."
sleep 10

if pgrep Audiogalaxy; then
	echo "seems ok"
	exit 0
else
	echo "fail"
	exit 1
fi

umaskがおかしい

Amazon Linux デフォルトのumaskがなぜか002。

新規userを適当につくって、.ssh/authorized_keysを設定しても全く接続が通らない(Permission Denied)。
おかしいなとおもったら.ssh/authorized_keysのpermissionが664になってた。

umask 022

はじめてのEC2

とっても今更感があるけど、実はいままでAmazon EC2をつかったことがないのであった。
勉強を兼ねてmicro instanceでいろいろ遊んでみて、最終的には開発レポジトリのバックアップと、落ちると痛いIRCログサーバを載せることを目標にする。

手順はGetting Started Guideがかなり親切なのでそちらを参照ということにして、躓いた点とか驚いた点を書いていく。

Block Deviceの取り扱い

  • Elastic Block Store(EBS): 仮想ブロックデバイスのEC2用語。実体が謎なんだけど、SAN越しのストレージサーバ上にあるボリュームと考えると納得いくようないかないような。ストレージサーバにファイルだかLVMボリュームがあって、計算ノードはFCかiSCSIか何か経由でこれにアクセスするように設定されるのかな。EucalyptusはEBSを実装するのにLVMをATAoEで使ってるらしい(参考
  • Instance Store(Ephemeral Store): 計算ノード上にあるディスク。micro instanceだと使えない。おそらくEBSよりはやいしなんかキャッシュにつかうのかな。データベースとか置きたくなるけど、信頼性ないよね。

みんなだいすきS3にEBSやその差分スナップショットをアップロード/ダウンロードできる。

最初にEC2インスタンスを起動させる際には、S3上のテンプレート(このことをAMIという?)->EBSにコピーされて起動する。
逆にテンプレができたらそれをS3上にAMIとしてexportすることもできる。

S3のファイルサイズ制限どうするんだろとおもったら、100MBずつ分割されて保存されるぽい。なるほどね。とおもったら今はサーバ側で自動分割とかもあるのか

インスタンスのStopとTerminateの違い

実行中のインスタンスを停止させるにはStopとTerminateの二種類がある。最初これは、gracefulなshutdownと電源ぷちの2種類かとおもっていたんだけど、どうやら違うみたい。

  • Stop: VMをshutdown。仮想ブロックデバイス(EBSというらしい)はdetachされるが、内容は消去されない。EBS分の課金は継続
  • Terminate: VMをshutdown。EBSの内容も破棄。

なんかTerminateしたあともリストに残るのが気持ち悪い。再スタートできるぽい?なんかいつのまにかリストから消えてる・・・!こわい

これで、データはおいときたいけど起動してなくていいよというときに、課金されないで済む。

SSH keyの取り扱い

X509のpemがわたされてビビった。これでもssh接続いけるのね。

VMWare player 4.0.2 on Arch Linux 3.2 kernel

VMWare本家インストーラからインストール

3.2用パッチあて

curl -O http://weltall.heliohost.org/wordpress/wp-content/uploads/2012/01/vmware802fixlinux320.tar.gz
tar -xvf vmware802fixlinux320.tar.gz
./patch-modules_3.2.0.sh

init scriptのりんく

sudo ln -s /etc/init.d/vmware /etc/rc.d/vmware
rc.confのDAEMONSに追記

initscriptが/sbin/lsmodを参照するがArch Linuxはへんなぱすにある

cd /sbin
sudo ln -s `which lsmod`
sudo ln -s `which insmod`
sudo ln -s `which rmmod`
sudo ln -s `which modinfo`