fbpx Certificação Linux: Grand Unified Boot Loader - GRUB 2 no Linux [Guia Básico]

Blog

Grand Unified Boot Loader - GRUB 2 no Linux [Guia Básico]

📅 07/03/2019 ⏱ 8 min ✍️ Uira Ribeiro
Linuxcomandoshow-to
Grand Unified Boot Loader - GRUB 2 no Linux [Guia Básico]

O Grand Unified Boot Loader - Grub 2 é o sistema de boot padrão do Ubuntu desde a versão 9.10 e de outras distribuições com versões mais recentes, em especial no Kernel 2.6 e 3.x. Conheça o poderoso GRUB 2.

O Grub 2 foi reescrito completamente com o objetivo de permitir grande flexibilidade e ganho de performance. Dentre as diversas melhorias, as principais são:

  • Suporte a script com expressões condicionais e funções;
  • Carga de módulos de forma dinâmica;
  • Modo de Emergência (Rescue Mode);
  • Menus Personalizados;
  • Suporte a temas;
  • Suporte a menu gráfico com tela “splash”;
  • Carga de imagens ISO de Live CDs;
  • Nova estrutura do arquivo de configuração;
  • Suporte a plataforma não x86 (ex: PowerPC);
  • Suporte universal a UUIDs (Universally Unique IDentifier) – identificador usado em sistemas distribuídos.

Upgrade do Grub 1 para o Grub 2

O upgrade do Grub 1 para o Grub 2 é relativamente fácil. Primeiro deve-se instalar o pacote do Grub 2 com o comando:

# sudo apt-get install grub-pc

Depois de instalado, o Grub 2 irá apresentar um menu de teste, com as imagens de kernel encontradas e ainda possibilita que o menu seja editado.

Uma vez definido o menu, o Grub2 pode ser instalado de forma definitiva com o comando:

# sudo upgrade-from-grub-legacy /boot/grub/grub.cfg

Principais Mudanças do Grub 1 para o Grub 2

É importante que você saiba quais são as mudanças importantes do Grub 1 para o Grub 2, a saber:

  • O arquivo /boot/grub/menu.lst foi substituído pelo /boot/grub/grub.cfg;
  • O principal arquivo de configuração é o /etc/default/grub;
  • O sistema de numeração das partições foi alterado;
  • Buscas por outros sistemas operacionais são feitas de forma automática toda vez que o update-grub é executado e são colocadas no menu;

Mudanças na configuração não têm efeito até que o comando update-grub é executado.

Normalmente o /boot/grub/grub.cfg não deve ser editado manualmente pois ele é regravado em updates do pacote do Grub 2, quando um kernel é adicionado ou removido, ou o usuário aciona o comando update-grub. Este comando refaz o menu de carga a partir de outros arquivos de configuração e regrava o /boot/grub/grub.cfg.

Criar uma configuração padrão no grub

O utilitário grub-mkconfig também pode ser utilizado para criar uma configuração para o Grub:

# grub-mkconfig -o /boot/grub/grub.cfg

O principal arquivo de configuração da apresentação do menu fica localizado em /etc/default/grub.

Arquivo /etc/default/grub

Este arquivo contém as principais informações para que o Grub 2 possa montar o menu. Ele define qual será a opção padrão do menu, os tempos de espera por uma ação do usuário, se o menu será apresentado em modo gráfico ou modo texto, dentre outras opções.

Exemplo de /etc/default/grub:

GRUB_DEFAULT=0

#GRUB_SAVEDEFAULT = true

#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=””

#GRUB_TERMINAL=console

#GRUB_GFXMODE=640x480

#GRUB_DISABLE_LINUX_RECOVERY=”true”

#GRUB_INIT_TUNE=”480 440 1”

Arquivo de Configuração do grub

Veja o comentário de opção do grub:

GRUB_DEFAULT

Define qual será a opção padrão do menu do Grub. O parametro GRUB_DEFAULT pode assumir um valor numérico, o nome da opção no menu ou a palavra “saved”.

Se o valor for numérico indica a posição do menu em /boot/grub/grub.cfg. Pode indicar também o nome do menu “Ubuntu 2.6.31”.

Se o valor for “saved”, o padrão será definido pelo comando grub-set-default ou grub-reboot.

GRUB_SAVEDEFAULT

Se este parâmetro for “true”, ele diz para o Grub que a opção padrão do menu será sempre o último sistema operacional selecionado no menu.  

GRUB_HIDDEN_TIMEOUT

Este parâmetro define o tempo em segundos que o Grub irá esperar por uma ação do usuário até que a opção padrão do menu seja escolhida de forma automática. Nenhum menu será apresentado, a menos que o usuário aperte alguma tecla (geralmente o ESC).

