Wubi (software)

Wubi ("Windows-based Ubuntu Installer") is a free software Ubuntu installer, that was the official Windows-based software, from 2008 until 2013, to install Ubuntu from within Windows, to a single file within an existing Windows partition.

After installation, it added a new "Ubuntu" option to the existing Windows boot menu which allowed the user to choose between running Linux or Windows, and avoided the need to re-partition the disk.

History
Wubi was born as an independent project and as such versions 7.04 and 7.10 were unofficial releases.

For Ubuntu 8.04 the code was merged into Ubuntu and for 8.04 alpha 5, Wubi was also on the Ubuntu Live CD.

The project's aim was to enable existing Windows users, unacquainted with Linux, to try Ubuntu without risking any data loss (due to disk formatting or partitioning mistakes). It could also safely uninstall Ubuntu from within Windows.

It is not a virtual machine, but creates a stand-alone installation within a loopmounted device, also known as a disk image, like Topologilinux does. It is not a Linux distribution of its own, but rather an installer for Ubuntu.

While Wubi does not install Ubuntu directly to its own partition this can also be accomplished by using LVPM, the Loopmounted Virtual Partition Manager, to transfer the Wubi-generated Ubuntu installation to a dedicated real partition, including a bootable USB keydrive. The advantage of this setup is that users can test the operating system and install the drivers before they install it to a dedicated partition (and avoid booting and functioning risks).



Wubi adds an entry to the Windows boot menu which allows the user to run Linux. Ubuntu is installed within a file in the Windows file system (c:\ubuntu\disks\root.disk), as opposed to being installed within its own partition. This file is seen by Linux as a real hard disk. Wubi also creates a swap file in the Windows file system (c:\ubuntu\disks\swap.disk), in addition to the memory of the host machine. This file is seen by Ubuntu as additional RAM.

A related project, Lubi, used Linux as the host system instead of Windows. However, this project has not been worked on since 2007 and only works on Ubuntu 7.04.

Wubi was removed as an installation option in the official download page from Ubuntu 13.04 onward. However, Wubi installers were still provided for versions up to and including Ubuntu 14.10.

An unofficial fork of Wubi, called wubiuefi, supports UEFI and legacy BIOS as well as newer versions of Ubuntu (as of 2022-04-03, version 20.04.4).

Desktops
Users can select the desktop environment within Wubi. But, because each desktop environment is also available as an application package, it is recommended that users install Ubuntu (default option) and from there install the other desktop environments. When users log in, they can choose the desktop environment to use.

Limitations
Compared with a regular installation, a Wubi installation faces some limitations. Hibernation is not supported and the filesystem is more vulnerable to hard reboots. Also, if the Windows drive is unmounted uncleanly (Windows crash, power failure, etc.), Ubuntu will not be able to repair, re-mount, and boot from the Windows NTFS drive until Microsoft Windows has successfully booted, repaired the drive, and then shut down cleanly. If the Windows system could not be booted after the corruption to repair the filesystem, the user would also not be able to boot Ubuntu.

Performance related to hard-disk access is also slightly slower on a Wubi install, more so if the underlying disk image file is fragmented, as the disk image file in the Windows filesystem contains a Linux filesystem whereas without Wubi only the Linux filesystem is used that has direct hardware access.

Wubi creates the root.disk file using Microsoft's proprietary NTFS file system while running under the MS Windows OS and then while the Ubuntu OS is running it accesses that file using an alternative file system driver. The differences between the Microsoft and Linux implementations of NTFS could technically result in corruption of the root.disk file that affects the NTFS filesystem in such a way that it could even prevent Windows from booting. Running chkdsk /r from MS Windows to fix the damaged NTFS file system and then shutting down Windows cleanly may fix any corruptions (this may take a significant amount of time to run as root.disk is a large file).

Influences
Wubi relies on other open source projects: Debian installer, Migration Assistant, Grub4Dos, NTFS-3G, NSIS, Metalink and Ubiquity.

Development
The lead developers are Agostino Russo, Geza Kovacs, Oliver Mattos and Ecology2007. The main development occurs at Launchpad and is led by the Lupin Team (Lupin is the loop-installer, handles everything that happens after reboot) through the original Ubuntu blueprint page and the new Wubi, Lubi, Lupin, and LVPM project pages.

Hardware support
Both the i386 (32-bit x86) and x86-64 releases of Ubuntu are supported by Wubi and Lubi. In versions before 8.04, only the x86 release of Ubuntu was supported. Wubi UEFI works with UEFI boot loaders.

Origins
A number of Linux distributions, including Red Hat Linux and Slackware's ZipSlack, provided a similar tool in the mid-1990s, using syslinux and the UMSDOS filesystem driver. Later, SuSE provided something similar using syslinux and loop-mounted disk images on FAT filesystems. During the late '90s BeOS used a similar system to install the OS in a folder in Windows.

The idea for Wubi was drafted by Agostino Russo taking inspiration from Topologilinux, which provided a loopmounted installation, and Instlux, that provided a simple Windows frontend. The idea was to merge the two concepts having a Windows installer that would loopmount an image of Ubuntu. Geza Kovacs later refined the specification and provided the first prototypes to show that the concept was sound. Oliver Mattos wrote the original user interface in NSIS.

Agostino Russo then refined the loop-installation concept, moving from a simple loopmounted pre-made image file to an image created on the fly using a dynamically patched version of the Debian installer, thus providing an experience which was closer to a real installation while addressing several other issues of the early prototypes. Lupin project was thus born and Agostino Russo wrote and implemented most of its code with some contributions from Geza Kovacs.

Agostino Russo and Ecology2007 later redesigned and rewrote the current Windows front-end. Hampus Wessman contributed the new downloader and the translation scripts. Bean123 and Tinybit also helped to debug and fix bootloader issues. Lubi and LVPM were subsequently created by Geza Kovacs.

The project has inspired the creation of other Windows-based Linux installers, such as Win32-loader.