For a while, I've thought that if Windows users could install Linux as easily as they
can install any Windows program, they might be more likely to give Linux a try. When I
came across
http://marc.herbert.free.fr/linux/win2linstall.html I realized that it could
be fairly simple to create such an installation program using existing tools. Here's
a rough sketch of how such an installer might work, taking advantage of WINGRUB or
GRUB4DOS (
http://grub4dos.sourceforge.net/) to allow a removeable media-less installation.
(WINGRUB and GRUB4DOS allow a computer to boot into linux on a FAT or NTFS partion.)
This system need not be wedded to any particular distribution, and different distributions
will surely have varying ideas on how best to implement it.
intro explanation
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
if NT
append WINGRUB to boot.ini, set as default boot option
copy kernel, initrd, linux.iso, boot.lst to \boot
if 9x
something similar with GRUB4DOS , never done it myself
reboot
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)
reboot
next boot (windows or linux)
check installation log
ask to send results to database
delete \boot
first linux boot
set up user
run program to copy over all windows documents, pictures, audio files, maybe even
some settings
Let me explain the installation process in plain English. In the first step, I imagine
that the installer will 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 directo!
ry, 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 it's 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 p!
artition). On the first linux boot, the user would be prompt!
ed to cr
eate 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. In an ideal world, a
linux program would offer to copy over the user's files (and possibly some settings)
from the windows partition.
Unfortunately, although I am computer literate, I have only the most basic programming
skills and do not have the knowledge necessary to create this system. 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 and anaconda could serve as the linux part of the
installer. The only thing left to do is to put these pieces together. If anybody
actually reads this far, what do you think? Is this even a good idea? Would you be
willing to work on this? Do you have any suggestions on other places to post this message
(so far, I've only posted it to the Ubuntu users list and the Fedora Core desktop
list)? Thank you for taking the time to read and consider this idea.
Best, Michael