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=640×480
#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
Tag:/etc/default/grub, grub, grub 2, grub-mkconfig, grub.cfg, Linux