A linux Distribution system (shortened-distro) is a member of Unix-like operating systems that are built on linux kernel (Stanfield, 8). There are more than six hundred Linux Distributions half of which are currently being actively developed and improved. The linux distribution system includes a large set of software applications such as spreadsheets, word processors, database applications and media players (Stanfield, 12). The operating systems consist of a set of utilities and libraries from the GNU Project which aims at giving computer users more freedom in the usage of their computing devices. According to Stanfield, Linux Distribution systems are optimized to accommodate varied software applications (12). The following is the start-up process for a typical Linux Distribution System.
Whenever starting a computer a few things happen regardless of the operating system it is using. The powers supply checks itself to ensure it can maintain the power demands of the computer and then the computer checks for a Read Only Memory (ROM) to locate the Basic Input Output System (BIOS) (Eriksen, 3). The BIOS is loaded and runs some diagnostic tests to boot accordingly and then queries the CMOS (a ROM powered by a small watch battery) to locate the actual boot device (CD, hard-drive etc). The BIOS then runs the boot loader from the selected device (Feldman, 7). There are basically two Boot loaders selected when starting up a Linux system- GRUB (GRand Unified Bootloader) and LILO (LInux LOader) (Eriksen, 3). This start-up process is based on GRUB since it is the more improved of the two. The BRUB bootloader is located in the file /boot/grub directory on Linux.
When the CMOS selects the hard drive GRUB is divided into three parts or stages the most important being the Master Boot Record (MBR). The MBR establishes a partition table that shows how many partitions there are on the hard disk as well as their locations (Feldman, 8). The partition identified as the bootable partition contains the boot loader code. The stages are named stage 1, stage 1.5 and stage 2. The first stage is contained in the MBR and it involves scanning the hardware, loading some modules and starting the initial booting processes.
Once stage 1completes running from the MBR, stage 2 which is located in the bootable partition’s loader code is initiated. This stage reads a file called the /boot/grub/menu.lst. This file provides data that is needed to in order to display the boot menu (Feldman, 6). The boot menu presents the screen with multiple kernels with the same or different distributions such as Fedora and SuSE. When one selects one of the displayed Linux Distribution systems, its set up code is initialized. The setup code then loads the compressed kernel using the decompress_kernel ( ) function (Eriksen, 7). The message ‘uncompressing Linux’ is displayed on the screen. The decompressed kernel now takes over the execution of linux processes by initializing the scheduler, console, irqs, hardware etc. The start_kernel ( ) function starts all these processes. The kernel_thread ( ) function then starts init. This is basically the first and most important process in all Unix and Linux systems as well as other non-kernel processes spawned by init- (init is a program that starts the appropriate terminals and scripts when starting up the said types of Operating Systems) (Eriksen, 4).
The init boot parameter instructs the Linux kernel which program to use. In case the parameter is not specified, the kernel tries to execute ‘/sbin/init’, ‘/etc/init’, ‘/bin/init’ or ‘/bin/sh’ in that order (Feldman, 8). Alternatives to using the init exist and one can actually use any executable file in the place of init. A program written in C could be a viable alternative.
Most systems use System V init which reads its configuration from ‘inittab’ file located in the ‘etc’ directory. By editing the inittab file system one makes the system to use six runlevels. In order to initiate runlevels some setting specify the default runlevel, the terminals (in most cases six run levels are defined) as well as the scripts that need to be run at each runlevel. In each of the scripts there is need to specify to start as it happens when mounting filesystems and setting up localnet (Feldman, 8). Several entries are specified with “respawn” a parameter which instructs init to continually execute the next program whenever the previous one exits. In case one logs out, init respawns the Getty process and allows another login. Linux runlevels uses up to runlevel 6, that is from 1 through to 6. Run level 6 is the last runlevel and it causes a reboot upon completion of the installation process (Eriksen, 7).
Once init finishes with the start-up scripts, it then runs the Getty process on each of the terminals earlier specified in the inittab. Getty is what one sees when logging in. Once the operator inputs a , the Getty process runs the login and prompts for a password (Eriksen, 8). There are several ways in which one can alter the string up behavior and even speed up the process. In comparison to other Operating Systems, Linux is a more complex system to use and users need to continually engage themselves to learn more about it. This helps them to reap maximally from its benefits which among others include low susceptibility to viral and malware attacks.
Works cited
Eriksen Daniel. The Linux Boot Process. A presentation for the Bruce Grey Linux Users Group April 06, 2004. Retrieved Feb. 6 2013 from http://www.bglug.ca/articles/linux_boot_process.pdf
Feldman, Jerry. The Linux Start-up Process. The Linux Expertise Center. Hewett-Packard Company. N.d. Retrieved Feb. 6 2013 from http://blu.org/meetings/2006/06/Linux_Startup.pdf
Stanfield, Vicki. Linux System Administration. Hoboken: John Wiley & Sons, 2006. Print