私が仮想マシンゲストを作って開発を行う手順 (手作業メイン)

仮想マシンゲストでプログラムのテストを行う際の、私なりの手順です。
良いやり方とは言えるわけではありませんが、気楽に素のOS環境をテストすることができます。
何かの参考になれば幸いです。

GIMPをビルド中のVirtualBoxゲスト


自作のGIMPの自動ビルドスクリプトを実行したところ、うまく行かないことが判明。
原因は新機能の画像メタデータ編集に必要なlibgexiv2-devパッケージの不足でした。

対応作業自体はすぐに終わりました。
GIMP自体のビルドスクリプトが必要なパッケージを教えてくれましたし、自作スクリプト側ではインストールするパッケージを一つ増やしただけなので、変更は1行のみでした。

とはいえ、一応githubで公開しているスクリプトなので、事前チェックをするに越したことはありません。
(それも、できれば素のOS上であることが好ましい)。
そこで、いつもの通り仮想マシンで実験環境を作成してテストを行いました。
今回はその手順を紹介します。

実験用環境をゲストに作成する方法としては、一時期Chefなどのスクリプトが話題になりましたが、私はまだその粋に達していないようです。
(数が少ないので手作業で済ませてしまっている)。


ゲストOSのインストール

仮想マシンを作成し、OSをインストールします。
インストール終了した時点で、システムのスナップショットを取ります。
(ちなみに今回使用したUbuntu13.10環境は、ここまで準備してありました)。
システムアップデートとGuestAdditionの導入を行います。
特にGuestAdditionは、実権環境で使用するVirtualBoxの共有フォルダ機能を使用するために、必ず導入します。


テスト用ゲストの基礎を作成

テスト手順は多くの場合、ホスト側で途中まで開発したソースコードを、ゲスト環境に移して試し、公開できるところまで持っていく流れになります。
そこで私は、VirtualBoxの共有フォルダを使って、ホストとゲストのソースコード共有を行っています。
ホスト側の共有フォルダのパスはテストごとに違いますが、共有フォルダを使うためにゲストで行うグループ設定はいつも変わらないので、こちらを先に済ませておきます。
sudo gpasswd -a username vboxsf

また、ターミナルは必ず使うことになるので、
gnome-session-properties
にて、ゲストOS起動時にgnome-terminalが自動起動するようにします。

本当はGitとVimくらいは導入しておきたいのですが、実験環境としては可能な限り素に近いほうが良いので、必要なパッケージはその都度導入することにしています。
シャットダウンして、ここまでのスナップショットを取ります。


使い捨てゲストをリンククローンで作成

テスト用のゲストを、リンククローンで作成します。
(基本的には実験環境を作り捨てます。)
コツ:このとき、スナップショット(S)の管理「最新の状態」ではなく、スナップショットからクローンを作成するようにします(対象スナップショットを右クリックします)。
最新の状態からリンククローンを作ると、「リンククローン作成段階」をVirtualBoxが勝手にスナップショットにしてしまうからです。
ゲスト一覧から右クリックでクローンを作成すると、最新の状態からのコピーになってしまいます。
スナップショット管理画面


VirtualBoxのゲスト設定にて、共有フォルダを指定します。
この時、「自動マウント」は有効にします。
「読み込み専用」オプションもありますが、こちらは仮想マシン内で編集したくなった場合に不便なので、特に危険な場合以外では、あまり使っていません。

無事にGuest Additionの導入とグループ設定ができていれば、実験環境として使用可能です。
再起動して、共有ディレクトリの内部が閲覧できることを確認します。
ゲストOSで立ち上がったターミナル上で、
ls /media
すると、 sf_***といった名前で、共有フォルダが出来ているはずです。


以上、簡単ですが。

MyPaint1.1+のGitリポジトリ版をUbuntu13.10で試す


MyPaintの現状が気になったので、Gitリポジトリのソースをビルドして試すことにしました。
実行環境はUbuntu13.10です。

2014年/Ubuntu14.10版はこちら

MyPaint1.1 +Gitリポジトリ版

ビルド

基本的には公式サイトのGitリポジトリ取得からインストール手順および、付属のREADMEに従うだけです。

ビルドに必要なパッケージを導入します。
sudo apt-get install g++ python-dev python-numpy libgtk-3-dev python-gi-dev gir1.2-gtk-3.0 python-gi-cairo swig scons gettext libpng12-dev liblcms2-dev libjson0-dev

コンパイルと実行は以下のように。
(インストールする必要はないので、そのまま実行します。)
scons
./mypaint

雑感

描画エリア全体のプレビュー機能がついています。また、シングルウィンドウモードがデフォルトになったようです。

VirtualBox 4.3をUbuntu13.10にインストール

VirtualBox 4.3がリリースされたので、早速導入してみました。
 実行環境はUbuntu 13.10 AMD64 リリース版です。

