fbpx
Whatsapp (31) 3069-8315
atendimento@certificacaolinux.com.br
Grand Unified Boot Loader – GRUB 2

O 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 fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Processo de Carga do Linux

Entenda como funciona os gerenciadores de Boot no Linux

Qualquer computador PC quando ligado inicia uma série de ações complexas de teste de hardware programada por uma memória especial chamada de BIOS.

Esta memória tem a função de dar a partida na máquina, reconhecendo os dispositivos instalados e realizando a carga do sistema operacional.

Durante o boot, o BIOS realiza uma série de testes, cuja função é determinar com exatidão os componentes de hardware instalados no sistema. Este teste é chamado de POST (power-on self test).

É através do POST que o computador busca informações dos números e dos tipos de placas, drives de cd-rom, HDs, portas seriais, paralelas e USBs, monitor, mouse, teclado, etc.

Logo depois dos testes de hardware, a BIOS procura nos dispositivos de discos rígidos e CD-ROM um endereço especial chamado de setor de boot.

Nas placas mães que adotam o sistema EFI ou UEFI, o processo de carga do sistema operacional envolve ler um arquivo especial de carga à partir de um sistema de arquivo em uma partição especial chamada EFI System Partition (ESP).

Esta partição especial usa o formato da FAT (File Allocation Table). No Linux é tipicamente montada em /boot/efi.

Este esquema utilizado pelo EFI é mais complexo que na BIOS, permitindo que cada sistema operacional instalado no computador tenha o seu próprio sistema de carga de boot separado.

Desta forma o EFI possui um “gerenciador de boot” que permite que o usuário escolha qual sistema de carga de boot quer dar início quando liga o computador.

Para que este sistema “gerenciador de boot” do EFI funcione, é preciso que os sistemas de carga de boot estejam devidamente registrados no firmware através do próprio utilitário da EFI ou através do programa efibootmgr no Linux.

Processo de Carga do Kernel

Dependendo do tipo de disco utilizado, o setor de boot, ou setor de carga, está localizado em um local específico com uma determinada assinatura definida por padrões da indústria.

É no setor de boot que os sistemas operacionais gravam o software responsável por iniciar a carga do sistema operacional.

Desta forma, a BIOS ou firmware de placa-mãe procura no setor de boot do disco o gerenciador de boot.

No Linux os gerenciadores mais comuns são o GRUB e GRUB 2. Eles são responsáveis pela carga do Kernel na memória.

Durante a carga do kernel, o Linux carrega um sistema de arquivos especial chamado initramfs, que contém uma versão minimalista do sistema de arquivos, para que o processo init (pai de todos os processos) possa ser carregado.

Isto permite que diversas tarefas possam ser executadas antes que o sistema de arquivos real seja carregado.

Após a carga do Kernel, este inicia um processo especial chamado init (para sistemas baseados em SystemV) ou o systemd (para sistemas baseados em Systemd).

Tanto o init ou o systemd são o pai de todos os processos e responsável pelo restante da carga do boot do Linux.

Depois da carga do boot, o init chama outro programa especial chamado getty, que é responsável pela autenticação dos usuários e pelo início do processo de shell.

Veja como funciona o Grub no Linux:

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Open chat