Showing posts with label Grub. Show all posts
Showing posts with label Grub. Show all posts

Saturday, 5 October 2013

GRUB2 and Ubuntu

 

  • GRUB2 is the default boot loader from Ubuntu 9.10.
  • To determine which version of GRUB is installed, use the following command:

                    grub-install -v

  • The grub configuration file is “/boot/grub/grub.cfg .
  • The “grub.cfg” file is updated using the script files located in the folder “/etc/grub.d/ and the file/etc/default/grub”.
  • The script files located in the “/etc/grub.d/” folder are the following:

File

Purpose of the File

00_header For setting environment variable
05_debian_theme Setting the GRUB2 menu theme
10_linux For adding the kernels of Ubuntu to GRUB2Menu
20_memtest86+ For adding memtest86+ to the GRUB2 menu
30_os-prober For adding other OSs loaded in the system
30_uefi-firmwire For adding entry related to UEFI firmwire
40_custom For adding custom menu entries to GRUB2 menu
  • The file “/etc/default/grub” contains the GRUB2 menu configuration values like timeout, background picture location, default entry, etc…
  • The command used to update the “grub.cfg” file is “update-grub .
  • The command will execute the script file in the order of numerical values appended before their name.

 

A sample “grub.cfg” entry

#
# 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 [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

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 {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
else
  search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_IN
  insmod gettext
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
else
  search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
fi
insmod jpeg
background_image -m stretch /home/sreeraj/Pictures/1.jpg
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=100
fi
set superusers="sreeraj"
password sreeraj l2o9i7b5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
else
  search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
fi
insmod jpeg
if background_image /home/sreeraj/Pictures/1.jpg; then
  set color_normal=black/black
  set color_highlight=black/green
  true
else
  set menu_color_normal=red/black
  set menu_color_highlight=black/light-gray
  if background_color 44,0,30; then
    clear
  fi
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
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-fee98781-9046-4ee7-b7d2-e9017c5caa4a' {
recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
    else
      search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
    fi
    linux    /boot/vmlinuz-3.8.0-19-generic root=UUID=fee98781-9046-4ee7-b7d2-e9017c5caa4a ro   noquite splash $vt_handoff
    initrd    /boot/initrd.img-3.8.0-19-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-fee98781-9046-4ee7-b7d2-e9017c5caa4a' {
    menuentry 'Ubuntu, with Linux 3.8.0-19-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-advanced-fee98781-9046-4ee7-b7d2-e9017c5caa4a' {
    recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
        else
          search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
        fi
        echo    'Loading Linux 3.8.0-19-generic ...'
        linux    /boot/vmlinuz-3.8.0-19-generic root=UUID=fee98781-9046-4ee7-b7d2-e9017c5caa4a ro   noquite splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd    /boot/initrd.img-3.8.0-19-generic
    }
    menuentry 'Ubuntu, with Linux 3.8.0-19-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-recovery-fee98781-9046-4ee7-b7d2-e9017c5caa4a' {
    recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
        else
          search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
        fi
        echo    'Loading Linux 3.8.0-19-generic ...'
        linux    /boot/vmlinuz-3.8.0-19-generic root=UUID=fee98781-9046-4ee7-b7d2-e9017c5caa4a ro recovery nomodeset
        echo    'Loading initial ramdisk ...'
        initrd    /boot/initrd.img-3.8.0-19-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,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
    else
      search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
    fi
    linux16    /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  fee98781-9046-4ee7-b7d2-e9017c5caa4a
    else
      search --no-floppy --fs-uuid --set=root fee98781-9046-4ee7-b7d2-e9017c5caa4a
    fi
    linux16    /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
### 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  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

 

A sample “/etc/default/grub” entry

# 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=100
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="noquite splash"
GRUB_CMDLINE_LINUX=""
GRUB_BACKGROUND="/home/sreeraj/Pictures/1.jpg"

# 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"

Monday, 23 September 2013

Splash Image for Grub in Ubuntu


Let us see how we can set a background image for GRUB as well as set the colours for the entries properly.
First login to Ubuntu. Then edit the file “/etc/grub.d/05_debian_theme” as shown below. Add the highlighted lines to the file as shown below at the exact position. After editing save and close the file.

The highlighted entries above are used to set the normal color as well as highlighted colors for the text in the grub menu. The first one “color_normal” will set the normal text color. Please don’t change the value “black” after the slash. {This black is treated as transparency}
The “black” before the slash can be changed as you desire so that the text is more clear with background image. The second one is “color_highlight”. Here you can change both the colors, those before and after the slash as you wish.
Now update the file “/etc/default/grub” as shown below. Add the highlighted entry into the file. After editing save and close the file

The entry “GRUB_BACKGROUND” holds the path to the image file, which should appear as the background of GRUB. The path can be any location where the image resides.
Now run the command “update-grub” as root in the terminal. See the image below for knowing what happens.

Now reboot the system and you will be able to see the GRUB as below. As you can see the background image is the one I specified. I have set the “normal_color” values to “black/black”. So all the text are black. The value for “color_highlight” is “black/green”. So you can the highlighted background is green and the text is black.

Sunday, 22 September 2013

Making Grub menu displayed even if only Ubuntu is installed


To have this change first login to Ubuntu. Then open the terminal and issue the following command
sudo vi /etc/default/grub
Then comment the entryGRUB_HIDDEN_TIMEOUT=0” as shown below. And let us set the value of “GRUB_TIMEOUT” to 100 (meaning 100 seconds).

After that run the following command
sudo update-grub
Now restart the system. you can see something like the one shown below


One of the other method is to simply Press and Hold down the right SHIFT key while the system is booting.