Entendendo o Grub2

Esse boot loader é novo (já a algum tempinho rs) mas ainda não tinha lido sobre  ele… Neste post irei dar uma pequena introdução para se ambientar com ele, principalmente para quem está acustumado com o antigo….

-

Introdução

O Grub2 segundo o que eu tenho lido, foi reescrito do zero, porque a arquitetura do antigo Grub já estava legada de mais para permitir tamanho flexibilidade e performance que os novos sistemas estão requerendo…

Vale lembrar que o Grub2 na verdade é a versão 1.96 para cima, o antigo grub é a versão 0.97, para verificar qual é a versão utilizada pelo seu sistema execute: “grub-install -v”

- Melhorias

  • Suporte a inclusão de scripts com declarações condicionais e funções
  • Carregamento dinâmico de módulo
  • Rescue Mode (modo de recupeação)
  • Menus Personalizados
  • Temas
  • Suporte Gráfico ao menu de boot e melhoria no splash
  • Boot de LiveCD ISO diretamente do HD
  • Nova estrutura de arquivos de configuração

- GRUB vs GRUB2

  • Pressione a tecla SHIFT para mostrar o menu durante o boot (antigamente era utilizado a tecla ESC)
  • Não existe mais o /boot/grub/menu.lst ele foi substituido pelo /boot/grub/grub.cfg
  • Não há “/find boot/grub/stage1″ no prompt do grub. Stage 1.5 foi eliminado.
  • O arquivo do menu principal, /boot/grub/grub.cfg, não é editável, mesmo pelo root.
  • grub.cfg pode ser sobrescrito a qualquer momento, por exemplo quando o kernel é adicionado ou removido, ou algum usuário executa o comando ‘update-grub’
  • O usuário pode usar um arquivo personalizado, /etc/grub.d/40_custom, do qual o usuário pode colocar suas próprias entradas. Esse arquivo não será sobrescrito.
  • O arquivo de configuração principal para fazer modificações nas configurações de visualização do menu é /etc/default/grub (por exemplo o tempo de espera)
  • Existem multiplos arquivos de configuração do menu – /etc/default/grub como mencionado acima e todos os arquivos dentro do /etc/grub.d/
  • A numeração das partições foram modificadas. A primeira partição agora é 1 ao invés de 0. O primeiro dispositivo ainda é 0.
  • Busca automática por outros sistemas operacionais, como o Windows, sempre que o ‘update-grub’ é executado
  • Nenhuma modificação nos arquivos de configurações terão efeitos antes da execução do comando update-grub.

- Estrutura de Arquivos

