由于ubuntu 12.04的QEMU是1.0版本的,QEMU在1.14以下的版本都不支持Spice访问,为了可以在ubuntu 12.04下使用spice访问虚拟机,通过spice源码的方式安装spice和QEMU源码的方法安装1.14以下的版本的QEMU,两者的结合可以使得我们可以使用spice访问虚拟机。在本文中,我们对源码安装的方式进行说明。
以下是安装步骤:
1)安装编译依赖包:
sudo apt-get install build-essential autoconf git-core libtool liblog4cpp5-dev libavcodec-dev libssl-dev xlibmesa-glu-dev libasound-dev libpng12-dev libfreetype6-dev libfontconfig1-dev libogg-dev libxrandr-dev kvm libgcrypt-dev libsdl-dev libnss3-dev libpixman-1-dev libxfixes-dev libjpeg8-dev libsasl2-dev python-pyparsing2)然后进入根目录,并创建spice的源码目录:
cd mkdir spice-sources cd spice-sources
3)安装Spice所需要的依赖软件:
A、安装libcacard,Spice用于支持智能卡和智能卡读卡器
git clone git://people.freedesktop.org/~alon/libcacard cd libcacard ./autogen.sh make sudo make install cd ..
B、安装Spcie协议头部
wget http://spice-space.org/download/releases/spice-protocol-0.8.0.tar.bz2 tar xjvf spice-protocol-0.8.0.tar.bz2 cd spice-protocol-0.8.0 mkdir m4 ./configure make sudo make install cd ..说明:这里的spice协议可以更新到最新的版本。
C、安装Celt,用于音频的低延时编解码
wget http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz tar xvzf celt-0.5.1.3.tar.gz cd celt-0.5.1.3/ ./configure make sudo make install cd ..
D、安装Spice和Spice客户端
wget http://spice-space.org/download/releases/spice-0.8.1.tar.bz2 tar xjvf spice-0.8.1.tar.bz2 cd spice-0.8.1 ./configure --enable-smartcard make sudo make install cd ..说明:可以使用更新的版本
4)安装Qemu,将并启用Spice
A、输出所需的环境变量
echo "export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}" >> ~/.bashrc source ~/.bashrcB、下载一个1.14版本一下的QEMU进行编译安装
wget http://download.savannah.gnu.org/releases/qemu/qemu-0.14.0.tar.gz tar xzvf qemu-0.14.0.tar.gz cd qemu-0.14.0 ./configure --enable-spice --enable-kvm --enable-io-thread --audio-drv-list=alsa,oss --enable-system make sudo make install
下载地址参考:
http://download.savannah.gnu.org/releases/qemu/
http://git.qemu.org/
C、拷贝一下BIOS文件,以便VM启用Spice功能
sudo cp pc-bios/vgabios-qxl.bin /usr/share/qemu/ sudo cp pc-bios/pxe-e1000.bin /usr/share/qemu/ cd ..
pxe-e1000.bin有可能是pxe-e1000.rom
D、此时,支持spice的qemu已经安装在/usr/local/bin/目录下,为了与原系统的qemu区分和方便调用,我们将编译后的QEMU执行文件改一个新的名字:
cd /usr/local/bin sudo cp qemu qemu-spice sudo cp qemu-system-x86_64 qemu-kvm-spice
此时就可以使用qemu-spice和qemu-kvm-spcie命令启动虚拟机,并通过spicec进行客户端接入了:
5)启动虚拟机
qemu-spice -spice port=5930,disable-ticketing -drive file=/path/to/image -vga qxl -device AC97 -usbdevice tablet -m 1024 -enable-kvm -net nic -net user参数说明:
qxl graphics (you need this for spice to be of any use)
an AC97 sound device
a tablet input device (using a virtualized tablet generally gives better results than a virtualized mouse)
1024M of memory available
KVM support enabled (you really want this, as the guest is quite slow otherwise)
a user-controllable virtualized nic
如果使用virtio,参数修改为:
-drive file=/path/to/image,if=virtio -net nic,model=virtio
本人使用的启动虚拟机的命令如下:
qemu-kvm-spice -spice port=5930,disable-ticketing -drive file=win7-64-finish-3.qcow2,if=virtio,format=qcow2 -vga qxl -usbdevice tablet -m 2048 -enable-kvm -net nic -net user -boot c
网上参考的命令如下:
kvm -smp 4 -m 1516 -drive file=/yourpath/xp.img,cache=writeback,if=virtio -boot c -vga qxl --full-screen -net nic,model=virtio,macaddr=28-55-26-66-58-D6 -net user -localtime -soundhw ac97 -usb -usbdevice tablet -spice port=3636,disable-ticketing
说明:如果启动win7虚拟机,内存至少为2GB
6)使用spice的客户端进行访问
spicec -h <server hostname> -p <port number>
7)参考文档
http://docs.cslabs.clarkson.edu/wiki/SPICE