Making Red Hat's SPICE work on Ubuntu Karmic

February


From the SPICE manual:

5.2 Control hot keys
Shift + F11
Toggle full-screen / window mode
Shift + F12
Release the cursor if captured in window

  1. Preparatory measures

    On the default LWP running Ubuntu Karmic, we had to install a few extra packages...

    apt-get install autoconf automake libtool liblog4cpp5-dev libogg-dev libavcodec-dev libavutil-dev libasound2-dev libssl-dev libgcrypt11-dev libsdl1.2-dev

  2. Fetching the sources

    Browse the spice-space and fetch the sources:

    wget http://www.spice-space.org/download/qpixman-0.13.3-git20090127.tar.bz2
    wget http://www.spice-space.org/download/qcairo-1.8.7.1-git74d6b5.tar.bz2
    wget http://www.spice-space.org/download/spice_0_4.tar.bz2
    wget http://xorg.freedesktop.org/releases/individual/driver/xf86-video-qxl-0.0.12.tar.gz

    Also fetch:

    wget http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz

    ... and build/install it.

  3. Building

    Untar them all, and in each directory (in the order above) run:

    ./autogen.sh
    make
    sudo make install

  4. Updating ld.so.conf

    sudo ldconfig -v

  5. Editing xorg.conf

    Create a fresh xorg.conf by stopping the running X (if any), and doing

    Xorg -configure
    sudo cp xorg.conf.new /etc/X11/xorg.conf

    Then according to Configuring Red Hat Enterprise Linux 5.4 virtual machines to use SPICE (thanks for the pointer, Frank Weyns), edit xorg.conf:

    <snip>
    Section "InputDevice"
    Identifier  "Mouse0"
    #       Driver      "mouse" -JB 20100319
    Driver      "void"
    #       Option      "Protocol" "auto"  -JB 20100319
    #       Option      "Device" "/dev/input/mice"  -JB 20100319
    #       Option      "ZAxisMapping" "4 5 6 7"  -JB 20100319
    EndSection
    <snip>
    Section "Device"
    Identifier  "Card0"
    #       Driver      "fbdev"   -JB 20100319
    Driver      "qxl"
    VendorName  "Red Hat, Inc."
    BoardName   "Unknown Board"
    BusID       "PCI:0:3:0"
    EndSection
    <snip>
          

  6. Building the qxl driver

    wget http://xorg.freedesktop.org/releases/individual/driver/xf86-video-qxl-0.0.12.tar.gz
    tar zxf xf86-video-qxl-0.0.12.tar.gz
    cd xf86-video-qxl-0.0.12
    sudo apt-get install -y xorg-dev
    sudo apt-get remove -s xserver-xorg-video-ati xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo
    sudo apt-get remove nvidia-173-modaliases nvidia-185-kernel-source nvidia-185-libvdpau nvidia-185-modaliases nvidia-96-modaliases nvidia-common nvidia-glx-185 nvidia-settings
    ./configure --libdir=/usr/lib64 --prefix=/usr
    make
    sudo make install

  7. Trying the driver

    service kdm stop
    service kdm start
    sudo tail -30 /var/log/Xorg.0.log
    (II) qxl(0): Compression level 0, log level 0
    (II) qxl(0): Currently using mode #-1, list at 0x34
    (II) qxl(0): 14357 io pages at 0x0
    (II) qxl(0): 8294400 byte draw area at 0x3815b68
    (II) qxl(0): RAM header offset: 0x3ffeb68
    (II) qxl(0): Correct RAM signature 41525851
    (II) qxl(0): Monitor0: Using hsync range of 31.50-80.00 kHz
    (II) qxl(0): Monitor0: Using vrefresh range of 50.00-70.00 Hz
    (II) qxl(0): Clock range:  10.00 to 165.00 MHz
    (II) qxl(0): Not using default mode "640x350" (no mode of this name)
    (II) qxl(0): Not using default mode "320x175" (bad mode clock/interlace/doublescan)
    (II) qxl(0): Not using default mode "640x400" (no mode of this name)
    (II) qxl(0): Not using default mode "320x200" (bad mode clock/interlace/doublescan)
    (II) qxl(0): Not using default mode "720x400" (no mode of this name)
    (II) qxl(0): Not using default mode "360x200" (bad mode clock/interlace/doublescan)

    Backtrace:
    0: /usr/bin/X(xorg_backtrace+0x26) [0x4f00c6]
    1: /usr/bin/X(xf86SigHandler+0x41) [0x4852c1]
    2: /lib/libc.so.6 [0x7fb4fbbd2530]
    3: /usr/lib/xorg/modules/drivers//qxl_drv.so [0x7fb4fa449609]
    4: /usr/bin/X(xf86InitialCheckModeForDriver+0x20f) [0x4977bf]
    5: /usr/bin/X(xf86ValidateModes+0xf38) [0x499608]
    6: /usr/lib/xorg/modules/drivers//qxl_drv.so [0x7fb4fa44a53d]
    7: /usr/bin/X(InitOutput+0x507) [0x46f017]
    8: /usr/bin/X(main+0x1fe) [0x433ece]
    9: /lib/libc.so.6(__libc_start_main+0xfd) [0x7fb4fbbbdabd]
    10: /usr/bin/X [0x433509]
    Saw signal 11.  Server aborting.
    ddxSigGiveUp: Closing log

If Frederic isn't geting an asnwer, I figure won't get one either. Fetching the X driver from Git is even more shooting at a moving target, and it depends on later m4 macros that I have to install first. Judging from the Xorg logs, it may be a matter of fixing the xorg.conf. But my no-manual-X11-config-skills are a bit rusty. I call it a day.