A estrutura de arquivos do GRUB2 foi totalmente revisada. O ‘menu.lst’ do GRUB antigo não está mais disponível.
Para identificar aonde seu Grub2 está instalado (isso é bastante útil em servidores onde você tem vários discos), utilize os seguintes comandos:
–> sudo grub-probe -t device /boot/grub (para obter o dispositivo, exemplo ‘/dev/sda2′)
–> sudo grub-probe -t fs_uuid /boot/grub (para obter o UUID, exemplo ‘c1b8a40b-94da-4745-8619-725db8f11eef’)
Os principais diretórios e arquivos utilizados pelo Grub2 são:
“/boot/grub/grub.cfg”
Esse é o arquivo mais mais se assemelha com o ‘menu.lst’. Este arquivo contém informações sobre o menu do Grub2 mas diferentemente do ‘menu.lst’ o ‘grub.cfg’ não pode ser editado.
  • Cada seção é claramente delimitada com “(### BEGIN)” e referencia o arquivo dentro do diretório “/etc/grub.d” a partir do qual as informações foram geradas.
  • grub.cfg é atualizado quando o comando update-grub é executado como root. O comando update-grub é sinônimo para “sudo grub-mkconfig -o /boot/grub/grub.cfg”.
  • Por padrão, sempre que o ‘update-grub’ é executado, esse arquivo é feito como somente leitura (read-only). Isto segue de acordo com intenção de que o arquivo não deve ser editado manualmente.
você também vai perceber que existe um monte de arquivos com a extensão *.mod dentro do diretório /boot/grub. Esses arquivos refletem a natureza modular do GRUB2 e são carregados  de acordo com a necessidade do bootloader.

“/etc/default/grub”

Este arquivo de configuração contém informações antigamente contidas na parte superior do legado menu.lst e itens contidos no final da linha do kernel. Este arquivo pode ser editado por usuários (claro como root) e são incorporadas dentro do grub.cfg quando atualizado.
“/etc/grub.d” (diretório)
  • Os arquivos dentro desse diretório são lidos durante a executação do comando ‘update-grub’ e suas instruções são incorporadas dentro do /boot/grub/grub.cfg
  • A localização dos itens do menu do grub.cfg são determinados pela ordem da qual os arquivos desse diretório são executados. Arquivos levando numerais são executados primeiros, iniciando do menor número. ’10_linux’ é executado antes de ’20_memtest’, do qual é executado antes do ’40_custom’. Arquivos exsitentes com nomes alfabéticos são executados após os arquivos com nomes numerais.
  • Entradas personalizadas podem ser adicionadas no arquivo ’40_custom’ ou em um novo arquivo criado. Baseado no seu nome, a entrada ’40_custom’ por padrão aparece no fundo do menu.
  • Somente arquivos executáveis geram saída ao ‘grub.cfg’ durante a execução do ‘update-grub’.
  • Os arquivos padrões desse diretório são:
    • 00_header -> Configura a aparência inicial dos itens, como o modo gráfio, seleção padrão, timeout, etc. Essas configurações são normalmente importadas de informações do /etc/default/grub. Usuários normalmente não precisam fazer modificações nesse arquivo
    • 05_debian_theme -> As configurações deste arquivo são responsáveis pelo ‘splash image’, cor do texto, ‘selection highlighting’ e temas. Na ausência de um ‘splash image’, esse arquivo configura um tema monocromático para o menu inicial. Como configurar a renderização das fonts e splash images serão discutidas no próximo post.
    • 10_hurd -> Localiza kernel Hurds.
    • 10_linux -> localiza kernel Linux no dispositivo root para o sistema operacional usado atualmente. Ele pega as informações e estabelece o nome a ser mostrado no menu.
    • 20_memtest86+ -> Procura por /boot/memtest86+.bin e inclui ele como opção no menu do boot. Não há atualmente nenhuma opção de linha para remover essa entrada do menu. A exibição do ‘memtest86+’ pode ser inibida pela remoção da permissão de execução do arquivo: ‘chmod -x /etc/grub.d/20_memtest86+’ e logo em seguinda um ‘update-grub’
    • 30_os-prober -> Esse procura por Linux e outros sistemas operacionais. Os resultados são colocados em grub.cfg baseado no script desse arquivo. O arquivo é dividido em 4 seções, representando os tipos de sistema operacional manipulados pelo script: Windows, Linux, OSX e Hurd. Variáveis neste arquivo determina o formato de visualização dos nomes no /boot/grub/grub.cfg e no menu do Grub2. Usuários familiarizados com scripts básicos podem alterar essas variáveis para mudar o nome apresentado no menu.
    • 40_custom -> Um template para adicionar entradas no menu personalizados da qual vai ser inserido no ‘grub.cfg’ na execução do comando ‘update-grub2′. O conteúdo deste arquivo, a baixo da linha “exec tail -n +3 $0″ e os comentários padrão, são importados diretamente dentro do /boot/grub/grub.cfg sem qualquer modificação.
    • Arquivos deste diretório devem ter permissão de execução para serem usados pelo update-grub. Arquivos que não tem permissão de execução são ignorados. Para dar permissão de execução, execute “chmor +c /etc/grub.d/diretorio/nomeDoArquivo” como root.

- Configuração do Grub2

Modificações nas configurações são normalmente feitas no /etc/default/grub e nos arquivos localizados em ‘/etc/grub.d’. O arquivo /boot/grub/grub.cfg não deve ser editador por nenhum usuário, modificações neste arquivo são realizados pelos scripts de configuração.

Algmas das modificações mais realizadas, como definir o Kernel padrão e o timeout do menu, podem ser modificadas por um aplicativo com interface gráfica chamado de “StartUp-Manager”, para maiores informações de uma lida no https://help.ubuntu.com/community/StartUpManager

/etc/default/grub (arquivo)

  • Este é o arquivo de configuração principal para modificar os valores padrão. Após a instalação, as seguintes linhas estão disponíveis para alteração:
    • GRUB_DEFAULT – Configura o menu padrão.
      • GRUB_DEFAULT=0 Configura a opção padrão do menu. A primeira opção de entrada no menu é o item 0 do ‘grub.cfg’, o segundo é 1 e etc.
      • GRUB_DEFAULT=”xxxx” O nome exato de uma opção do menu, Exemplo: “GRUB_DEFAULT=”Ubuntu, Linux 2.6.31-9-generic”
      • GRUB_TIMEOUT=10 Configura o tempo de espera que o menu vai ser apresentado antes da ecolha default ser “bootada”
      • #GRUB_GFXMODE=640×480 Você pode remover a tralha da frente para ativar essa entrada…. Essa opção configura a resolução do menu gráfico. A resolução aqui colocada deve ser suportada pela placa de vídeo (ex. 640×480, 800×600, 1280×1024 etc). A resolução aqui configurada se aplica somente ao Grub2 e não a todo o sistema…. Dica: Configure a resolução do Grub2 para a mesma do seu sistema operacional, isso ajuda a diminuir o tempo da inicialização do sistema.
        - Mesmo não requirido, o usuário pode dizer a profundidade de cores, como por exemplo: 1280x1024x24 ou 640x480x32
        - Você pode também definir multiplas resoluções, se o Grub2 não conseguir utilizar a primeira entrada, ele vai tentar usar a próxima. As configurações são separadas por uma virgula, exemplo: 1280x1024x16, 800x600x24, 640×480
        - Se for utilizado um ‘splash image’, tenha certeza que a resolução e o tamanho do splash image são compatíveis
        - Se a linha de configuração da resolução é comentada (#) ou a resolução não estiver disponível o GRUB2 usa a configuração padrão determinada pelo arquivo /etc/grub.d/00_header

Por enquanto é só, no próximo post falaremos sobre como adicionar entradas ao menu e configurar temas.. boa sorte!

Fonte: https://help.ubuntu.com/community/Grub2

Posts Relacionados