1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

東北大学 計算機科学研究会Advent Calendar 2017

Day 20

pyrebox超入門2 ~pyreboxの基本的使用法編~

Last updated at Posted at 2017-12-19

#はじめに

  • この記事では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

このファイルは以下のような内容のファイルです。

pyrebox/start_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について書こうと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?