#はじめに
- この記事ではpyreboxの基本的な使い方を紹介します。早くpyreboxでスクリプティングしたい気持ちもわかりますが、これを知らないと問題の切り分けが困難になるからです。
- 前回(pyrebox超入門1)を読んだ人向けです。
- 少し前回と被りますが、まとめておいたほうが便利だろうと思ったのでここにまとめておきます。
#1. 仮想マシンの管理
あとでご自分で調べるときはpyrebox ではなくqemuで検索したほうがいいかもしれません。この章の内容のほとんどはqemuの話です。(pyreboxはqemuをベースなのでqemuの使い方も必要だからです。)
##仮想マシンの新規作成
vmwareなどと違って、qemuはGUIから仮想マシンを作れません。(GUI化プロジェクトがpyreboxに対応しているか怪しいから。)
###仮想ハードディスクの作成
以下のようなコマンドを実行
$ ./pyrebox/qemu/qemu-img create -f qcow2 -o compat=0.10 images/example.qcow2 8G
qemuにはqemu-img
というコマンドがあり、これでハードディスクの管理を行うのですが、pyreboxから扱う仮想ハードディスクの作成には、pyrebox/qemu
ディレクトリにあるバイナリを使用する必要があるようです。ハードディスク作成の具体的構文は以下の通り。
pyrebox/qemu/qemu-img create [-f fmt] [-o options] filename [size]
-
-f
がフォーマットの指定(qcow2がおすすめ) -
-b
でファイルを指定すると、指定されたファイルからの差分のみが記録されるようになります。 -
-o
でオプション設定。compat=0.10
は、qcow2形式のバージョン指定らしいです。
##設定ファイル作成
ここはpyrebox独特の話です。pyreboxの設定ファイルは、pyrebox
ディレクトリ直下にpyrebox.conf
という名前で置かなくてはなりません。これはすべての仮想マシンで共通です。(プロファイルの使い分けについては次の節で述べます。)
##起動スクリプト作成
pyrebox超入門1を読んだ方ならご存知の通りpyreboxで仮想マシンを起動するのには非常に長いコマンドを打たなくてはなりません。複数の仮想マシンを使い分けるとなるとpyrebox.conf(前述)もいちいち入れ替えなくてはならず非効率的です。そこで起動スクリプトの出番です。各仮想マシンのための起動スクリプトは以下の手順で作成します。
###準備その1. 設定ファイルの移動
まずはその仮想マシンで使いたいpyrebox.conf
を別のファイル名にコピーしてください。この例ではpyrebox.conf.centos_x86_64
としています。
$ cp pyrebox.conf pyrebox.conf.centos_x86_64
###準備その2.とりあえずひな形をコピーしてくる。
pyrebox/start_x86_64.sh
というファイルに公式の用意したひな形があるのでそれをコピーしてきます。
$ cp start_x86_64.sh start_centos_x86_64.sh
このファイルは以下のような内容のファイルです。
#!/bin/bash
if [ -z "$2" ]
then
snapshot=""
else
snapshot="-loadvm $2"
fi
cp pyrebox.conf.example pyrebox.conf
./pyrebox-x86_64 -monitor stdio -m 512 -usb -drive file=$1,index=0,media=disk,format=qcow2,cache=unsafe -vnc 127.0.0.1:0 ${snapshot}
このスクリプトの動作は、例えば ./start_x86_64.sh images/centos.qcow2 4
とすると、
- まずpyrebox.conf.example を pyrebox.confにコピーします。(これによって複数のpyrebox.confを使い分けられます。)
- 次にpyrebox-x86_64で第一引数に指定された仮想ハードディスク(この場合
images/centos.qcow2
)のスナップショット(後述)4番に復元して起動します。
これが全く分からない場合シェルスクリプトを少しだけでも(if文だけでも)勉強してください。
###準備その3.各仮想マシン向けにコピーしたファイルを編集する。
10行目のpyrebox.conf.example
を準備1で作ったファイル名
に書き換えます。さっき使った例では、
cp pyrebox.conf.example pyrebox.conf
-> cp pyrebox.conf.centos_x86_64 pyrebox.conf
となります。
次に、11行目 ./pyrebox-x86_64 -monitor stdio -m 5(以下略)
を必要に応じて書き換えます。具体的には、
- メモリを変更したい場合、
-m "メガバイト単位でのメモリ数"
等です。(この行の詳しい説明は前回pyrebox超入門1)を参照してください。)
###起動方法
`./start_centos_x86_64 images/centos.qcow2 2" などとして起動します。
vncserverが127.0.0.1に立っているので、127.0.0.1にvncクライアントで接続すればOKです。
##ハードディスクの管理
###容量の拡大
pyrebox/images/exampledisk.qcow2
を8GBにするなら以下のように打ちます。
$ cd pyrebox
$ ./qemu/qemu-img resize images/exapmledisk.qcow2 8G`
現時点で容量を小さくするのは結構骨らしいので注意してください。
###別の形式に変換
vmdkにするなら以下のようにします。
$ cd pyrebox
$ ./qemu/qemu-img convert -O vmdk [入力ファイル].qcow2 [出力先].vmdk`
#2. qemu monitor, pyrebox shell の使い方
###qemu monitor, pyrebox shellとは
qemu monitor とはqemuの提供する仮想マシンのコントロールパネルみたいなものです。VMwareやVboxをクリックしたときに初めに出てくる管理画面みたいなもんです。本家qemuは有志がGUIを提供しているようですが、pyreboxには対応していないのでCUIで操作することになります。pyrebox shell はqemu monitor上で動作するpyreboxのインターフェイスの一つです。
###qemu monitor の基本的コマンド
pyreboxに-monitor stdio オプションを付けるとvm起動後に(qemu)と書かれたプロンプトが出るはずです。これがqemu monitor です。(前述した起動スクリプトを使っているなら勝手に出るはず。)代表的なコマンドだけ紹介しときます。
各コマンドの詳しい使い方はこちらを見て下さい。
コマンド | 効果 |
---|---|
savevm [名前] | [名前] で指定した名前のスナップショットを作る |
loadvm [名前] | [名前]で指定したスナップショットに復元する |
info [対象] | 指定した対象の情報を表示。snapshot, vnc, version, usb等 |
change [対象] | 指定した対象を変更 |
screendump [ファイル名] | スクリーンショットを保存 |
stop | 仮想マシンの一時停止 |
cont | 仮想マシンの実行再開 |
sh | pyrebox shell(後述)を起動 |
import_module [モジュール名] | pyreboxモジュールをインポート |
system_powerdown | シャットダウンします |
q / quit | qemu monitor から抜けます。 |
pyrebox超入門1から読んでくださっている方へ:ここで1回savevmでスナップショットをとっておいたほうがいいです。変なことになった後にリカバーするのものすごく面倒なので。
###pyrebox shell の基本的コマンド
qemu monitor でsh
と打つことで起動できます。ipythonっぽいです。詳しい使い方はこちらを見てくださいここでは代表的なコマンドだけ紹介します。
コマンド | 効果 |
---|---|
list_commands | コマンドの一覧を表示 |
list_vol_commands | volatility frameworkのコマンド一覧を表示 |
vol [コマンド] | volatility command を実行 |
q / quit | pyrebox shellを出ます |
今回はここまでです。次回はいよいよpyrebox scriptingについて書こうと思います。