JPHHLASH

startup

Home
header files
Linux Commands
access windows partition from linux
startup
compiling from source code
how to run C/C++ programs in linux
some useful shell scripts
environment variables
fork and exec
Using apache
php in linux
read/write in linux

Heres what happens at the startup of the system.

1.BIOS

~~~~~~~~~~~~~~~~~~~~~~~

Your system contains RAM(Rapid access memory) and ROM(Read only memory).RAM is the volatile memory which erases itself each time the computer.ROM is the permanent one which doesnt change even after switching it off.ROM is embedded into the system by the manufacturers itself. BIOS is such a ROM. On swicthing on the system, comes the splash screen of the BIOS.On pressing Del ,you can change the configuration of the BIOS then.The BIOS goes to the master boot record(MBR) of the IDE or SCSI drive and loads a small program(Grub /lilo ) which gives you the choice which operating system to load.

2.Grub/lilo

~~~~~~~~~~~~~~~~~~~~~~~

Grub(Grand Unified Boot loader) or lilo (linux loader) presents you with the list of operating systems, the system has currently and gives you the choice which one to load.One can edit the /boot/grub/menu.lst and alter the set of operating systems presented ot add new one.For editing lilo one has to go to edit /etc/lilo.conf.One can set a default operating system which loads straightaway without waiting for the users choice. Well this is the way it is for a single operating system computer anyway.
Some basic differences between Lilo and Grub is:-
~ Grub has interactive command interface whereas lilo doesnt.
~Grub locates files by path number where lilo does it by locating block numbers.
~One has to run lilo after making change in the lilo.conf.If its in MBR, then MBR is overwritten everytime.But Grub neednt recompile after making changes in menu.lst.
~LILO is the older one.
These bootloaders loads the kernel image chosen into the RAM.

3.Kernel

~~~~~~~~~~~~~~~~~~~~~~~

The kernel is the program that contains the central core of the operating system.The kernel is the first part of operating system to be loaded into the memory during booting.It remains there until system shuts down.Because of its critical nature, kernel code is usually loaded into a protected area of a memory.So kernel code should be as small as possible.When they say that computer has crashed , it actually means the kernel has crashed.
The kernel initailises devises.It decompresses and mounts initrd which loads all necessary drivers.
It then loads the root filesystem in read only mode and frees unused memory.
It then transfer control to /sbin/init program.This program will run in background and is the process number 1.

/etc/initab


The init process then reads the /etc/inittab .That file describes how the INIT process should set up the system in a certain run-level.
It sets the default runlevel.
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)

it does the system initialisation
It runs various initialisation scripts.
debian runs
/etc/rcS.d/S* and /etc/rc.boot/
/etc/rc3.d/S* scripts
redhat runs
/etc/rc.d/rc.sysinit
/etc/rc.d/rc3.d/S* scripts
These script sets environment path,sets up swap space,checks filesystems etc.

It sets the interrupt trap.It sets the powerfailure shutdown timings and restoration if power comes.
It then Run gettys in standard runlevels.
The /etc/inittab also forks an /sbin/mingetty process.This process opens communication pathways to tty devices,sets thier modes,prints the login prompt ,accept username /password and initiates the login process.

GRUB

Grand Unified Bootloader is a versatile boot loader.

sample /boot/grub/menu.lst

---------------------------------------------------------
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default 6

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
#color cyan/blue white/blue
color white/blue
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/sda9 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd1,8)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery mode) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

title Ubuntu, kernel 2.6.15-23-amd64-generic
root (hd1,8)
kernel /boot/vmlinuz-2.6.15-23-amd64-generic root=/dev/sda9 ro quiet splash
initrd /boot/initrd.img-2.6.15-23-amd64-generic
savedefault
boot

title Ubuntu, kernel 2.6.15-23-amd64-generic (recovery mode)
root (hd1,8)
kernel /boot/vmlinuz-2.6.15-23-amd64-generic root=/dev/sda9 ro single
initrd /boot/initrd.img-2.6.15-23-amd64-generic
boot

title Ubuntu, memtest86+
root (hd1,8)
kernel /boot/memtest86+.bin
boot

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root


# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/hda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda7.
title Fedora Core (2.6.18-1.2798.fc6) (on /dev/hda7)
root (hd0,6)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-1.2798.fc6.img
savedefault
boot


# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd1,0)
savedefault
makeactive
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda7.
title MEPIS at sda8, kernel 2.6.15-1-586tsc (on /dev/sda7)
root (hd1,6)
kernel /boot/vmlinuz-2.6.15-1-586tsc root=/dev/sda8 nomce quiet vga=normal acpi=off apm=power_off noacpi
savedefault
boot

---------------------------------------------------------

Note that hd0 is the ATA drive(ie hda) and hda1 is the SATA drive(ie sda).The number suceeding hd0 or hda1 is the parition number minus 1.
eg
(hd0,8)means the hda9 partition.
and
(hda1,0)means the sda1 partition.

Feedback, query, ideas? Email crenshaw_jo@yahoo.com.