Installation/FromWindows describes how to install Ubuntu without removeable media from a Windows environment. It would be possible, and probably not too difficult, to automate this process, making Ubuntu as easy to install as AIM or Winzip for Windows users. Such a system would not even require the user to have knowledge of burning a CD, as the current LiveCD-based system does.
Here's a rough sketch of how such an installer might work.
check that user has administrator privileges
automatic (or guided) installation?
determine (confirm) language
determine time, date, timezone, keyboard layout
guess (confirm) good amount of space for linux partition
create installation script based on previous information
prompt to close programs, eject media, click restart
determine whether windows=NT or =9x
append WINGRUB to boot.ini, set as default boot option
copy kernel, initrd, linux.iso, boot.lst to \boot
something similar with GRUB4DOS , never done it myself
user selects or defaults to WINGRUB/GRUB4DOS
linux boots and autodetects hardware (logged)
script removes WINGRUB/GRUB4DOS from boot.ini (if installation fails, computer will not keep booting into linux)
installation program runs using install script, auto-detected hardware settings, installs GRUB to MBR (all logged)
next boot (windows or linux)
check installation log
ask to send results to database
first linux boot
set up user
Here is an explanation of the installer in plain English. In the first step, the installer would determine if the user running it has the priveleges necessary for the installer to modify boot.ini. Next, it would give the user the choice between accepting all of the installer's guesses or having a chance to modify those choices. The installer would then examine the registry to determine the user's language, the system time/date/timezone, and the keyboard layout. It would then determine the amount of free space on the hard drive and, based on the amount of space needed for an installation and the amount of free space remaining, make a guess as to the proper amount of space to partition away for linux. Based on all this information, the installer would then create an installation sript for anaconda or the debian-installer or whatever the distro uses. It would place this script, the kernel, initrd, and installation program, the distro's base installation packages, and either WINGRUB or GRUB4DOS (depending on what version of Windows the user is running) in the \boot directory, and modify the user's startup files to boot into linux. On reboot, the computer would start up into linux and run the installation program using the installation script. In case something goes wrong and the installation cannot finish, the installer should set the computer to boot into Windows on the next boot as soon as possible. The installer would then partition the disk, install the base packages, install GRUB to the master boot record, and reboot. At startup, GRUB would greet the user and ask whether to boot into Windows or linux. Regardless of which OS the user boots, a program would run that would check the installation log to see if everything went well with the installation. With the user's permission, it would send a copy of the log to a database that would allow the distro to better assess its installer. The program would then delete the installation program and the supporting files (like the kernel, initrd, and packages that were still on the windows partition). On the first linux boot, the user would be prompted to create a user. At this point, the user would have a workable linux distribution that would dual-boot with windows, all without having to so much as burn a CD.
Obviously a lot of the work is already done: WINGRUB and GRUB4DOS can facilitate a diskless installation, the Nullsoft Scriptable Install System could serve as the base for the Windows part of the installer, and debian-installer linux part of the installer (perhaps the work being done for an OEM installer will help) . The only thing left to do is to actually put these pieces together...
Comment added by forbesguthrie
I would like to expand this concept to include a more developed "migration" element. I agree with the above actions, but believe that Ubuntu can do more to ease windows-centric users across. I invisigage the following process in a Windows application:
User runs "install Ubuntu".exe
asks user to: > Install alongside windows (dual boot)
- Algorithm automatically suggests partitioning scheme based on existing setup. User can click "advanced" to change this. By default this should just be draggable bar with upper (restrained by existing windows size) and lower (restrained by minimum Ubuntu install) limits showing percentage to give to Windows/Linux. At this stage it should not got into swap size, extra partitions for home, etc. Advanced button can change these.
> replace windows
- Just show the bar at 100% ubuntu and have the advanced button to change partitioning details.
Runs a migration capture which would work in a similar way to Win XP's existing "Files and Settings Transfer Wizard". If the user chooses to replace windows in step 1, then all this data would automatically be copied to the /boot area already described.
If the user wanted a dual boot system, then as many settings as possible would be extracted and used in Ubuntu setup and their user account. Then the user would have to decide whether to leave the files in the windows directories (but create links in their /home to them, (ntfs write?)), or move them all to /home (have to warn the user that they would only be accessible from Linux).
(citizenDAK: This document/file migration could be deferred to a "firstboot wizard", which walks the user through it AFTER Ubuntu is already running? This would simplify the OS installer (UbuntuExpress?) procedure a bit.)
Next, the user could choose which directories to copy across (or create links for). Obvioulsy this would by default already select all their "my" folders.
Next the user could select to seach the file system for common file extention types to include.
Then it would capture as many settings as possible from Windows (and software for which there is a Ubuntu equivalent). This is where the process would really simplify a windows user migration. In addition to the system's settings described above (timezone, keyboard, language, etc) it could also capture things like:
- device settings: printers settings, display settings,
- network settings: dial-up settings, IP address, proxy settings
- office applications: last documents open, default font, custom templates, default page layouts
- multimedia playlists
- desktop: shortcuts to files and applications (automatically create links on the gnome destop to the same files and equivelent applications), wallpaper, "Quick Launch" buttons
- browser favourites/bookmarks, history, connection details
- email client mailbox settings
This step could even customise the applications installed, so is an there is application in the XP setup which Ubuntu does not load on a standard install, it could offer to download an equivalent after the install.
The application would create an xml file with all the settings, and copy these across along with the user's files to /boot. Ubuntu would install as above and a script would run after the install to import the settings and create links to the files.
comments added by JordiMassaguer
A project that does subset of that has been created at sourceforge:
comments added by Viper550
We could use ExperienceUI to make the installer mimic Ubuntulooks for the UI...