Howto: Run a WUBI installation under coLinux (Ubuntu installer for Windows)[]

The Installation from Wubi can simple use as basic installation for coLinux. Here are the steps.

Install Wubi[]

I used Ubuntu 8.10 (2009-01-04) for this description here.
  • Install Xubuntu in normal way, choose your language and packets
I used minimal, 3.8 GB filesystem and 200 MB swap
  • Test the running Wubi and boot Ubuntu
  • Login as root, set root password, check that you can login as root.
  • Check that you have installed a console editor (for example nano).

Where are the files we need?[]

  • C:\ubuntu\disks\root.disk Contains the root filesystem
  • C:\ubuntu\disks\swap.disk Contains the swap
  • c:\ubuntu\disks\boot\ Contains boot files, native kernels, initrd and bootloader. We don't need for coLinux.

All files leave untouched.

Create coLinux start script[]

  • Boot Windows and create a new file "ubuntu.cmd" in your coLinux install directory (c:\colinux or "c:\program files\colinux"). Put this code into the file:
REM change to coLinux install path
cd c:\colinux
REM start coLinux
colinux-daemon kernel=vmlinux cocon=100x60 ^
 cobd0=C:\ubuntu\disks\root.disk ^
 cobd1=C:\ubuntu\disks\swap.disk ^
 root=/dev/cobd0 text ^
 eth0=slirp ^
 cofs0=. cofs1=C:\ubuntu\disks\boot
  • If you use notepad, then check that the file does ends with ".cmd" or ".bat" and not with ".txt"!
  • The ^ lets continue long lines in next line under Windows.
  • Replace the path c:\colinux with your current coLinux install directory.
  • Change the console size after cocon=... as you like. Or remove it completely.
  • The entry cofs1 is optional. It points to /boot and is not real used. (see fstab later)
  • The word text as boot parameter says, that GDM (graphic login) should not run. This is a text only mode.

First boot[]

  • Please reboot Windows before you first try to start coLinux. This helps you, not loosing data from last changes, in case coLinux does not start and crash your system (sometimes)!
  • Start the script ubuntu.cmd
  • Ubuntu will start with lot of errors, for example:
error: "vm.mmap_min_addr" is an unknown key
mount: special device /host/ubuntu/disks/boot does not exist
FATAL: Could not load /lib/modules/
 No such file or directory
$Loading AppArmor module: Failed.
/dev/mem: mmap: Bad address
  • Don't worry. In the end you should get a login prompt like this:
Ubuntu 8.10 ubuntu tty1

ubuntu login:

Adjust fstab entries[]

fstab Wubi default[]

The default installation would have this entries:

# /etc/fstab: static file system information.
# <file system>       <mount point>  <type>  <options>   <dump>  <pass>
proc                          /proc  proc    defaults         0       0
/host/ubuntu/disks/root.disk  /      ext3    loop,errors=remount-ro 0 1
/host/ubuntu/disks/boot       /boot  none    bind             0       0
/host/ubuntu/disks/swap.disk  none   swap    loop,sw          0       0
  • Make a backup of current fstab "cp /etc/fstab /etc/fstab.orig"

fstab for coLinux only[]

  • Change the entries for Root, Swap and boot as follow:
# /etc/fstab: static file system information for coLinux.
# <file system> <mount point>   <type>  <options>    <dump>  <pass>
proc            /proc           proc    defaults          0       0
/dev/cobd0      /               ext3    errors=remount-ro 0       1
cofs1           /boot           cofs    defaults          0       0
/dev/cobd1      none            swap    sw                0       0

boot is optional and never used. You can comment out or remove it.

Hint: Keys Win+V inserts the copy&paste buffer from Windows.

fstab for dual boot[]

  • If you wish to boot Wubi and coLinux with same fstab, then add the coLinux entries behind the defaults.
# /etc/fstab: static file system information.
# <file system>       <mount point>  <type>  <options>   <dump>  <pass>
proc                          /proc  proc    defaults         0       0
/host/ubuntu/disks/root.disk  /      ext3    loop,errors=remount-ro 0 1
/host/ubuntu/disks/boot       /boot  none    bind             0       0
/host/ubuntu/disks/swap.disk  none   swap    loop,sw          0       0
# Mount points under coLinux
/dev/cobd0      /               ext3    errors=remount-ro 0       1
/dev/cobd1      none            swap    sw                0       0

Under coLinux the files "/host/ubuntu/..." would not found and mount will skip these. Under native Ubuntu the "/dev/cobd..." does not known by kernel and will skip. You will see some warnings.

Installing modules[]

  • I assume, that cofs0 points to your coLinux installation and the modules exist as archive vmlinux-modules.tar.gz there. Mount cofs0 and install modules as follow:
mount cofs0 -t cofs /mnt
tar xzf /mnt/vmlinux-modules.tar.gz -C /

Second boot[]

  • Now, type reboot. After next start, mostly errors should solved and the swap will use.
  • Here are my outputs from commands free and mount:
