Linux |
||
GRUB
GRUP stands for GRand Unified Bootloader. As its name implies it is a special program (code) performing the bootloading of the operating system. Bootloading is quite complicated sequence. The program for this whole process tend to be too large to be stored in MBR(Master Boot Recorder). So,they split the GRUP into two parts Stage 1 and Stage 2. Stage 1 is very short code that can be packed into MBR and the most important function of Stage 1 is to make jump to the location of Stage 2 code.
Now we have two different type of GRUBs. One is the original (old, legacy) version.. which is usually called as GRUB. The other one which is newer / more flexible version and it is called GRUB 2.
Where can you find GRUB ?
Followings are some common locations for GRUB files, but in realy, you may see a lot of variations of location of these files or in some case you may not find some of these file names. So you may dig into these on your own for your own Linux)
If your system is using the legacy type GRUB, the GRUB file would be located at /boot/grub/menu.lst /boot/grub/device.map /etc/grub.conf
If your system is using GRUB2, the GRUP file would be scattered in a few different locations (the exact directory name may vary depending on the Linux distribution you are using). The grup.cfg is a kind of main file and it call multiple additional files which are located at various different locations. /etc/grub2/grub.cfg /etc/default/grub /etc/grub.d/
Example > =======================================================
In my Ubuntu, there is no '/etc/grub2/' directory. Followings are the grub files/directories in my Ubuntu /boot/grub.cfg /etc/default/grub /etc/grub.d/
< /boot/grub.cfg >
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #
### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then set have_grubenv=true load_env fi set default="0" if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi
function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi }
function recordfail { set recordfail=1 if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi }
function load_video { insmod vbe insmod vga insmod video_bochs insmod video_cirrus }
insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=auto load_video insmod gfxterm insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 set locale_dir=($root)/boot/grub/locale set lang=en_US insmod gettext fi terminal_output gfxterm if [ "${recordfail}" = 1 ]; then set timeout=-1 else set timeout=10 fi ### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=white/black set menu_color_highlight=black/light-gray if background_color 44,0,30; then clear fi ### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ### function gfxmode { set gfxpayload="${1}" if [ "${1}" = "keep" ]; then set vt_handoff=vt.handoff=7 else set vt_handoff= fi } if [ "${recordfail}" != 1 ]; then if [ -e ${prefix}/gfxblacklist.txt ]; then if hwmatch ${prefix}/gfxblacklist.txt 3; then if [ ${match} = 0 ]; then set linux_gfx_mode=keep else set linux_gfx_mode=text fi else set linux_gfx_mode=text fi else set linux_gfx_mode=keep fi else set linux_gfx_mode=text fi export linux_gfx_mode if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi menuentry 'Ubuntu, with Linux 3.5.0-31-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 linux /boot/vmlinuz-3.5.0-31-generic root=UUID=3f34391d-26a7-4182-b70b-755dc9ef9704 ro quiet splash $vt_handoff initrd /boot/initrd.img-3.5.0-31-generic } menuentry 'Ubuntu, with Linux 3.5.0-31-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 echo 'Loading Linux 3.5.0-31-generic ...' linux /boot/vmlinuz-3.5.0-31-generic root=UUID=3f34391d-26a7-4182-b70b-755dc9ef9704 ro recovery nomodeset echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.5.0-31-generic } submenu "Previous Linux versions" { menuentry 'Ubuntu, with Linux 3.5.0-23-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 linux /boot/vmlinuz-3.5.0-23-generic root=UUID=3f34391d-26a7-4182-b70b-755dc9ef9704 ro quiet splash $vt_handoff initrd /boot/initrd.img-3.5.0-23-generic } menuentry 'Ubuntu, with Linux 3.5.0-23-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 echo 'Loading Linux 3.5.0-23-generic ...' linux /boot/vmlinuz-3.5.0-23-generic root=UUID=3f34391d-26a7-4182-b70b-755dc9ef9704 ro recovery nomodeset echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.5.0-23-generic } } ### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ### menuentry "Memory test (memtest86+)" { insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 linux16 /boot/memtest86+.bin } menuentry "Memory test (memtest86+, serial console 115200)" { insmod part_msdos insmod ext2 set root='(hd0,msdos5)' search --no-floppy --fs-uuid --set=root 3f34391d-26a7-4182-b70b-755dc9ef9704 linux16 /boot/memtest86+.bin console=ttyS0,115200n8 } ### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ### menuentry "Linpus (3.1.5) (on /dev/sda1)" --class gnu-linux --class gnu --class os { insmod part_msdos insmod ext2 set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set=root 7d86331e-7767-473f-a0a6-b849feae7344 linux /boot/vmlinuz ro root=/dev/sda1 nolapic_timer loglevel=1 acpi_osi=Linux pcie_aspm=off acpi=copy_dsdt pci=nocrs irqpoll initrd /boot/initrd.img.gz } ### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ### ### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ### if [ -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ###
< /etc/default/grub >
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console
# The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
< files in /etc/grub.d/ >
-rwxr-xr-x 1 root root 6743 Jan 22 2013 00_header -rwxr-xr-x 1 root root 5522 Jan 22 2013 05_debian_theme -rwxr-xr-x 1 root root 7780 Jan 22 2013 10_linux -rwxr-xr-x 1 root root 6335 Jan 22 2013 20_linux_xen -rwxr-xr-x 1 root root 1588 Nov 27 2011 20_memtest86+ -rwxr-xr-x 1 root root 7603 Jan 22 2013 30_os-prober -rwxr-xr-x 1 root root 1388 Jan 22 2013 30_uefi-firmware -rwxr-xr-x 1 root root 214 Jan 22 2013 40_custom -rwxr-xr-x 1 root root 95 Jan 22 2013 41_custom -rw-r--r-- 1 root root 483 Jan 22 2013 README
NOTE : all of these files contains script in it
Reference :
[1] GRUB bootloader - Full tutorial [2] How to Configure the GRUB2 Boot Loader’s Settings [3] The GRUB MBR(being the GRand Unified BootLoader's "stage1" Sector )
|
||