*kvm [#e15ab66e]

**kvmとは [#w403e39f]
Linux上で仮想化環境を利用するためのソフトウェア。
KVMはIntel社のIntel VTやAMD社のAMD-Vなどマイクロプロセッサの提供する仮想化支援機能を利用し、LinuxカーネルをVMMとして動作させる。その上で複数台のコンピュータを仮想的に動作させることができ、Linux自体を含む様々なOSを並列に動作させることができる。
**kvmでの差分ディスク管理 [#v7c30a30]

以下のコマンドを実行することでxmlファイルを作成することができる。

 % /usr/bin/qemu-kvm -name VMNAME -hda /media/fcs/student/e~/e~/IMAGENAME.qcow2 -m 2048

- "VMNAME"がVM名、"IMAGENAME"がIMAGEファイル名となる。
-"-m" オプションでメモリ容量の設定。この場合は2048MB
-"-hda" オプションでストレージとして与えるファイルの指定。

作成したファイルには必要に応じて以下の変更を加える。
-type archの値を'i686'からx86_64に。
-<driver name='qemu' type='qcow2'/>を<disk>〜</disk>間に追加。
-<graphics type='vnc' port='5901' autoport='no' listen=''/>を<graphics type='vnc' port='5901' autoport='yes' listen='0.0.0.0'/>に変更。

既存の xml ファイルをコピーして、直接 xml を書き換えてしまってもよい。
書き換える必要がある部分は、name,uuid,source file,mac address の4つ。
name にはVM名、uuid には uuidgen コマンドで生成されたもの、source file には使用するファイルのパス、mac address には他と被らないように適当な mac address を入れればいい。
***ethernetの設定 [#oba159b2]
ブリッジ接続の場合は、作成したxmlファイルにさらに変更を咥えなければならない。
-interface typeの値を'ethernet'から'bridge'に変更。

***イメージファイルの作成 [#z0597e95]
QCOW2形式なら、最初に全容量を確保しないのでスペースを広く取らない。また、Copy on Writeが使えるのでイメージ本体には書き込まずに差分ファイルデータに書き込み、差分で管理することができる。
以下のコマンドを実行することでQCOW形式のイメージファイルが作成される。
 % qemu-img create -b BASEIMAGE -f qcow2 IMAGE
- "-b"オプションでbase imageを指定しておくことで作成したイメージファイルには差分のみが書き込まれるようになる。BASEIMAGEにベースとするファイルのパスを指定する。
- "-f"オプションでフォーマットの指定。ここでは前述したようにQCOW2。
- IMAGEは作成するイメージファイル名。

***xmlファイルの登録 [#zdc50f41]
作成したxmlファイルをvirshに登録する。このとき既にイメージファイルを作成しておく必要がある。登録は以下のコマンドを実行することで行える。

 % sudo virsh define XMLFILE

XMLFILEに登録するファイルのパスを指定する。また、登録されたxmlファイルは/etc/libvirt/qemu 以下にコピーされて管理されるため、登録後に元のxmlファイルに変更を加えても反映されない。編集方法については次の項にて示す。

***virsh [#i6dfea2e]
virshは他にも以下のような用途がある。
-xmlファイルの編集
 % sudo virsh edit VMNAME
登録したxmlファイルの編集を行う。前述したとおり、これらのファイルは/etc/libvirt/qemu 以下に存在する。

-起動
 % sudo virsh start VMNAME
指定したVMを起動する。

-一覧の確認
 % sudo virsh list --all
登録したVMの一覧を表示する。

-VNCポートの確認
 % sudo virsh vncdisplay VMNAME
指定したVMのVNCポートを表示する。

-xmlファイルの確認
 % sudo virsh dumpxml VMNAME
指定したVMのxmlファイルの内容を表示する。

*** kvm で linux kernel を debug する [#z5f06e7c]

http://okinawadevops.github.io/2014/10/18/yosukeota/

ie-virsh define 01  で指定されたディレクトリに qcow2 のイメージを置く
ie-virsh start 01 で起動する
ie-virsh vncdisplay 01 で表示された番号に5900を足したものがVNCポートになる
defineのときに表示されたパスワードでVNCに接続する
root でログインしてgrubを書き換えてコンソールログインできるようにする
    /etc/default/grub を編集する
ie-virsh console 01 
あるいはipv6でsshで接続する

https://fedoraproject.org/wiki/Building_a_custom_kernel を見てkernelをコンパイルする
コンパイルしたディレクトリを手元にコピーする

ie-virsh destroy 01 , ie-virsh undefine 01 で一度消してからie-virsh gdb-define 01 でデバッグ用にVMを定義する
ie-virsh start 01 で起動する
コピーしたソースディレクトリ上に移動し
    gdb vnlinux
とする
ie-virsh dumpxml 01 でデバッグポートを確認してgdbの中で
    target remote :01234
01234はデバッグポート

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS