From Fedora Project Wiki

I. Introduction to Anaconda

1. Anaconda - the Fedora Core installation program

Anaconda is the installation program for Fedora Core and Red Hat Linux distributions. During installation, the system's hardware is identified and configured, and the appropriate file systems for the system's architecture are created. It then allows for the installation of various software packages. Anaconda can also be used to upgrade existing Fedora Core or Red Hat installations.

Anaconda is able to run in text mode for older machines or graphical mode for most modern machines. It also has the ability to be run in a fully automated mode, through the use of a _kickstart_ file, allowing for the installation to be scripted for unattended operation. Anaconda can also be used to install systems over a network, through any of the common networking protocols (eg. ftp, http, nfs). This makes the process of deploying hundreds, or even thousands of systems very quick, efficient and easy to manage.

The majority of Anaconda is written in Python, with a small initial loader written in C. The code is distributed under the GPL. The graphical frontend is written with pyGtk. Using a scripting language such as Python for the majority of the code allows for a simple distribution of updates and rapid development of new features.

2. The Anaconda installation procedure (from a bootable CD)

Booting from a CD-ROM requires different boot processes compared to booting from a hard drive. The Linux kernel doesn’t really know how to boot from a CD-ROM. When booting from a CD-ROM, an initrd (initial ramdisk) is used as the root filesystem. The initrd is loaded by the _boot loader_ - not the kernel. This makes it possible to boot from any device accessible to the bootloader. ISOLINUX is the bootloader commonly used for booting from a CD-ROM.

Boot process (from a CD-ROM):

  1. PC initializion phase - BIOS, POST.
  2. ISOLINUX is invoked from a bootable CD (isolinux.bin).
  3. ISOLINUX loads the kernel from the CD-ROM device (the /isolinux directory on the CD).
  4. ISOLINUX loads the the initrd image (initrd.img).
  5. The kernel then takes over, and attempts to decompresses the initrd.img into memory (/dev/ram0), and mounts this new filesystem as root (/).
  6. The kernel attempts to run /linuxrc in the newly created root filesystem.
  7. The linuxrc program then mounts the CD-ROM (by trial and error), and decompresses a 'true' root filesystem from CD-ROM to /dev/ram1.
  8. The kernel takes over and mounts the newly configured root filesystem. The new filesystem is mounted and a softlink for the CD-ROM is added to the /dev directory, so that the system has access to the CD-ROM.
  9. The kernel runs the /sbin/loader binary which then invokes the anaconda installer.

Anaconda process:

  1. Probe for hardware devices (eg. CD/DVD drives, hard-drives, etc)
  2. Prompt to test CD for errors screen
  3. Probe for video card
  4. Probe for monitor
  5. Probe for mouse
  6. Welcome to Fedora Core introduction screen
  7. Language Selection for the installation screen
  8. Keyboard Configuration screen
  9. Mouse Configuration screen
  10. Monitor Configuration screen
  11. Search for existing Fedora Core/Red Hat Linux installations
  12. Upgrade existing installation or perform fresh Fedora Core installation screen
  13. Installation Type screen [Personal Desktop, Workstation, Server, Custom]
  14. Disk Partitioning Setup screen [Automatically Partion, Manually Partition with Disk Druid]
  15. Boot Loader Selection screen
  16. Network Configuration screen
  17. Firewall Configuration screen
  18. Default Language Selection for the system and install of additional languages screen
  19. Time Zone Selection screen
  20. Root Password Selection screen
  21. Package Selection screen [Default Packages, Custom Package Selection]
  22. Formatting of configured filesystems
  23. Transfer of install image to hard drive
  24. Installation of Packages
  25. Reboot screen. Congratulations, the installation is complete