Se for igual a zero, o sistema operacional padrão irá carregar de forma automática sem esperar por nenhuma intervenção.

GRUB_HIDDEN_TIMEOUT_QUIET

Quando esta opção for “true”, nenhum contador de tempo será apresentado. Se for “false”, um contador decrescente será apresentado com o tempo definido em GRUB_HIDDEN_TIMEOUT.

GRUB_TIMEOUT

Esta opção somente será efetiva se a diretiva GRUB_HIDDEN_TIMEOUT estiver comentada, ou se ativa, quando o usuário pressionar alguma tecla durante o tempo de espera do GRUB_HIDDEN_TIMEOUT.

O GRUB_TIMEOUT define o tempo de espera do menu até que o usuário faça sua escolha. Caso contrário, irá executar a opção padrão.

Se o valor for -1, o Grub irá esperar pelo usuário indefinidamente.

GRUB_DISTRIBUTOR

Determina a descrição do sistema que será usada no menu. Se nada for definido, o Grub utilizará o padrão do sistema, que geralmente é definido pelo comando:

# lsb_release -i -s 2> /dev/null || echo Debian

 SUSE LINUX

GRUB_CMDLINE_LINUX_DEFAULT

Essa diretiva passa parâmetros para o Kernel durante a carga normal do sistema.

GRUB_CMDLINE_LINUX

Essa diretiva passa parâmetros para o Kernel durante a carga do sistema, tanto para carga normal do kernel ou em modo “recovery”.

GRUB_TERMINAL

Esta opção, se for descomentada, desabilita o menu em modo gráfico.

GRUB_GFXMODE

Define a resolução do terminal gráfico do menu.

GRUB_DISABLE_LINUX_RECOVERY

Desabilita o modo de emergência do Kernel se for igual a “true”.

GRUB_INIT_TUNE

Define um “som” que o grub fará antes de apresentar o menu. O formato é[tom da nota] [duração].

Exemplo: Tema de Contatos imediatos de Terceiro Grau:GRUB_INIT_TUNE=”480 900 2 1000 2 800 2 400 2 600 3”

O diretório /etc/grub.d

Os scripts deste diretório são lidos durante a chamada do comando update-grub e suas instruções são incorporadas no arquivo /boot/grub/grub.cfg.

A ordem dos itens no menu do grub é determinada pela ordem dos scripts neste diretório. Os arquivos são lidos de acordo com o numeral que precede seu nome, em ordem crescente.

00_header

Configura os parâmetros iniciais, como o modo gráfico, opção do menu padrão. Estas configurações geralmente são importadas do /etc/default/grub.

05_debian_theme

Configura a tela de fundo, cores do texto, etc.

10_hurd

Usado para localizar Kernels Hurd. Não é utilizado na maioria das distribuições.

10_linux

Identifica os Kernels no dispositivo raiz e cria os itens do menu. Todas as imagens de kernel existentes no /boot serão colocadas no menu.

20_memtest86+

Procura pela imagem em  /boot/memtest86+.bin usado para teste de memória. Para remover esse item, é necessário remover a imagem no diretório /boot.

30_os-prober

Este script procura pelo Linux e outros sistemas operacionais existentes no disco e cria os itens do menu. As variáveis neste arquivo determinam como os nomes irão aparecer no menu.

40_custom

Permite adicionar entradas customizadas no menu do grub.

As configurações são geralmente feitas no arquivo /etc/default/grub.
Não é comum editar diretamente os scripts do diretório /etc/grub.d.
Qualquer alteração feita no /boot/grub/grub.cfg é regravada quando o comando update-grub é executado.

Sequência de Carga do Sistema

O grub2 é executado antes de qualquer sistema operacional. Ele geralmente fará a carga direta do sistema operacional definindo como padrão ou se houver apenas um sistema operacional presente.

Se houver mais de um sistema operacional, ele irá apresentar o menu para escolha.

O tempo padrão de espera do menu é de 10s. Se o usuário não fizer nada, ele irá iniciar a carga da opção padrão do menu.

A contagem do tempo pode ser paralisada se qualquer tecla for pressionada. O usuário pode forçar a apresentação do menu pressionando a tecla SHIFT durante a carga do grub2.

Nomes das Partições no Grub 2

O sistema de nomear as partições no grub2 foi simplificado em relação ao grub1. A contagem dos dispositivos permanece iniciando de zero.

Um dispositivo sda será nomeado de hd0, bem como um dispositivo sdb será chamado hd1. No entanto as partições seguem a numeração “normal”, de forma que a partição sda5 será nomeada como hd0,5  e sda3 será hd0,3.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp