VNUML Frequently Asked Questions

David Fernández (david at
Fermín Galán (galan at
version 1.7, June 4th, 2004



Writing the VNUML specification

How can I check if my VNMUL XML specification is correct?

Whenever vnuml tool is executed, the specification is checked and will give you some error messages in case the specification is not correct. Alternatively, you can check your specification using the xmlwf command that comes with expat distribution (needed to run VNUML). The xmllint command (that comes with libxml package) also could be used for the same task.


What is the maximum virtual networks number?

There are two hard limits in the number of simultaneous virtual networks (ie, how many <net> can manage).

  • 64 maximum networks, if using host kernel version < 2.6.5
  • 32 maximum networks, if using brige-utils version < 0.9.7

So, if you want to use as many virtual networks as your physical host could cope, use at least bridge-utils 0.9.7 (available just as tarball at at time of this writting) and Linux Kernel 2.6.5.

Linux Kernels for VNUML

How can I know which kernel options were used when compiling a UML linux kernel?

Just execute the kernel with "--showconfig" option. For example, to know if a UML linux kernel has IPv6 support just type:

> linux --showconfig | grep IPV6

About root filesystems

I have changed the filesystem used by a virtual machine, but when I start the simulation it seems to use the old one.

If you are using "COW" filesystems as recommended, you have to delete the old cow file before starting the simulation with the new filesystem. The reason is that cow files save a reference to the root file system they are derived from. To delete a cow file you can use the "purge" option ("-P") of

I am using "root_fs_tutorial" root filesystem and I see that Apache web server (or any other service) is not automatically started when the virtual machine boots, why? How can I make it start from the beginning?

Most of the services are not started from the beginning to speed up virtual machines boot up process during the scenario start-up (-t option). It is recommended to start the services you need using "<exec>" commands inside your VNUML specification. For example, to start apache2, you can include the following command:

<exec seq="start" type="verbatim">/etc/init.d/apache2 start</exec>

Alternatively, you can use "update-rc.d" command to restore the scripts that start apache2 during boot process. Just start the rootfilesystem in direct mode as described in update rootfilesystem example, login into the virtual machine through the console or using ssh and type the following command:

update-rc.d apache2 defaults

Starting the simulation (-t option)

When I build a scenario, I get the following message when booting each virtual machine:

 Checking for the skas3 patch in the host:
 - /proc/mm...not found
 - PTRACE_FAULTINFO...not found
 - PTRACE_LDT...not found
 UML running in SKAS0 mode

Then the process stops, apparently hanging, but if I press CTRL+C it continues and, finally, the scenario is set up properly. Can this be avoided?

This is a known problem that happens with some guest UML kernels and host kernel combinations. If you are using a modern UML guest kernel (like the problem doesn't use to occur, but otherwise you can test some of the following:

  1. This problem use to happen during the VNUMLization, so if you avoid it using -Z switch, it won't happen. However, older VNUML versions does not implement -Z and, anyway, avoiding VNUMLizaton could be problematic if you are not using an official root filesystem. See the the user manual for more information on VNUMLization.
  2. This problem seems related with the configuration of the host kernel. In particular, if you are using a host kernel version previous to, the problem may happen if CONFIG_COMPAT_VDSO=y. If you are using CONFIG_COMPAT_VDSO=n, the problem won't occur.
  3. It seems that when using hostfs kernel or newer, the problem does not happen at all, even in the case you are using CONFIG_COMPAT_VDSO=y (from the changelog: "Fix broken CONFIG_COMPAT_VDSO on i386")

The recommended solution is the third one. As a proof, I'm using a 2.6.21 kernel, CONFIG_COMPAT_VDSO=y and the hanging does not occurs. However, further confirmation by other users would be helpful :)

I'm trying to build the simple.xml example that comes with the VNUML software, but I'm getting the following error:

 Checking for the skas3 patch in the host:
 - /proc/mm...not found
 - PTRACE_FAULTINFO...not found
 - PTRACE_LDT...not found 
 UML running in SKAS0 mode
 Xlib: connection to ":0.0" refused by server
 Xlib: No protocol specified
 xterm Xt error: Can't open display: :0.0
 Boot timeout for virtual machine uml1 reached. Abort, Retry, or Continue?  [A/r/c]:

and the virtual machine xterm never pops up. I'm executing as root (either directly or through sudo).

Try the following: -P simple.xml -v -t simple.xml -v -u root

If using '-u root' works, the problem seems to be that the 'vnuml' user has no permissions in your X server. Note that, although you were launching as root, some actions (in particular, the launching of the xterm) are performed by 'vnuml' user.

There are two possible solutions:

  • Always using '-u root'
  • Enable permissions in your X server before launching for 'vnuml' user (for example, using 'xhost+' or, much better, 'xhost +local:vnuml').

The simulation does not to start correctly. Some (or all) of the virtual machines do not start and the program keeps saying "xxx sshd is not ready..."

There are several causes that can prevent a simulation from start correctly. If that happens you can:

  • "Purge" the simulation in case you are using -as recommended- COW filesystems. Some times the cow filesystems get corrupted and prevent some virtual machines from start. Just execute vnuml with "-P" option to delete cow files and reset other simulation related components.
  • Check that the filesystem fullfills the requirements listed in the VNUML User Manual. It is strongly recommended to test the kernel and the rootfilesystem you are going to use in a simple simulation scenario (with just one virtual machine, see Simple example) before trying a more complex one.
  • Have a look at the messages showed through the virtual machines consoles. To do that, you can:
    • Start the simulations from an X terminal using the following statements in every virtual machine specification section:
    •  <boot>

      Each virtual machine console will be opened in a different xterminal.

    • Redirect the virtual machine consoles to pseudo ttys (pts) using the following statements in every virtual machine specification section:
    • <boot>

      and start the simulation using: "vnuml -t name.xml -e screen.cfg" and access the consoles using: "screen -c screen.cfg".

  • Check the management interface host-virtual machine. In the host, there should be several interfaces named vm-eth0 (where vm is each one of the virtual machines in the simulation). Each one is connected to the eth0 interface in the each virtual machine. You can check this interfaces using ping:
  • From host:

    ping (IP address on the eth0 interface in the virtual machine)

    From the virtual machine:

    ping (IP address on the vm-eth0 interface in the host)

    Conflict between IP addresses in the host enviroment and thoses used in the management interfaces is a common cause of problems. To avoid conflict, use a proper <offset>

  • Check the sshd daemon is running in the virtual machines. For example, tryto open a telnet to port 22 from the host to the virtual machine.

VNUML over different Linux distributions

How can I install VNUML over X linux distribution?.

See Howto page for some detailed recipes to install VNUML over some common linux distributions

Reply via email to