Cheatsheet: Difference between revisions
Content added Content deleted
Line 503: | Line 503: | ||
== Linux Booting == |
== Linux Booting == |
||
= Linux Booting Process = |
|||
⚫ | |||
Source: [http://technochords.com/linux-booting-process-6-steps/ technochords.com] |
|||
⚫ | |||
⚫ | |||
The following are the 6 high level stages of a typical Linux boot process: |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
;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 |
0 – halt |
||
1 – Single user mode |
1 – Single user mode |
||
Line 515: | Line 566: | ||
5 – X11 |
5 – X11 |
||
6 – reboot |
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 |
|||
*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 == |
== Manually Boot using Grub == |