Suggestion: Installation Program for Windows
akikkeg02 at sneakemail.com
Thu Jun 30 16:58:43 UTC 2005
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.
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
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 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 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 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. 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.
More information about the ubuntu-users