Cheatsheet: Difference between revisions

Content added Content deleted
Line 759: Line 759:
== Linux Booting ==
== Linux Booting ==


#BIOS(Basic Input/Output System) - POST, Loads and executes the MBR boot loader.

#MBR (Master Boot Record) - Loads and executes the GRUB boot loader.
Source: [http://technochords.com/linux-booting-process-6-steps/ technochords.com]
#GRUB (Grand Unified Bootloader) - Loads and executes Kernel and Initrd images.

#Kernel - Heart of OS; Memory, Process mgmt; Executes INIT process.
The following are the 6 high level stages of a typical Linux boot process:
#Init (initialization) - Decides the Linux run level; default run level to either 3 or 5.

#Runlevel programs - Executes programs like sendmail, etc from the run level directory as defined by the run level.
#BIOS
#MBR
#GRUB
#Kernel
#Init
#Runlevel programs

;BIOS(Basic Input/Output System) - loads and executes the MBR boot loader.
*Performs some system integrity checks (POST-Power On Self Test)
*Searches, loads, and executes the boot loader program.
*It looks for boot loader in floppy, cd-rom, or hard drive.
*You can press a key (typically F12 of F2, but it depends on your system) during the BIOS startup to change the boot sequence.
*Once the boot loader program is detected and loaded into the memory, BIOS gives the control to it.

;MBR (Master Boot Record) - loads and executes the GRUB boot loader.
*It is located in the 1st sector of the bootable disk.
*Typically /dev/hda, or /dev/sda
*MBR is less than 512 bytes in size.
*This has three components:
#primary boot loader info in 1st 446 bytes,
#partition table info in next 64 bytes(16,16,16,16) 4 partitions,
#magic numbers as mbr validation check in last 2 bytes.
*It contains information about GRUB (or LILO in old systems).

;GRUB (Grand Unified Bootloader) - loads and executes Kernel and initrd images.
*It is a Multiboot boot loader.
*If you have multiple kernel images installed on your system, you can choose which one to be executed.
*GRUB displays a splash screen, waits for few seconds, if you don’t enter anything, it loads the default kernel image as specified in the grub configuration file.
*GRUB has the knowledge of the filesystem (the older Linux loader LILO didn’t understand filesystem).
*Grub configuration file is /boot/grub/grub.conf (/etc/grub.conf is a link to this).
<pre>
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
</pre>
*As you notice from the above info, it contains kernel and initrd image.

;Kernel
*Once the control is given to kernel which is the central part of all your OS and act as a mediator between hardware and software.
*Kernel once loaded into to RAM it always resides on RAM until the machine is shutdown.
*Once the Kernel starts its operations the first thing it do is executing INIT process.

;Init (initialization)
*Looks at the /etc/inittab file to decide the Linux run level.
*Following are the available run levels
0 – halt
1 – Single user mode
2 – Multiuser, without NFS
3 – Full multiuser mode
4 – unused
5 – X11
6 – reboot

*Init identifies the default initlevel from /etc/inittab and uses that to load all appropriate program.
*Execute ‘grep initdefault /etc/inittab’ on your system to identify the default run level
*Typically you would set the default run level to either 3 or 5.

;Runlevel programs
*When the Linux system is booting up, you might see various services getting started.
*For example, it might say “starting sendmail …. OK”.
*Those are the runlevel programs, executed from the run level directory as defined by your run level.
*Depending on your default init level setting, the system will execute the programs from one of the following directories.
Run level 0 – /etc/rc.d/rc0.d/
Run level 1 – /etc/rc.d/rc1.d/
Run level 2 – /etc/rc.d/rc2.d/
Run level 3 – /etc/rc.d/rc3.d/
Run level 4 – /etc/rc.d/rc4.d/
Run level 5 – /etc/rc.d/rc5.d/
Run level 6 – /etc/rc.d/rc6.d/

*Please note that there are also symbolic links available for these directory under /etc directly.
*So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
*Under the /etc/rc.d/rc*.d/ directories, you would see programs that start with S and K.
#Programs starts with S are used during startup. S for startup.
#Programs starts with K are used during shutdown. K for kill.
#There are numbers right next to S and K in the program names.
#Those are the sequence number in which the programs should be started or killed.
#For example, S12syslog is to start the syslog deamon, which has the sequence number of 12.
#S80sendmail is to start the sendmail daemon, which has the sequence number of 80.
#So, syslog program will be started before sendmail.


== Manually Boot using Grub ==
== Manually Boot using Grub ==