[Crossfire-wiki] [Crossfire DokuWiki] page added: qemu

no-reply_wiki at metalforge.org no-reply_wiki at metalforge.org
Sat Dec 15 11:24:10 CST 2007


A page in your DokuWiki was added or changed. Here are the details:

Date        : 2007/12/15 11:24
User        : kbulgrien
Edit Summary: Created by moving content from user:kbulgrien

This page contains information how to use **qemu** to test **crossfire** on a virtual host.

  - See [[user:kbulgrien#Mandriva qemu setup for Crossfire testing|Mandriva qemu setup for Crossfire testing]] for instructions on setting a Mandriva virtual system.
  - Perform the [[user:kbulgrien#Crossfire development workspace setup|Crossfire development workspace setup]] to create  scripts and get Crossfire sources.
  - Once setup is complete, proceed to [[user:kbulgrien#Development and testing|Development and testing]] to get started on the fun stuff.

======Development and testing======

Choose a package to work on.  Processes are described for:

  * [[user:kbulgrien#Client|Client]]
  * [[user:kbulgrien#Server|Server]]

See the side bar for specific tasks.

=====Client=====

Boot the virtual machine and open a terminal session.



====Install client dependencies====

===X11 Client===

===GTK1 Client===

===GTK2/Libglade Client===

==--disable-metaserver2==

These are the minimum requirements:

  $ sudo urpmi libglade2.0_0-devel
  To satisfy dependencies, the following packages are going to be installed:
  glib-gettextize
  libatk1.0_0-devel
  libcairo2-devel
  libfontconfig1-devel
  libfreetype6-devel
  libgdk_pixbuf2.0_0-devel
  libglade2.0_0-devel
  libglib2.0_0-devel
  libgtk+2.0_0-devel
  libice6-devel
  libpango1.0_0-devel
  libpng3-devel
  libsm6-devel
  libx11_6-devel
  libxau6-devel
  libxcursor1-devel
  libxdmcp6-devel
  libxext6-devel
  libxfixes3-devel
  libxft2-devel
  libxi6-devel
  libxinerama1-devel
  libxml2-devel
  libxrandr2-devel
  libxrender1-devel
  x11-proto-devel
  zlib1-devel
  Proceed with the installation of the 27 packages? (48 MB) (Y/n) y



====Client configure====

To begin with freshly checked out sources, or to properly process recent modifications to **configure.in**, **configure.ac**, or **Makefile.am** files, a configuration process is invoked as follows:
 
  $ cd ~/svn/trunk/client
  $ bash ../../config.sh

Feel free to append build options as arguments to the config.sh command.  To find out about what options may be used, try the following command.  A few of the more interesting options are shown here.

  $ ./configure --help
  
  --disable-sound         Disable sound support default=implement sound support if supported libraries exist
  --disable-alsa9         Disable ALSA9 sound support default=use alsa9 sound support if alsa9 libraries exist
  --disable-alsa          Disable ALSA sound support default=use alsa sound support if alsa libraries exist
  --disable-gtkv1         Do not make original gtk client default=make it if available
  --disable-gtkv2         Do not make gtk-v2 client default=make it if available
  --enable-cfgtk2         Enable building the original gtkv1 client with GTK+ 2
  --disable-sdl           Disable linking with the SDL library, default is to use it if available
  --disable-metaserver2   Do not build in metaserver2 support
  --enable-maintainer-mode  enable make rules and dependencies not useful
                          (and sometimes confusing) to the casual installer

=====Server=====

Boot the virtual machine and open a terminal session.

====Install server dependencies====

====Server configure====

  $ cd ~/svn/trunk/server
  $ bash ../../config.sh

======Notes about the virtual system environment======


=====Konsole shell=====

  * On the Mandriva One 2007 virtual machine, the **Konsole** terminal shell seems to have some issues.
    - In the vi editor, it seems especially difficult to type quote characters (**"**).
      * A workaround may be to use another editor.  One possibility is the **Start | Office | Text Editor**.
      * Also, installing vim-enhanced as part of the tool set seems to make the situation better.

======Crossfire development workspace setup======

Start the virtual system in a manner similar to:

  $ cd ~/qemu/mandriva-one-2007-qemu-image
  $ bash launch.sh

Boot the virtual machine.

Launch a terminal by clicking the **Terminal Program** icon on the **Start Bar**.  It is the icon that looks like a monitor.  Size and/or configure the terminal to taste as it will be used heavily.


=====Create a work area for the development sources=====

Set up a work area for the crossfire sources.

  $ cd ~
  $ mkdir -p svn/trunk
  $ cd svn

=====Create some utility scripts=====

====Scripts to facilitate use of svn====

This example will presume the use of //trunk// sources.  Feel free to deviate from these instructions to reduce the size of the workspace and the amount of data that must be downloaded.  Create a shell script called **svn-co.sh** that contains the following:

===svn-co.sh===

  #!/bin/bash
  #
  for dir in arch client maps server sounds
  do
    svn co https://crossfire.svn.sourceforge.net/svnroot/crossfire/${dir}/trunk trunk/${dir}
  done
  echo

===svn-up.sh===

Create another shell script called **svn-up.sh** as follows:

  #!/bin/bash
  #
  for co in trunk
  do
    for dir in arch client maps server sounds
    do
      WORKING=${co}/${dir}
      if [ -d ${CWD}/${WORKING} ]
      then
        echo; echo ${WORKING}; echo
        cd ${CWD}/${WORKING}
        svn update
        cd ${CWD}
    done
  done
  echo

====Scripts to facilitate development====

===config.sh===

Create yet another shell script called **config.sh** as follows:

  #!/bin/bash
  #
  export CFLAGS="-ggdb -g -O0"
  bash autogen.sh --prefix=${HOME} ${*}
  echo


====Backup scripts on the host box====

Just to be safe, save the scripts just created outside of the virtual box to make it easier to recover them if the virtual box is rebuilt.  Furthermore, they are as useful there as they are on the virtual system...

In the following example, replace **<username>** with your user account on the host system.  Do not include the less-than and greater-than symbols.

  $ cd ~/svn
  $ scp *.sh <username>@10.0.2.2:/home/<username>/qemu


=====Checkout the Crossfire sources=====

Execute the **svn-co.sh** script to check out the development sources.

  $ cd ~/svn
  $ bash svn-co.sh

Shut down the virtual system with **Star | Log Out... | Turn Off Computer**.

Make a backup of the virtual box that only has the Crossfire sources installed on it and **//does not//** have the client or server dependencies installed. On the host computer, execute the following commands:

  $ cd ~/qemu
  $ tar -cjf mandriva-one-2007-qemu-image.cfsvn.tar.bz2 mandriva-one-2007-qemu-image

The reason to do this backup is so that it becomes possible to undo the installation of libraries that the Crossfire sources depend on. The main reason to do it is to avoid having to re-checkout the svn sources just to retry dependency checking.

Proceed to [[user:kbulgrien#Development and testing|Development and testing]].

=======Mandriva qemu setup for Crossfire testing======

=====What packages are there?=====

$ urpmq --fuzzy qemu\\
[[user:kbulgrien#dkms-kqemu|dkms-kqemu]]\\
[[user:kbulgrien#qemu|qemu]]\\
[[user:kbulgrien#qemu-img|qemu-img]]\\
[[user:kbulgrien#qemu-launcher|qemu-launcher]]\\

=====Installation=====

  $ sudo urpmi qemu dkms-kqemu qemu-img qemu-launcher
  To satisfy dependencies, the following packages are going to be installed:
  dkms-kqemu-1.3.0-0.pre11.3mdv2007.0.x86_64
  perl-Gtk2-GladeXML-1.005-1mdk.x86_64
  qemu-0.9.0-6mdv2007.0.x86_64
  qemu-img-0.9.0-6mdv2007.0.x86_64
  qemu-launcher-1.7.0-1mdv2007.0.noarch
  Proceed with the installation of the 5 packages? (11 MB) (Y/n) y
  ...
  installing qemu-launcher-1.7.0-1mdv2007.0.noarch.rpm perl-Gtk2-GladeXML-1.005-1mdk.x86_64.rpm dkms-kqemu-1.3.0-0.pre11.3mdv2007.0.x86_64.rpm
  qemu-0.9.0-6mdv2007.0.x86_64.rpm qemu-img-0.9.0-6mdv2007.0.x86_64.rpm from /var/cache/urpmi/rpms
  Preparing...                     #############################################
        1/5: qemu-img              #############################################
        2/5: dkms-kqemu            #############################################
  + /usr/sbin/dkms --rpm_safe_upgrade add -m kqemu -v 1.3.0pre11-3
  
  Creating symlink /var/lib/dkms/kqemu/1.3.0pre11-3/source ->
                   /usr/src/kqemu-1.3.0pre11-3
  
  DKMS: add Completed.
  + /usr/sbin/dkms --rpm_safe_upgrade build -m kqemu -v 1.3.0pre11-3
  
  Preparing kernel 2.6.17-14mdv for module build:
  (This is not compiling a kernel, just preparing kernel symbols)
  Storing current .config to be restored when complete
  Running Mandrakelinux style preparation routine
  make clean....(bad exit status: 2)
  using /proc/config.gz
  make oldconfig....(bad exit status: 2)
  running dkms_mkkerneldoth....
  
  Building module:
  cleaning build area....(bad exit status: 2)
  ./configure --kernel-path=/lib/modules/2.6.17-14mdv/source && make.......
  cleaning build area....
  
  DKMS: build Completed.
  + /usr/sbin/dkms --rpm_safe_upgrade install -m kqemu -v 1.3.0pre11-3
  Running module version sanity check.
  
  kqemu.ko.gz:
   - Original module
     - No original module exists within this kernel
   - Installation
     - Installing to /lib/modules/2.6.17-14mdv/kernel/3rdparty/kqemu/
  
  depmod.....
  
  DKMS: install Completed.
  + /sbin/modprobe kqemu
        3/5: perl-Gtk2-GladeXML    #############################################
        4/5: qemu-launcher         #############################################
        5/5: qemu                  #############################################
  $


=====Verification=====

  $ sudo lsmod | grep qemu
  kqemu                 163368  0

Note:  Using the kernel plug-in may or may not work well.  The author's experience was that the mouse froze and X on the host machine needed to be restarted.  Therefore, this example does not actually use the kernel plug-in, though your mileage may vary.  To try using the plug-in, refer to **README.txt** in the virtual box directory, and alter launch.sh to include the command argument //-kernel-kqemu//.


=====OS Setup=====

Operating system images may be found at [[http://www.oszoo.org/wiki/index.php/Main_Page|oszoo.org]].

This example uses [[http://www.oszoo.org/wiki/index.php/Mandriva-one-2007-qemu-image.zip|Mandriva-One-2007]].

Download the .zip file... for purposes of this example to /home/<username>/Download/mandriva-one-2007-qemu-image.zip

  $ cd ~
  $ mkdir qemu
  $ cd qemu
  $ unzip ~/Download/mandriva-one-2007-qemu-image.zip
  Archive:  /home/krb/Download/mandriva-one-2007-qemu-image.zip
     creating: mandriva-one-2007-qemu-image/
    inflating: mandriva-one-2007-qemu-image/mandriva-one-2007.qcow.img
    inflating: mandriva-one-2007-qemu-image/mandriva-one-screen-shot.gif
    inflating: mandriva-one-2007-qemu-image/README.txt
  $ cd mandriva-one-2007-qemu-image

NOTE: If you are not using an x86_64 system, the qemu command will vary based on your system.

  $ ls -l /usr/bin/qemu*
  lrwxrwxrwx 1 root root      18 Sep  2 11:20 /usr/bin/qemu -> qemu-system-x86_64*
  -rwxr-xr-x 1 root root  355832 Apr 18 09:40 /usr/bin/qemu-arm*
  -rwxr-xr-x 1 root root  359552 Apr 18 09:40 /usr/bin/qemu-armeb*
  -rwxr-xr-x 1 root root  513648 Apr 18 09:40 /usr/bin/qemu-i386*
  -rwxr-xr-x 1 root root  123872 Apr 18 09:40 /usr/bin/qemu-img*
  -rwxr-xr-x 1 root root   58646 Aug 14  2006 /usr/bin/qemu-launcher*
  -rwxr-xr-x 1 root root  454416 Apr 18 09:40 /usr/bin/qemu-ppc*
  -rwxr-xr-x 1 root root  487968 Apr 18 09:40 /usr/bin/qemu-sparc*
  -rwxr-xr-x 1 root root  744880 Apr 18 09:40 /usr/bin/qemu-system-arm*
  -rwxr-xr-x 1 root root 1209152 Apr 18 09:40 /usr/bin/qemu-system-i386*
  -rwxr-xr-x 1 root root 1094848 Apr 18 09:40 /usr/bin/qemu-system-mips*
  -rwxr-xr-x 1 root root  995632 Apr 18 09:40 /usr/bin/qemu-system-ppc*
  -rwxr-xr-x 1 root root  871688 Apr 18 09:40 /usr/bin/qemu-system-sparc*
  -rwxr-xr-x 1 root root 1366240 Apr 18 09:40 /usr/bin/qemu-system-x86_64*

NOTE: The following echo command will create a launch script to start up the virtual system.  Please note that the //-m 1024// option allocates 1Gb of RAM to the virtual system.  If the host system does not have that much free RAM, you must lower the number accordingly.

  $ echo qemu-system-x86_64 -L . -hda mandriva-one-2007.qcow.img -m 1024 -boot c >launch.sh
  $ cp /usr/share/qemu/*.bin .
  $ bash launch.sh

A QEMU/KQEMU window appears with a Mandriva boot menu.  Select **linux-nonfb** and press //Enter//.  The virtual system will boot up and eventually present you with a KDE desktop.  You are auto-logged in as a user named ''tux''.

If you click inside that window, your mouse pointer will be trapped inside the window until you press //Ctrl-Alt//, so keep this in mind whenever you wish to switch back and forth between the host and the virtual system.

A **Mandriva Linux** window will pop up.  Uncheck the **Open this window on startup** box, and press the **Close** button.

On a 3.6 Ghz CoreDuo system with 1Gb of RAM, the virtual system runs very fast, and it is very difficult to use the keyboard because keys repeat.  The first thing to do, then, is to slow down or disable the key repeat.  Start the **KDE Control Center** by clicking **Star | System | Control Center**.  Navigate to **Peripherals | Keyboard** and set **Delay** to about //1000 msec//, or uncheck the **Enable keyboard repeat** check box.  Click the **Apply** button, and close the **KDE Control Center** with **File | Quit**.

=====About your virtual system=====

  * The ''tux'' and ''root'' account passwords are both ''qemuisgreat''.
  * The system's IP address is ''10.0.2.15''.
  * The host system's IP address is ''10.0.2.2''.
  * The virtual system has access the internet if the host system has access.

=====About your host system=====

This example makes certain presumptions about your host system set up.  Among them are:

  * It is possible to //ssh// into your user account on the host system from **localhost**, and, that //scp// is installed.
  * Your host system has internet access.

=====About your skills=====

This example does presume some things about your skills.

  * You can use the **vi** editor, or can figure out how to find and use a different text editor on your own.
  * You are reasonably comfortable with using a BASH command-line when directed about what to type.

=====Setting up the tool chain=====



====Give tux sudo privileges====

First, you will need ''root'' access from time to time, so set that up first.  Open up a terminal session by clicking the **Terminal Program** icon on the start bar.  Size and configure it to taste, and settle in for a session at the command prompt.  The prompt will look like:

  [tux at localhost ~]$ 

  $ su -l root -c urpmi\ sudo
  Password:
  
  ftp://ftp.u-strasbg.fr...
  installing sudo...
  Preparing...
        1/1: sudo...

Remember, the password was documented above in [[user:kbulgrien#About your virtual system|About your virtual system]].

  $ su -l root -c visudo

You are in the //vim// editor.  Use the arrow keys to move down to the first character of the line that reads:

  # %wheel  ALL=(ALL)       ALL

Press ''xx<Esc>:wq''.  Teaching you how to use ''vim'' is outside of the scope of this tutorial, so from here on, you are on your own.  When you did it correctly, the above line will look like:

  %wheel  ALL=(ALL)       ALL

To finally give ''tux'' sudo rights, enter the following command.

  $ su -l root -c usermod\ -G\ wheel\ tux

====Set up a toolchain====

  $ sudo urpmi autoconf2.5 automake cproto gcc gdb libtool make subversion
  To satisfy dependencies, the following packages are going to be installed:
  autoconf2.1...
  autoconf2.5...
  automake1.8...
  binutils...
  cproto...
  gcc...
  glibc-devel...
  libapr-util1...
  libapr1...
  libbinutils2...
  libsvn0...
  libtool...
  libtool-base...
  m4...
  make
  subversion...
  Proceed with the installation of the 17 packages? (43 MB) (Y/n) y
  ...
  $ sudo urpmi makedepend patch tree
  $ sudo urpmi vim-enhanced
  To satisfy dependencies, the following packages are going to be installed:
  vim-common...
  vim-enhanced...
  Proceed with the installation of the 2 packages? (20 MB) (Y/n) y
  ...
  $ exit

Shut down the virtual system with **Star | Log Out... | Turn Off Computer**.

Make a backup of a clean virtual box that only has the development tools installed on it.  On the host computer, execute the following commands:

  $ cd ~/qemu
  $ tar -cjf mandriva-one-2007-qemu-image.devel.tar.bz2 mandriva-one-2007-qemu-image

The reason to do this backup is so that it becomes possible to checkout, build, and test Crossfire sources on a clean system.  It also gives us a backup that we can modify in the event that other tools need to be added to the clean development image.

Proceed to [[user:kbulgrien#Crossfire development workspace setup|Crossfire development workspace setup]].

======qemu packages======

The following Mandriva packages are available via urpmi.

=====qemu=====
  
  QEMU is a FAST! processor emulator. By using dynamic translation it
  achieves a reasonnable speed while being easy to port on new host
  CPUs. QEMU has two operating modes:
     
  * User mode emulation. In this mode, QEMU can launch Linux processes
     compiled for one CPU on another CPU. Linux system calls are
     converted because of endianness and 32/64 bit mismatches. Wine
     (Windows emulation) and DOSEMU (DOS emulation) are the main targets
     for QEMU.
     
  * Full system emulation. In this mode, QEMU emulates a full system,
     including a processor and various peripherials. Currently, it is
     only used to launch an x86 Linux kernel on an x86 Linux system. It
     enables easier testing and debugging of system code. It can also be
     used to provide virtual hosting of several virtual PC on a single
     server.
     
     This QEMU package provides support for KQEMU, the QEMU Accelerator
     module.
     
  This QEMU package provides support for KVM (Kernel-based Virtual
  Machine), a full virtualization solution for Linux on x86 hardware
  containing virtualization extensions (AMD-v or Intel VT).
  
=====qemu-img=====
  
  This package contains the QEMU disk image utility that is used to
  create, commit, convert and get information from a disk image.
  
=====qemu-launcher=====
  
  A launcher for Qemu that manages Qemu configs and creates disk images
  Qemu-launcher provides a point and click interface to Qemu. It also
  allows you to create, save, load, and run multiple Qemu VM
  configurations. It has a basic interface for creating or convertering
  disk images.

=====dkms-kqemu=====

  QEMU Accelerator (KQEMU) is a driver allowing the QEMU PC emulator to
  run much faster when emulating a PC on an x86 host.
  
  Full virtualization mode can also be enabled (with -kernel-kqemu) for
  best performance. This mode only works with the following guest OSes:
  Linux 2.4, Linux 2.6, Windows 2000 and Windows XP. WARNING: for
  Windows 2000/XP, you cannot use it during installation.
  
  Use "qemu-system-x86_64" to benefit from the QEMU Accelerator Module.
  
======

IP-Address  : 70.254.39.97
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/qemu

-- 
This mail was generated by DokuWiki at
http://wiki.metalforge.net/




More information about the crossfire-wiki mailing list