Cheatsheet: Difference between revisions

Line 503:
== Linux Booting ==
 
= Linux Booting Process =
*BIOS
Source: [http://technochords.com/linux-booting-process-6-steps/ technochords.com]
*MBR
 
*GRUB
The following are the 6 high level stages of a typical Linux boot process:
*Kernel
 
*Init
*#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
Line 515 ⟶ 566:
5 – X11
6 – reboot
 
*Runlevel programs
*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
*If you want to get into trouble, you can set the default run level to 0 or 6. Since you know what 0 and 6 means, probably you might not do that.
*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 ==