I'm studying physics at the University of Vienna and trying to get into OpenGL/GLSL programming lately. I began to mod Freelancer some years ago and lastly I joined the Universe Modding Crew that focuses on modding Sci-Fi games. Our current project is "Stargate: Revenge of the Fallen", a Stargate mod for Battlefield 2142.
Besides, I try to develop a Spacesim-Engine that can simulate (special) relativistic effects in a realtime application. (Check out my YouTube channel: Copycap)
Hopefully I will update progress on both on my Blog. :)
If you have questions, feel free to contact me via Email or Jabber (I actually don't like ICQ/MSN ;)

  • View media
  • View media
RSS My Blogs

Xen and WinXP

Bl00drav3n Blog

So after over one day of investigating, configuring and trial&error I finally got Xen to create a virtual windows machine. Our root server is running on Debian Lenny and I tried out the BF2142 Linux dedicated server on it, but because I could not get it to run our Mod, we decided that we'll need a Windows machine. So we uploaded an image of a Windows XP Pro Service Pack 2 onto the hostmachine and I tried to configure the domain. At the moment it looks like that:

#
#  Kernel + memory size
#
kernel      = '/usr/lib/xen-x.x-x/boot/hvmloader'
builder     = 'hvm'
memory      = '2048'
vcpus       = 2
device_model= '/usr/lib/xen-x.x-x/bin/qemu-dm'

shadow_memory = 8
acpi = 1
stdvga = 0
serial = 'pty'


#
#  Disk device(s).
#
disk        = [
                'phy:/dev/vg-xen/win-disk,hda,w',
                'phy:/dev/vg-xen/win-data,hdb,w',
                'file:/etc/xen/winxp/winxp.iso,ioemu:hdc:cdrom,r'
              ]

boot='c'

#
#  Hostname
#
name        = 'host'

#
#  Networking
#
vif         = [ 'type=ioemu, ip=x.x.x.x, bridge=x' ]

#
#  Behaviour
#
vnc=1
vncviewer=1
sdl=0

The most difficult part to figure out was the vif part, because of some restrictions of our server provider. The virtual machine gets its own local IP adress space and a friend told me how to tell iptables to map incoming IP requests on adress x.x.x.x to the local network space of the virtual machine (and vice versa). The connection between the local network and the internet is set up with a bridge that acts as the gateway for the windows machine. I had to manually create a bridge, but that was an easy part with Debian's brctl tool.

So after that worked, I could log in with a VNC Client and I was happy since the first thing I saw was the Windows Setup Screen. After the setup was complete, I just turned on Windows' remote control tool and deactivated VNC access. This was the first time I used Windows Remote and I'm pretty happy with it - it integrates well into the local system and is much MUCH more handy than a VNC Client.

Now came the time to install the BF2142 v1.5 Server files. The first thing that I noticed was, that EA/Dice was lazy AGAIN, because the msvcp71.dll and msvcr71.dll were not shipped with the installer. On the Microsoft homepage is said, that one MUST ship these files, because they need to be compiled by the developers and are not part of any framework. That made me pretty mad, because I searched for about an hour for a nice solution to this: I installed visual c++ runtime libs, tried out .net framework v2.0 and v4.0 but the files were not there. At the end I just decided to download the dlls from dll-files.com. So once again, THANK YOU EA/DICE! :P
Well, after that, I started the server, but I could not connect to it: Connection lost, everytime. I do not have a clue what was wrong, but after I was mad about the thing AGAIN, I just decided to restart the machine et voila: suddenly I could connect to it...

Okay, after this problem was out of the way, another one arised. The server performance was way too low. After inspecting the virtual machine, I realized, that ping.exe returned some crazy negative numbers when pinging other hosts, but I had no clue what was wrong. First I thought that the Windows performance is so low because of Xen. But after some google search, I stumbled on a thread regarding dual core machines and WinXP. First I just thought, that this would not help me with the problem, but then I read something interesting on the Microsoft Support Page:

KB938448 wrote: When you use the ping command to send Internet Control Message Protocol (ICMP) packets to a remote computer, the reply may show negative response times.

Exactly my problem! And we've got an Intel Core i7 and no Win2003 Server... I don't know if the CPU is causing that issue, or if it is Xen, but the problem was, that the cores were not synchronized. So the solution to it was to append the following switch to the Windows boot.ini: /usepmtimer

After a quick reboot now the astonishing result: it worked! Server is running at good performance and my ping is lower than 40 ms. Now the last thing I got to do was to let our Mod Leader Lantian configure the server and upload the mod files. Everything's working good now, so we may not have to rent another gameserver just for the mod in future. Well, and after that's done, my work with the server is close to be finished. We now got three virtual machines running on the Debian-Xen dom0, one acting as mod repository for developing, one as the webserver and one as the gameserver. The webserver is hosting the Board, a Developer Blog, an official Jabber-Server/Chat and an MTA, for which I have to get receving Emails done. But now that everything's working fine, I can finally move back to work on the RotF Mod. I really want to make all the icons appear ingame, because some weapons still haven't got any, and I think some animations already need to get done.

See you next time!

Start a group Groups
Universe Modding

Universe Modding

5 members Developer & Publisher

We are a multinational Group, specialized on modifying everything Science-Fiction related. In addition to it we are friends of shared knowledge and open...

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account:

X