2013/12 追記:追記時点で、VirtualBox4.3.4をホストUbuntu13.10、ゲスト13.10および12.04.3にて、ゲスト環境上でコンパイル(WINE)を行うと、ゲストが落ちます。ホストを巻き込んで落ちることもありました。通常使用は今のところ問題ないようなので、あまりゲストに負荷をかけないようにしたほうが良さそうです。


BIOS画面が黒くなったVirtualBox4.3

VirtualBoxのインストール

いつものvirtualbox.orgのダウンロードサイトから、Ubuntu13.04版のdebパッケージをダウンロードします。
(2013/10/16には翌日にリリースを控えた13.10版のパッケージがまだ存在しない。)
(2013/12/04 追記:未だに13.10版のパッケージが存在しない。)

virtualbox-4.2など、他のバージョンがインストールされている場合、削除します。
sudo apt-get remove virtualbox-4.2 -y

Ubuntuのパッケージマネージャでインストールしても良いですが、私は結果がわかりやすいため、コマンドラインを使うことが多いです。
sudo dpkg -i virtualbox-4.3_4.3.0-89960~Ubuntu~raring_amd64.deb


ExtensionPack (USB2.0対応)のインストール

アップデートした状態で、USB2.0の有効なゲストを実行しようとすると、Virtualbox4.3のExtensionPackを要求されます。
「アップデートの確認」から最新版のExtensionPackをダウンロードできますが、ネットワーク操作のエラーによってダウンロードに失敗するので、直接ダウンロードしてインストールします。


ダウンロード実行のダイアログ


インストール成功時のダイアログ

 ExtensionPack導入後、いつもどおりホストを設定し、問題なくゲストOSを起動することができました。

雑感

BIOS画面が黒くなった他に、マウス統合機能サポートに関する通知が、ポップアップダイアログでなく上部の半透明なバーで通知されるようになっています。
(スクリーンショットを撮った時の挙動からすると、独立したダイアログがバーの形状で出てきているようでもあります。)



VirtualBoxの通知がバーによるものに変化

ゲストのUbuntu 13.10が起動している様子


ゲスト画面のスクリーンキャプチャ機能

また、ゲストウィンドウ下のアイコンが新しくなっています。
特に、カメラのようなアイコンはディスプレイキャプチャ機能です。
右クリックから、キャプチャ開始・停止および画質などの設定が可能です。
撮った動画ファイルは、デフォルトでゲストマシンの設定ファイルと同じディレクトリに格納されるようです。



ビデオキャプチャの設定画面
 残念ながら、設定せずに撮ったwebm動画は、TotemおよびVLCでうまく再生することができませんでした。
(VLCの場合、タイムライン表示と動画の画面位置がずれるものの、再生できる場合がある)

炬燵サーバを立てて絵チャットをはじめるまで (Ubuntu13.04 )

Ubuntu環境で絵チャットする場合、ブラウザ実装の絵チャットという選択肢もあるのですが、友人曰く「炬燵」がおすすめとのこと。
クライアントだけでなく、サーバもUbuntu環境で立てて、炬燵を使用してみました。

なお、本記事での環境はUbuntu13.10ですが、13.04でも動作確認しています。

炬燵サーバおよびクライアント実行の様子



炬燵本体は開発者様の公式サイトにて。

ポート閉鎖と開放

念のためポートを閉鎖し、炬燵チャットに必要な12300ポートだけ開放します。
当然、この作業をしなくても炬燵サーバは立てられますが、やっておいたほうが無難です。

 nmap localhost
 したら結構ポートが開いていたのでとりあえず閉鎖したい。


サイト様を参考にUbuntuのufwで閉鎖し、12300ポートを開放します。
まずufwファイヤウォールを有効化
sudo ufw enable
「ファイアウォールはアクティブかつシステムの起動時に有効化されます。」と表示されるので、念のためUbuntuを再起動。


全ポートをデフォルトで閉じる
sudo ufw default deny
炬燵が使うポートを開く
sudo ufw allow 12300

12300ポートだけ開いていることを確認。
sudo ufw status
以下のように出力されるはずです。
状態: アクティブ

To                         Action      From
--                         ------      ----
12300                      ALLOW       Anywhere
12300                      ALLOW       Anywhere (v6)


炬燵サーバの実行

Javaの動作環境を構築する必要があるのですが、どうやらUbuntu13.10には、
openJDK7のJRE (javaランタイム実行環境) が導入済みのようです。

サーバのjarファイルをダウンロードしてきて、ターミナルから実行します。
java -jar POS2Server.jar


パスワードは設定しておきましょう。
部屋名は適当に変えておきます。
それだけです。DDNSを設定する必要はありません。
「実行」をクリックすると、炬燵サーバがネットワークに公開されます。

炬燵クライアントの実行

サーバを実行したまま別にターミナルを立てて、クライアントのjarファイルを実行します。
 java -jar POS2Server.jar


Ubuntu環境で炬燵による絵チャット



クライアントに表示されるサーバ一覧の中から、自分で立てた炬燵サーバを選んでログインできれば成功です。

Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...