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 a 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 boot loader commonly used for booting from a CD-ROM.
Boot process (from a CD-ROM):
- PC initializion phase - BIOS, POST.
- ISOLINUX is invoked from a bootable CD (
isolinux.bin
). - ISOLINUX loads the kernel from the CD-ROM device (the
/isolinux
directory on the CD). - ISOLINUX loads the the initrd image (
initrd.img
). - The kernel then takes over, and attempts to decompresses the initrd.img into memory (
/dev/ram0
), and mounts this new filesystem as root (/
). - The kernel attempts to run
/linuxrc
in the newly created root filesystem. - The linuxrc program then mounts the CD-ROM (by trial and error), and decompresses a 'true' root filesystem from CD-ROM to
/dev/ram1
. - 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. - The kernel runs the
/sbin/loader
binary which then invokes the anaconda installer.
Anaconda process:
- Probe for hardware devices (eg. CD/DVD drives, hard-drives, etc)
- Prompt to test CD for errors screen
- Probe for video card
- Probe for monitor
- Probe for mouse
- Welcome to Fedora Core introduction screen
- Language Selection for the installation screen
- Keyboard Configuration screen
- Mouse Configuration screen
- Monitor Configuration screen
- Search for existing Fedora Core/Red Hat Linux installations
- Upgrade existing installation or perform fresh Fedora Core installation screen
- Installation Type screen [Personal Desktop, Workstation, Server, Custom]
- Disk Partitioning Setup screen [Automatically Partion, Manually Partition with Disk Druid]
- Boot Loader Selection screen
- Network Configuration screen
- Firewall Configuration screen
- Default Language Selection for the system and install of additional languages screen
- Time Zone Selection screen
- Root Password Selection screen
- Package Selection screen [Default Packages, Custom Package Selection]
- Formatting of configured filesystems
- Transfer of install image to hard drive
- Installation of Packages
- Reboot screen. Congratulations, the installation is complete