Thursday, 23 May 2013

A brief tutorial on GRUB boot loader

A boot loader is a software program that runs when a computer boot. It's responsible for loading and transferring control to an operating system kernel software. The kernel, in turn, initializes the rest of the operating system. 
GRUB (GRand Unified Boot-loader) or GNU GRUB is a very powerful multi-boot loader, which can load a wide variety of free operating systems, as well as proprietary operating systems with chain-loading. GRUB is designed to address the complexity of booting a personal computer. One of the important features in GRUB is flexibility; GRUB understands filesystems and kernel executable formats, so you can load an arbitrary operating system the way you like, without recording the physical position of your kernel on the disk. Thus you can load the kernel just by specifying its file name and the drive and partition where the kernel resides.
When booting with GRUB, you can use either a command-line interface or a menu interface. Using the command-line interface, you type the drive specification and file name of the kernel manually. In the menu interface, you just select an OS using the arrow keys. The menu is based on a configuration file which you prepare beforehand. While in the menu, you can switch to the command-line mode and vice-versa. You can even edit menu entries before using them.

Contents of GRUB
Installed programs:              
grub-bios-setup, grub-editenv, grub-fstest, grub-install, grub-kbdcomp, grub-menulst2cfg, grub-mkconfig, grub-mkimage, grub-mklayout, grub-mknetdir, grub-mkpasswd-pbkdf2, grub-mkrelpath, grub-mkrescue, grub-mkstandalone, grub-ofpathname, grub-probe, grub-reboot, grub-script-check, grub-set-default, grub-sparc64-setup

Installed directories:                
/usr/lib/grub, /etc/grub.d, /usr/share/grub, /boot/grub

Short Descriptions
grub-bios-setup                 Is a helper program for grub-install
grub-editenv                      A tool to edit the environment block
grub-fstest                         Tool to debug the filesystem driver
grub-install                        Install GRUB on your drive
grub-kbdcomp                   Script that converts an xkb layout into one recognized by GRUB
grub-menulst2cfg              Converts a GRUB Legacy menu.lst into a grub.cfg for use with GRUB 2
grub-mkconfig                   Generate a grub config file
grub-mkimage                   Make a bootable image of GRUB
grub-mklayout                   Generates a GRUB keyboard layout file
grub-mknetdir                   Prepares a GRUB netboot directory
grub-mkpasswd-pbkdf2    Generates an encrypted PBKDF2 password for use in the boot menu
grub-mkrelpath                 Makes a system pathname relative to its root
grub-mkrescue                  Make a bootable image of GRUB suitable for a floppy disk or CDROM/DVD
grub-mkstandalone           Generates a standalone image
grub-ofpathname               Is a helper program that prints the path of a GRUB device
grub-probe                         Probe device information for a given path or device
grub-reboot                        Sets the default boot entry for GRUB for the next boot only
grub-script-check              Checks GRUB configuration script for syntax errors
grub-set-default                 Sets the default boot entry for GRUB
grub-sparc64-setup           Is a helper program for grub-setup

GRUB configuration file is located in grub directory. Pathname: /boot/grub/grub.cfg. This file is required when you want to change the order in boot menu.