We need to
When booting into this image, the fdisk script is downloaded (from the web), and executed. This inturn downloads the real fdisk.sh script, and all the files it needs at the place, where it expects to find them. Finally, it hands over control to the fdisk.sh script.
The fdisk.sh script, partitions the hard disk and formats the different file systems. Then comes the hardware probing stage. It identifies the Network Card, Sound Card and Video Card (and the linux/X drivers needed) and identifies the CDROM and CDRW drives present on the system. Then it asks the user for more configuration information (some of the options given to the user depends on the result of the hardware probing) and creates scripts containing these answers, and drops them into the appropriate partitions.
For Linux, we should be able to create ext3 filesystems, and for Windows we need to be able to create FAT32/NTFS filesystems. The windows installation starts from DOS, which cant read NTFS file system. On the other hand, we want to install windows on an NTFS file system, since FAT32 does not have the concept of permissions. Ofcourse other FAT file systems have unreasonable (by todays standards) limits of the file system size. So, we use linux to partition the hard disk, and create ext3 and FAT32 filesystem (and Linux swap), and install a DOS Master Boot Record so that we can actually boot off the hard disk.
In this phase, we need to identify all the hardware components, and configure them for use with Linux. This basically, amounts to identifying the linux driver for the hardware components we are interested in. The hardware components we are interested in are
As of this writing, I dont know how to identify the Monitor settings. Identifying Network Card, Sound Card and Video Card and many other peripherals can be done using the discover package. This is used by many linux distribution as part of their install procedure. It comes along with a database which maps PCI and AGP information (like the Manfacturer ID and Device ID) to human readable descriptions and linux module/X driver details.
During this phase, we first identify the Network Card, Sound Card and Video Card. Then we ask the user to select a monitor from a predefined list of monitors. The Video Card and the monitor together determine which XF86Config file the new machine is going to use.
In this stage, we collect some network information from the user. They include
If this is a dual boot installation, then we collect the above information for both the operating systems.
Once all the information has been collected, we create a file containing this information and drop it in the appropriate file system. For e.g. in case of a dual boot machine, we may have C:\wininfo.bat (a.k.a. /dev/hda1/wininfo.bat) containing
rem -- This is a batch file which sets some environment variables based on
rem -- configuration options selected.
rem -- subnet=0 implies DHCP
SET MY_HOSTNAME="winhost"
SET MY_DHCP=yes
SET MY_SUBNET=0
SET MY_IPADDR=0
Similarly the file /dev/hda3/lininfo may have
#!/bin/bash
# This file contains configuration options
# MY_PWDCLASS decides which group of people are allowed to login to this machine.
# MY_CONF decides the X driver and monitor combination.
# MY_NET_MOD and MY_SND_MOD determine the network and sound modules.
export MY_HOSTNAME="linhost"
export MY_SUBNET=11
export MY_IPADDR=127
export MY_PWDCLASS=rsrch
export MY_XCONF=mga.sony
export MY_NET_MOD="natsemi"
export MY_SND_MOD="cmpci"
Once this information has been saved on the respective partitions, the actual OS installation can proceed without any user intervention.