Create Your Image[]

However, you want to do it. You need to start off with an image file. At minimum you need about 25% of the GNOME packages installed to start a desktop. I created mine with qemu. It is quick and easy. The only problem I had is my image would not boot with QEMU once created. However, since I wanted to use coLinux, I did not consider that a serious problem.

If you want to start off with a pre-build image, try the source forge Fedora Core 6 image at:


The download size is about 330 MB. The FedoraCore6.img extracts as a 4GB file.

If instead you want to retrofit your own image, then the following instructions are for you.

Booting your system[]

Ironically the initial boot is the hardest thing to figure out. If for example you created your image by qemu, it is still configured to a standard kernel. Unfortunately, versions of coLinux older than 0.8.0 do not support the "udev" version used by the Fedora Core 6.

I have found the easiest thing to do is to boot to runlevel 1, and mount another coLinux image to copy the /dev directory from. Then the only thing left to do is to selectively disable udev. A method that seems to work is to modify /etc/rc.d/rc.sysinit

In the /etc/rc.d/rc.sysinit file, change the line:



    [ -f /sys/class/tty/console/uevent ] && start_udev

The last thing you need to do is make sure your /etc/fstab is correct. I recommend you do use the LABEL=/ syntax that is already provided, rather than explicitly referencing /dev/cobd0.

Starting Xvnc[]

The easiest way to get Xvnc up and running is to add the following file as /etc/gdm/custom.conf

    # GDM Configuration Customization file.
    # This file is the appropriate place for specifying your customizations to the
    # GDM configuration.   If you run gdmsetup, it will automatically edit this
    # file for you and will cause the daemon and any running GDM GUI programs to
    # automatically update with the new configuration.  Not all configuration
    # options are supported by gdmsetup, so to modify some values it may be
    # necessary to modify this file directly by hand.
    # Older versions of GDM used the "gdm.conf" file for configuration.  If your
    # system has an old gdm.conf file on the system, it will be used instead of
    # this file - so changes made to this file will not take effect.  Consider
    # migrating your configuration to this file and removing the gdm.conf file.
    # To hand-edit this file, simply add or modify the key=value combination in
    # the appropriate section in the template below.  Refer to the comments in the
    # /usr/share/gdm/defaults.conf file for information about each option.  Also
    # refer to the reference documentation.
    # If you hand edit a GDM configuration file, you should run the following
    # command to get the GDM daemon to notice the change.  Any running GDM GUI
    # programs will also be notified to update with the new configuration.
    # gdmflexiserver --command="UPDATE_CONFIG <configuration key>"
    # e.g, the "Enable" key in the "[debug]" section would be "debug/Enable".
    # You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and
    # re-read the new configuration settings.  You can also restart GDM by sending
    # a HUP or USR1 signal to the daemon.  HUP behaves like gdm-restart and causes
    # any user session started by GDM to exit immediately while USR1 behaves like
    # gdm-safe-restart and will wait until all users log out before restarting GDM.
    # For full reference documentation see the gnome help browser under
    # GNOME|System category.  You can also find the docs in HTML form on
    # NOTE: Lines that begin with "#" are considered comments.
    # Have fun!
    # Note that to disable servers defined in the defaults.conf file (such as
    # 0=Standard, you must put a line in this file that says 0=inactive, as
    # described in the Configuration section of the GDM documentation.
    # Also note, that if you redefine a [server-foo] section, then GDM will
    # use the definition in this file, not the defaults.conf file.  It is
    # currently not possible to disable a [server-foo] section defined
    # in the defaults.conf file.
    name=Standard server
    command=/usr/bin/Xvnc -audit 0 -geometry 1024x768 -depth 16 -SecurityTypes None
    name=Terminal server
    # Add -terminate to make things behave more nicely
    command=/usr/bin/Xvnc -audit 0 -geometry 1024x768 -depth 16 -terminate -SecurityTypes None
    name=Chooser server
    command=/usr/bin/Xvnc -audit 0 -geometry 1024x768 -depth 16 :0 -SecurityTypes None

That is pretty much it. Now all that is left is the detail of connecting to your server from your Windows box. The easiest way is to use slirp to redirect port 5900. For example, I use the following command line to start colinux:

    colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 \
        cobd0=FedoraCore6.img cobd1=swap.img root=/dev/cobd0 \
        eth0=slirp,,tcp:5901:5900 ro

This allows me to connect to my Fedora Core 6 image using a vnc address of:

The one potential gotcha, is by default iptables will block the connection. The easiest way to avoid this problem is to remove iptables from your system.

    yum erase iptables

Starting Sound[]

By far the easiest way to get sound working is to enable ESD in gnome. To do this open System - Preference - Sound. Select the "devices" tab, and click on the checkbox: "Enable software sound mixing".

Now, you also need to set the ESPEAKER variable to tell ESD where to send your sound. If you are using slirp, you probably want to send your sound to To do this create the following file as /etc/profile.d/ :

    if [ x/bin/bash = "x$SHELL$ESPEAKER_TEST$ESPEAKER" ]
      export ESPEAKER_TEST="tested"
      "$SHELL" -c "echo > /dev/tcp/" 2>>/dev/null & child=$!
      /bin/sleep 1
      /bin/kill $child 2>>/dev/null||export ESPEAKER=

Finally, you need to have ESD running on your Windows box. If you have cygwin installed, this is easy. You can even tell coLinux to start and stop your sound daemon. I use the following script to accomplish this:

    if [ -x /usr/bin/esd ] 
      sound=exec0="$(cygpath -w /usr/bin/esd.exe),-tcp -port 7000"
    exec ./colinux-daemon.exe \
    	kernel=vmlinux \
    	initrd=initrd.gz \
    	"$sound" \
    	mem=256 \
    	cobd0=FedoraCore6.img \
    	cobd1=swap.img \
    	root=/dev/cobd0 \
    	eth0=slirp,,tcp:5901:5900 ro