GRUB2 Quick Start

From Gentoo Wiki
Jump to:navigation Jump to:search

This article provides information on how to get up and running with GRUB in the simplest configurations. For a migration from GRUB Legacy to GRUB2, see GRUB2 Migration .

Installing GRUB software

To install GRUB, first set the GRUB_PLATFORMS variable with one or more appropriate values in the system's make.conf . If unset, GRUB will guess which platform to use on the system. It guesses pc (which is the MBR style of installation) for x86 / amd64 architectures.

Standard PC (BIOS) support:

FILE /etc/portage/make.conf PC BIOS GRUB_PLATFORMS example
GRUB_PLATFORMS="pc"

UEFI on amd64:

FILE /etc/portage/make.conf 64-bit UEFI GRUB_PLATFORMS example
GRUB_PLATFORMS="efi-64"

Both standard PC (BIOS) and UEFI support:

FILE /etc/portage/make.conf Multiple GRUB_PLATFORMS example
GRUB_PLATFORMS="efi-64 pc"

After the variable is set, emerge the software:

root # emerge --ask sys-boot/grub

Activating the GRUB boot loader

Mount /boot if applicable:

root # mount /boot

When using an EFI platform, make sure that the EFI System Partition is available (mounted) at /boot/efi . This can either be through a specific mount point (at /boot/efi ) or by having an entire /boot partition formatted with the FAT filesystem. This will effectually render /boot into a large EFI System Partition.

Presuming only /boot/efi is FAT:

root # mount /boot/efi

Run the grub-install utility to copy the relevant files to /boot/grub . On the PC platform, this also installs a boot image to the Master Boot Record (MBR) or a partition's boot sector.

To install GRUB to the MBR:

root # grub-install /dev/sda
Installation finished. No error reported.

To install GRUB on an EFI capable system:

root # grub-install --target=x86_64-efi
Installation finished. No error reported.

The grub-install command accepts a --target option to specify which CPU/Platform to install. If unspecified, grub-install will make a guess: on x86 / amd64 it will use the i386-pc value by default.

Automatic configuration

GRUB is configured by using the grub-mkconfig program to generate a configuration file.

grub-mkconfig generates the configuration file based on template sections located in /etc/grub.d . The default templates should cover most common boot setups.

user $ ls /etc/grub.d
00_header  10_linux  20_linux_xen  30_os-prober  40_custom  41_custom  README

The behavior of these templates can be controlled by setting variables in /etc/default/grub . See the GRUB manual for more information.

Kernel naming scheme

In order for grub-mkconfig to detect the available Linux kernel(s), their names must start with vmlinuz- or kernel- .

For example:

CODE Example kernel names that GRUB can detect
/boot/vmlinuz-3.4.3
 /boot/kernel-2.6.39-gentoo
 /boot/kernel-genkernel-x86_64-3.17.1-gentoo-r1

When using an initramfs , its name should start with initramfs- or initrd- and end with .img . The version must match one of a kernel image. File names generated by genkernel will also work.

For example:

CODE Example initramfs names that GRUB can detect
/boot/initrd.img-3.4.3
 /boot/initrd-3.4.3.img
 /boot/initrd-3.4.3.gz
 /boot/initrd-3.4.3
 /boot/initramfs-3.4.3.img
 /boot/initramfs-genkernel-3.4.3-gentoo
 /boot/initramfs-genkernel-x86_64-2.6.39-gentoo

To generate the grub.cfg file, execute the grub-mkconfig command like so:

root # grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.9
done

Silent kernel decompression

To silence kernel decompression at boot time, edit /etc/default/grub and add quiet to the GRUB_CMDLINE_LINUX_DEFAULT variable.

FILE /etc/default/grub Silent decompression example
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

systemd

To boot systemd while using GRUB configure the GRUB_CMDLINE_LINUX variable look like this:

Important
This is no longer necessary with sys-apps/systemd when the sysv-utils USE is enabled. This defaults to on with at least version 239 in Gentoo
FILE /etc/default/grub Systemd example
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"

Loading another operating system

grub-mkconfig can also generate configurations to load other operating systems. This requires the sys-boot/os-prober package.

To boot Windows, the sys-fs/ntfs3g also needs to be installed. It allows for the grub-mkconfig utility to probe NTFS filesystems.

Manual configuration

Use of grub-mkconfig is not required. The grub.cfg file can be edited manually as well.

Migrating from the GRUB Legacy config format to the GRUB 2 config format is usually quite simple, requiring a few minor syntax changes.

FILE grub.conf GRUB Legacy
timeout 5
 
'''<span style="color:maroon">title</span>''' Gentoo Linux 3.2.12
root '''<span style="color:maroon">(</span>'''hd0,'''<span style="color:maroon">0)</span>'''
'''<span style="color:maroon">kernel</span>''' /boot/kernel-3.2.12-gentoo root=/dev/sda3
<br>
FILE grub.conf GRUB
timeout'''<span style="color:green">=</span>'''5
 
'''<span style="color:green">menuentry '</span>'''Gentoo Linux 3.2.12'''<span style="color:green">' &#123;</span>'''
    root'''<span style="color:green">=</span>'''hd0,'''<span style="color:green">1</span>'''
    '''<span style="color:green">linux</span>''' /boot/kernel-3.2.12-gentoo root=/dev/sda3
'''<span style="color:green">&#125;</span>'''
Note
GRUB Legacy numbers partitions starting with 0; GRUB numbers partitions starting with 1. Both bootloaders number drives starting with 0.

See also

  • GRUB - The 'full' GRUB article contains more information and an extensive list of resources.