root@ubuntu:~# free
             total       used       free     shared    buffers     cached
Mem:        255952      70716     185236          0       4156      48432
-/+ buffers/cache:      18128     237824
Swap:       195304          0     195304

root@ubuntu:~# mount
/dev/cobd0 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
cofs1 on /boot type cofs (rw)
securityfs on /sys/kernel/security type securityfs (rw)

Fine tune[]

From here we tune up the boot scripts to not have to many errors.

Hardware clock[]

Disable the access to hardware RTC by editing the file /etc/default/rcS and change or add this entry:


Setting up console font and keymap ... has long delay[]

Edit file /etc/init.d/console-setup and add a bypass for coLinux near line 14. Add the line that is marked with '+':

 set -e
+uname -r | grep -qe "-co-" && exit 0
 test -f /bin/setupcon || exit 0
 if [ -f /lib/lsb/init-functions ]; then

suppress ACPI errors[]

Edit file /etc/init.d/acpi-support and add a bypass for coLinux near line 12. Add the line that is marked with '+':

--- /etc/init.d/acpi-support.orig
+++ /etc/init.d/acpi-support
@@ -9,6 +9,7 @@
 test -f /lib/lsb/init-functions || exit 1
 . /lib/lsb/init-functions
+uname -r | grep -qe "-co-" && exit 0
 test -d /var/lib/acpi-support || exit 0
 shopt -s nullglob

udev: renamed network interface eth0 to eth2[]

On my system udev renamed eth0 to eth2. To solve this, first I have changed in the file /etc/udev/rules.d/70-persistent-net.rules the NAME="eth2" into NAME="eth0".

This helps for a while. But here is a better way:

  • Edit file /etc/udev/rules.d/75-persistent-net-generator.rules if it exists and set a bypass for coLinux in same way as xen or UML does it. Add the with + marked lines after the entry Xen (near line 26. If the file doesn't exist, create it by copying /lib/udev/rules.d/75-persistent-net-generator.rules, it should already contain the necessary lines. Make sure that the LABEL defining the end of generation instructions is set near the end of the file, otherwise you'll mess the system...)
 # ignore Xen virtual interfaces
 SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
+# Do not rename coLinux network devices
+DRIVERS=="conet", GOTO="persistent_net_generator_end"
 # read MAC address
  • Then edit file /etc/udev/rules.d/70-persistent-net.rules and remove all lines with "(conet)" in comments, if any. You will mostly find a lot of them. Please remove them all.
Such lines will never be created again, with the changed persistent-net-generator.rules (see above).
Only users of Dualboot should leave lines, that have no "(conet)" in comment.
  • After next reboot eth0 should be the slirp and network will be set automatically from the buildin dhcp.
  • ifconfig eth0 shows this now:
eth0      Link encap:Ethernet  HWaddr 00:ff:b3:da:79:80
          inet addr:  Bcast:  Mask:


FLTK and NT console don't support UTF-8. It's good idea to disable UTF-8 in the default configuration. I have a German installation, so I used "de_DE" in my examples. Replace de_DE with your language code.

  • Create the locale with this command:
locale-gen de_DE
  • Edit the file /etc/default/locale and remove the UTF-8 from LANG. I changed it from LANG="de_DE.UTF-8" into LANG="de_DE".
  • Edit the file /etc/environment and remove the UTF-8 from LANG.

If you later login with Putty, you can enable UTF-8 inside Putty by exporting the variable LANG with "de_DE.UTF-8" (in menu "Connection" - "Data") and set the "Character set translation on received data" to UTF-8 (in menu "Window" - "Translation").

Fix up long timeout from GDM on shutdown[]

GDM is not running, so we not need to wait for killing this task.

Edit file /etc/init.d/gdm and add a bypass for coLinux before the message "Stopping GNOME Display Manager". Add the line that is marked with '+':

--- /etc/init.d/gdm.orig
+++ /etc/init.d/gdm
@@ -83,6 +83,7 @@
+       uname -r | grep -qe "-co-" && exit 0
        log_begin_msg "Stopping GNOME Display Manager..."
        start-stop-daemon --stop  --quiet --oknodo --pidfile $PIDFILE --name gdm ...
        log_end_msg 0

"vm.mmap_min_addr" is an unknown key[]

Edit file /etc/sysctl.d/10-process-security.conf and comment out the line with entry "vm.mmap_min_addr = 65536".

/dev/mem: mmap: Bad address[]

This is harmless and I don't have fixed it.

Trouble shooting[]

System maintain mode[]

System maintain mode you can activate for Ubuntu 8.10 by adding the word single into coLinux config line as boot parameter.

View into your boot menu from file c:\ubuntu\disks\boot\grub\menu.lst (under Windows) to find the boot parameter on your Ubuntu version in the section with title "recovery mode".

More Links[]

Support Request 2485983: Booting a WUBI image from c:\ drive in CoLinux