`

SPICE在ubuntu上的实现

    博客分类:
  • VDI
阅读更多
SPICE在ubuntu上的实现

SPICE的安装过程,参照:http://docs.cslabs.clarkson.edu/wiki/SPICE的介绍,依赖包中。应该另外安装libjpeg-dev包。
Overview

SPICE is a protocol that allows for high-quality virtual machine access using VDI over a network. It could be used as a communication layer between thin clients and their associated virtualized operating systems, or it could be used as it is in the COSI lab for normal machines to have quick access to a variety of different operating systems, or in any other configuration where it is better for a virtual machine to be running remotely.
SPICE on Ubuntu

As SPICE is under development by Red Hat, binary packages are rpm-based. However, it is possible to run both the SPICE server and client on 64-bit Ubuntu machines, if they are compiled from source. There are several dependencies that must be installed before SPICE can be compiled; dependencies not already available in the standard Ubuntu repositories must also be compiled from source. Please follow the instructions below to compile the SPICE server and client.

These instructions are for installing SPICE 0.6 on 64-bit Ubuntu 10.04. It is not possible to install a SPICE server on any 32-bit system due to its reliance on 64-bit atomic operations, and the process for installing just the client on 32-bit systems no longer appears to be supported.

Please direct comments or questions about this guide to Mark Platek.
Initial set-up

Some standard tools are required:

sudo apt-get install build-essential autoconf git-core

Also, install some dependencies from the repositories:

sudo apt-get install 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

Finally, create a directory to compile from and descend into it:

mkdir spice-sources
cd spice-sources

Installing Dependencies
Spice protocol headers

The first dependency to install is the spice protocol headers.

wget http://spice-space.org/download/releases/spice-protocol-0.6.0.tar.gz
tar xvf spice-protocol-0.6.0.tar.gz
cd spice-protocol-0.6.0/
./configure
make
sudo make install
cd ..

qpixman and pixman

SPICE requires a special version of pixman unavailable in the Ubuntu repositories. It is available from the SPICE homepage.

wget http://spice-space.org/download/stable/qpixman-0.13.3-git20090127.tar.bz2
tar xvf qpixman-0.13.3-git20090127.tar.bz2
cd qpixman-0.13.3-git20090127/
./autogen.sh -includedir=/usr/include --libdir=/usr/lib64
make
sudo make install
cd ..

We must also install a newer version of the normal pixman library, available from the SPICE project's git repository.

git clone git://anongit.freedesktop.org/pixman
cd pixman/
./autogen.sh --includedir=/usr/include --libdir=/usr/lib64
make
sudo make install
cd ..

celt

SPICE requires a specific version of the celt audio codec (0.5.1.3). Since it is unavailable in the Ubuntu repositories, it must also be compiled.

wget http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz
tar xvf celt-0.5.1.3.tar.gz
cd celt-0.5.1.3/
./configure --includedir=/usr/include --libdir=/usr/lib64
make
sudo make install
cd ..

qcairo

SPICE requires a modified version of the cairo graphics library, named qcairo. Sources are available on the spice homepage.

wget http://spice-space.org/download/stable/qcairo-1.8.7.1-git74d6b5.tar.bz2
tar xvf qcairo-1.8.7.1-git74d6b5.tar.bz2
cd qcairo-1.8.7.1-git74d6b5/
./autogen.sh --disable-xlib --disable-ps --disable-pdf --disable-svg --includedir=/usr/include --libdir=/usr/lib64
make
sudo make install
cd ..

Installing SPICE
libspice and the SPICE client

Finally, all of the dependencies are satisfied and we can install the SPICE server. It comes in two parts: one part is libspice (we will later compile a new version of qemu with spice support to use it), and the other is the spice client. They are both installed at the same time.

NOTE: This section can only be performed on a 64-bit system! Client-only installation on a 32-bit system no longer appears to be supported.

wget http://spice-space.org/download/releases/spice-0.6.0.tar.gz
tar xf spice-0.6.0.tar.gz
cd spice-0.6.0/
./configure --includedir=/usr/include --libdir=/usr/lib64
make
sudo make install
cd ..

"Spiced" QEMU

Support for SPICE 0.6 is currently included in a late 0.13 release of QEMU, we will install that version now. We will be installing this "spiced" QEMU alongside the system QEMU, so make sure you perform the installation in some permanent location. I chose /opt/qemu-spice, but you can do it wherever you want.

Note that we must switch to a branch of the qemu git tree - v19 is the latest branch at time of writing (2010-09-23). According to theSPICE documentation the branch number is in flux and is subject to change.

This whole subsection should be done as root, to avoid exposing /opt to ordinary users. If you don't want to work as root, prepend each command with sudo.

cd /opt
mkdir qemu-spice
cd qemu-spice/
git clone git://git.freedesktop.org/git/spice/qemu
cd qemu/
git checkout -b spice.v19 origin/spice.v19

Now we have to change the configure script to not set the -Werror CFLAG. This is dangerous, but I couldn't get qemu to compile without forcing the configure script to not set it. Open the configure script in your favorite editor and find the part that looks like:

if test "$werror" = "yes" ; then
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
fi

Change it to remove the -Werror, like so:

if test "$werror" = "yes" ; then
    QEMU_CFLAGS="$QEMU_CFLAGS"
fi

Now, run the configure script and make QEMU. Please note that compiling QEMU in this way will enable it to emulate only a 64-bit host; add extra targets if you need other architectures.

./configure --target-list=x86_64-softmmu --enable-spice --enable-io-thread
make

QEMU needs certain BIOS files to be able to start SPICE VMs, so we have to copy them to a location QEMU expects to find them.

cp pc-bios/vgabios-qxl.bin /usr/share/qemu/
cp pc-bios/pxe-e1000.bin /usr/share/qemu/

Spiced QEMU is now available, the executable is located at /opt/qemu-spice/qemu/x86_64-softmmu/qemu-system-x86_64. Make a symlink for convenient invocation:

ln -s /opt/qemu-spice/qemu/x86_64-softmmu/qemu-system-x86_64 /usr/sbin/qemu-spice

And that's it! You can invoke qemu-spice with the argument "-spice" to start a SPICE server. As soon as QEMU 0.14 is released, however, you can use the QEMU package available in the Ubuntu repositories instead, since it will include SPICE support by default.
Appendix: Ubuntu SPICE PPA

In past revisions of this page, Adam J. Lincoln's PPA containing debian packages for qcairo, qpixman, etc. and the spice client was mentioned. It no longer appears to be actively maintained, and almost certainly carries an old, incompatible version of SPICE (0.4). If you wish to use SPICE, please compile it from source using the method described above
How To Use SPICE
Client

To invoke the spice client, use the command

spicec -h <server hostname> -p <port number>

Server

Invoking the spice server is rather more complex than the client, since you have to set the parameters of the virtualized guest. For example,

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

will start a SPICE server VM on port 5930 from the image at the supplied path, with:

    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

It is also possible to use virtio if your system supports it; doing so will lead to significant performance gains for the guest. Modify the-drive argument like so:

-drive file=/path/to/image,if=virtio

And, modify the -net argument like so:

-net nic,model=virtio

When a SPICE server is started, its virtual guest boots and at any point until the guest is shut down a client can connect to and interact with the guest.
Special instructions for using a Windows guest

SPICE aims to provide a high-quality interface between the remote client and the guest VM. To this end, a SPICE-specific Windows driver has been written to enable smooth operation of the mouse, eliminating the "choppiness" that has before been a problem when running an XP guest. When you boot the SPICE Windows guest, follow these instructions to enable it. Note that you must start the guest with option -vga qxl in order for the mouse driver to work.
分享到:
评论

相关推荐

    spice-protocol,spice-gtk从0编译说明文档并实现桌面虚拟化访问

    在本文档中,我们将深入探讨Spice协议的编译环境搭建以及使用Spice-GTK实现桌面虚拟化访问。 **1. Spice 协议详解** Spice协议由多种组件构成,包括代理、客户端和服务器端。它支持多种传输层协议,如TCP和TLS,...

    QEMU+SPICE+USBredir详细编译步骤

    本文将详细介绍如何在 Linux 系统(包括 CentOS、Ubuntu 等)下编译 QEMU 和 SPICE 协议,使其支持 USB 重定向。 一、编译 libusb libusb 是一个开源的 USB 库,提供了访问 USB 设备的功能。要编译 libusb,首先...

    xen虚拟机对spice的支持

    在虚拟化技术领域,Xen是一款非常知名的开源虚拟机软件,它允许在同一台物理服务器上运行多个操作系统实例,实现资源的高效利用。Xen 4.4版本引入了一个重要的更新,即对SPICE(Simple Protocol for Independent ...

    ubuntu下mingw32交叉编译环境搭建

    如果在 64 位的 Ubuntu 系统上安装了 32 位的 Mingw32,可能会遇到一些与库文件不兼容的问题。因此,我们需要为系统安装 32 位的支持库。 1. **安装 32 位支持库**: ```bash sudo apt install libc6:i386 sudo ...

    Ubuntu-for-Arm根文件系统制作.doc

    Ubuntu-for-Arm根文件系统制作 Ubuntu-for-Arm 根文件系统制作是指使用 rootstock 工具创建一个 Ubuntu 根文件系统的过程...同时,使用 qemu 模拟器和 SPICE 软件可以在仿真环境中访问文件系统,并实现远程桌面协议。

    Linux系统下的虚拟桌面显示协议实现.pdf

    目前Linux主流发行版本如Centos、Ubuntu使用X.Org基金会的开源实现。 2. X Protocol:显示协议,目前使用的是X第11个版本的协议,因此也经常称为X11协议。 3. X Client:图形客户端,通过X11协议和服务器端交互。 ...

    App-DuckPAN:App-DuckPAN 的只读发布历史

    我们还在较旧和较新的 Ubuntu 版本(例如 Ubuntu 10.04、12.10 和 13.04)上成功安装和运行 DuckPAN。 开发人员还成功地在其他 Linux 发行版(例如 Arch、Debian)和 Mac OS X 10.8 及更高版本上运行 Du

    qemu-stable4.0源码包

    6. **图形支持**:通过VGA passthrough或SPICE协议,QEMU可以提供高性能的3D图形支持,使虚拟机上的图形密集型应用运行更加流畅。 现在,我们来探讨如何编译和安装QEMU 4.0源码包: 1. **环境准备**:确保你的...

    KVM的基本命令.zip

    在Ubuntu或Debian上,可以通过以下命令安装KVM: ``` sudo apt-get update sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils ``` 在CentOS或RHEL上,使用: ``` sudo yum install...

    【IBM通用方案】IBM_VDSB_桌面虚拟化解决方案.docx

    - **功能**: 在单个物理服务器上生成多个虚拟桌面,每个桌面具备与传统PC相同的性能和功能。 ##### 3. VerdeConsole - **简介**: 一个用于管理虚拟桌面的中心控制软件。 - **功能**: - 管理中心虚拟机。 - 管理...

Global site tag (gtag.js) - Google Analytics