トップページ -> 実践知識 -> クラウドコンピューティング -> Ubuntu で QEMU+KVM の仮想マシンに vnc や SPICE を使って接続する
[サイトマップへ]  

Ubuntu で QEMU+KVM の仮想マシンに vnc や SPICE を使って接続する

サイト構成 連絡先,業績 実践知識 コンピュータ 教材 サポートページ

QEMU+KVM で動く仮想マシンについて, vnc や SPICE を使って,デスクトップ仮想を行ってみます. そのためのソフトウエアのインストール、設定、テスト実行の方法を中心に説明する.

◆ この Web ページで行うこと:

Ubuntu で SPICE サーバ, SPICE 対応の QEMU+KVM のインストール

前準備

Linux で KVM を使ってみる」のページを参考に、 kvm, qemu, spice のインストールを行う。

最新版のSPICEを使いたい人のために,下に,ソースコードからビルドする手順を示している。 (ただし、自前でソースコードからビルドすると、libvirt との連携などで苦労する可能性が高いです。必要を感じたときのための参考情報として載せています).

以下、SPICE をソースコードからビルドしたいときの手順を示す.

◆ Ubuntu でのインストール手順の例を下に示す.

※ SPICE の Web ページ http://www.spice-space.org/

  1. 前提ソフトウエア

    sasl2 と celt バージョン 0.5.1 をインストール

     
    sudo apt-get install libsasl2-dev
    
    cd /tmp
    if [ ! -f celt-0.5.1.tar.gz ]l then 
      wget http://downloads.xiph.org/releases/celt/celt-0.5.1.tar.gz
    fi
    rm -rf celt-0.5.1
    tar -xvzof celt-0.5.1.tar.gz
    cd celt-0.5.1
    ./configure
    make
    rm -f /usr/local/lib/libcelt*
    rm -f /usr/local/include/celt/* 
    sudo make install
    

  2. spice-protocol と spice サーバ
     
    cd /tmp
    if [ ! -f spice-0.10.1.tar.bz2 ]; then 
      wget http://www.spice-space.org/download/releases/spice-protocol-0.10.1.tar.bz2
    fi
    rm -rf spice-protocol-0.10.1
    tar -xvjof spice-protocol-0.10.1.tar.bz2
    cd spice-protocol-0.10.1
    ./configure
    make 
    sudo make install
    
    cd /tmp
    if [ ! -f spice-0.10.1.tar.bz2 ]; then 
      wget http://www.spice-space.org/download/releases/spice-0.10.1.tar.bz2 
    fi
    rm -rf spice-0.10.1
    tar -xvjof spice-0.10.1.tar.bz2 
    cd spice-0.10.1
    cat server/snd_worker.c | sed 's/celt051/celt/g' > /tmp/snd_worker.c.$$
    cp /tmp/snd_worker.c.$$ server/snd_worker.c
    cat client/playback_channel.cpp | sed 's/celt051/celt/g' > /tmp/playback_channel.cpp.$$
    cp /tmp/playback_channel.cpp.$$ client/playback_channel.cpp
    cat client/record_channel.cpp | sed 's/celt051/celt/g' > /tmp/record_channel.cpp.$$
    cp /tmp/record_channel.cpp.$$ client/record_channel.cpp
    cat client/audio_channels.h | sed 's/celt051/celt/g' > /tmp/audio_channels.h.$$
    cp /tmp/audio_channels.h.$$ client/audio_channels.h
    CELT051_CFLAGS="-I/usr/local/include" CELT051_LIBS="-lcelt" ./configure  --enable-client 
    make
    sudo make install
    

  3. (オプション)spice-gtk

    これはクライアント・ソフトウエアの1つ. 下記の手順で,/usr/local/bin/spicy などがインストールされる

     
    cd /tmp
    if [ ! -f spice-gtk-0.11.tar.bz2 ]; then 
      wget http://spice-space.org/download/gtk/spice-gtk-0.11.tar.bz2
    fi
    rm -rf spice-gtk-0.11
    tar -xvjof spice-gtk-0.11.tar.bz2 
    cd spice-gtk-0.11
    cat gtk/channel-playback.c | sed 's/celt051/celt/g' > /tmp/playback_channel.c.$$
    cp /tmp/playback_channel.c.$$ gtk/channel-playback.c
    cat gtk/channel-record.c | sed 's/celt051/celt/g' > /tmp/record_channel.c.$$
    cp /tmp/record_channel.c.$$ gtk/channel-record.c
    CELT051_CFLAGS="-I/usr/local/include" CELT051_LIBS="-lcelt" ./configure  --enable-smartcard=no
    make
    sudo make install
    

Ubuntu で SPICE 対応の QEMU+KVM のインストール

※ Web ページ http://wiki.qemu.org/Main_Page

 
cd /tmp
if [ ! -f qemu-1.1.0-rc2.tar.bz2 ]; then
  wget http://wiki.qemu.org/download/qemu-1.1.0-rc2.tar.bz2
fi
rm -rf qemu-1.1.0-rc2
tar -xvjof /tmp/qemu-1.1.0-rc2.tar.bz2
cd qemu-1.1.0-rc2 
./configure --extra-cflags="-I/usr/local/include -I/usr/local/include/spice-server -I/usr/local/include/spice-1" --extra-ldflags="-L/usr/local/lib" --enable-kvm --enable-vnc --enable-vnc-sasl --enable-spice
make
sudo make install

試しに SPICE を使ってみる

サーバ側での操作

まず,サーバ側で次のように操作する

  1. カーネルモジュールの設定

    まず手動でカーネルモジュールの組み込みを行ってみる

     
    sudo modprobe kvm_intel
    sudo modprobe kvm
    lsmod | grep kvm
    kvm_ok
    

    うまく組み込めるようだったら、自動で組み込むように設定することにする。 /etc/modules を編集し、

     
    kvm_intel
    kvm
    

    の2行を追加する

  2. サーバの起動

    <ここでの設定内容>

    <要点>

    要点は, パッケージでインストールしたときは /usr/bin/qemu-system-x86_64-spice, /usr/bin/qemu-system-i386-spice を使う。 自前でビルドしたときは、 /usr/local/bin/qemu-system-x86_64, /usr/local/bin/qemu-system-i386 を使う.

     
    cd /tmp
    if [ -x /usr/local/bin/qemu-img ]; then
      export QEMU_IMG=/usr/local/bin/qemu-img 
    else
      export QEMU_IMG=/usr/bin/qemu-img 
    fi 
    ${QEMU_IMG} create -f qcow2 /home/hdd.img 80G .
    
    if [ `arch` = 'i686' ]; then
      if [ -x /usr/local/bin/qemu-system-i386 ]; then
        export QEMU_SYSTEM=/usr/local/bin/qemu-system-i386   
        export QEMU_ISOFILE=/home/www/linux/ubuntu-12.04-desktop-i386.iso
      else
        export QEMU_SYSTEM=/usr/bin/qemu-system-i386-spice
        export QEMU_ISOFILE=/home/www/linux/ubuntu-12.04-desktop-i386.iso
      fi
    elif [ `arch` = 'x86_64' ]; then
      if [ -x /usr/local/bin/qemu-system-x86_64 ]; then
        export QEMU_SYSTEM=/usr/local/bin/qemu-system-x86_64
        export QEMU_ISOFILE=/home/www/linux/ubuntu-12.04-desktop-amd64.iso
      else
        export QEMU_SYSTEM=/usr/bin/qemu-system-x86_64-spice
        export QEMU_ISOFILE=/home/www/linux/ubuntu-12.04-desktop-amd64.iso
      fi
    fi
    ${QEMU_SYSTEM} -hda /home/hdd.img -m 2048 -cdrom ${QEMU_ISOFILE} -boot d -vga qxl --enable-kvm -usb -no-acpi -serial none -parallel none -vnc 127.0.0.1:0 -spice port=5930,password="hoge%123" 
    
    

    ◆ 実行結果の例

クライアント側での操作

次に,クライアント側では,次のようにして接続する

vnc クライアントは複数起動できる.vnc クライアントを複数と SPICE クライアントを1つ同時に起動できる.そのとき,デスクチップの画面は共有される.