Infra - Linux
Novidades e mudanças na estrutura e configuração do Grub, fique por dentro!
Neste documento abordo as mudanças existentes na nova versão do Grub designada grub2, que por sua vez traz novas formas e conceitos para a manipulação do mesmo. Vale a pena conferir.
por José Cleydson Ferreira da SilvaÍndice
1. Introdução
2. Setor de Inicialização
3. O que mudou e o que há de novo na versão 1.97 do Grub
4. Instalação do grub2
5. Configuração dos arquivos do Grub
6. Considerações
6.1 Agradecimentos
6.2 Sobre o Autor
6.3 Contatos
6.4 Referência Bibliográfica
1. Introdução
Para aqueles que utilizaram o gerenciador de boot Lilo (Linux Loader) durante um bom tempo podem falar, ele era bem simples de se configurar, lembro-me que utilizei-o na distro Kurumin 5 e tive opções de usa-lo no Kurumin 7em casos de erros do grub, porém com a sua saída de sena e vigorando o grub, muitas pessoas passaram a buscar informações de como configurar o novo gerenciador de boot. Como as pessoas estavam acostumadas como o diretório /etc/lilo.conf, tiveram que se adaptar as novas formas e convenções de configuração. Durante muito tempo a configuração do grub se dava por intermédio do diretório /boot/grub/menu.lst, o que ocasionaram algumas mudanças na versão 1.97(beta). Agora há uma nova forma de se configurar e um novo arquivo para se configurar. E o objetivo desse é esclarecer uma melhor forma de se entender e configurar o seu gerenciador de boot. Com isso iremos falar um pouco dos setores de inicialização e a configuração do grub. Mas além dessas mudanças novas funções estão por vir juntamente da nova versão.
2. Setor de inicialização
Sempre que ligamos o nosso computador, existem instruções que no indicam inicialização do sistema, ou um boot através da rede o que acontece com terminais LTSP(Linux Terminal Server Project) . Mas é importante lembrar alguns conceitos envolvidos na inicialização do sistema. Quando instalamos o sistema operacional Linux em um disco rígido o próprio sistema se encarrega de deixar um um espaço reservado para o primeiro setor, onde conterão informações importantes para a inicialização de um sistema, esse setor é chamado de MBR (Master Boot Record). A MBR é um setor extremamente pequeno que possui informações super importantes para o arranque do sistema operacional, situada no primeiro setor do disco rígido: a trilha zero. Possuindo apenas 512 bytes que é dividida conforme uma estrutura organizacional do disco conforme mostra a tabela 1.
Tabela 1
Código de arranque |
Tabela de Partição |
Assinatura |
|||
446 bytes |
16 bytes |
16 bytes |
16 bytes |
16 bytes |
2 bytes |
➢ Os primeiros 446 bytes possuem informações de onde iniciar o sistema, e para onde irá apontar quando iniciar, ou seja códigos de inicialização.
➢ Os 16 bytes de cada celula da coluna de partições são responsáveis por informar onde iniciam e terminam cada partição do sistema e o tamanho que cada uma possui.
➢ E as assinaturas ocupam 2 bytes.
Em casos de instalação do Sistema Operacional Windows, nas versões existentes o gerenciador de boot durante a sua instalação não mantem essa tabela, ocasionado uma destruição da mesma quando instalado, que causa uma perda total da MBR, porém a eficiência do grub é a permanência dessa tabela quando instalado respeitando a sequencia já estabelecida por sistemas operacionais instalados, portanto, ele permite que arranque você tenha opção de escolher em qual sistema você quer usar, o que não há similar no windows. Como já sabemos parcialmente o que acontece com os setores de inicialização vamos entender o que há de novo ou que mudou na nova versão do grub. É por essa e outras razões que o diretório /boot não necessita de grande espaço em disco, são suficientes 100 megas para esse diretório, mas lembre-se na dúvida deixe sempre uma quantidade de espaço livre para casos de atualizações do kernel e arquivos de inicialização, quando há uma atualização e o diretório /boot estiver com pouco espaço ocorrerá um erro de instalação culpando no dpkg (“Atenção esse o pulo do gato”). Bom mas por que deixar o /boot em uma partição separada? Em caso de instalação para servidores é mais seguro fazer esse tipo de instalação, para em caso de erro ou perdas será mais fácil recuperar. Abaixo relata todo processo de inicialização.
1) O BIOS busca um dispositivo que faça o carregamento do SO (normalmente um disco rígido) e move o controle para o MBR ou Master Boot Record. O MBR é situado nos 512 primeiros bytes do disco.
2) O MBR contém o estágio 1 do GRUB. Dado o pequeno tamanho deste estágio, ele apenas carrega o próximo estágio do GRUB (que pode residir em qualquer locação do disco). O estágio 1 pode carregar o estágio 1.5 ou o estágio 2 diretamente.
3) O estágio 1.5 é localizado nos 30 primeiros Kb do disco imediatamente após o MBR. O estágio 1.5 carrega o estágio 2.
4) O estágio 2 recebe o controle, e mostra ao usuário o menu com as opções de sistemas operacionais instalados no sistema.
5) O GRUB carrega na memória o núcleo (kernel) do SO escolhido (ou o padrão) e passa o controle a este núcleo. (Para sistemas operacionais não suportados totalmente pelo GRUB, o controle é passado para outro carregador que continua o processo até carregar o núcleo em memória). (www.wikipedia.org)
3. O que mudou e o que há de novo na versão 1.97 do Grub
O grub originou-se de um pacote cujo o nome era Grand Unified Bootloader, que por sua vez foi implementado por Erik Stefan Boleyn. A nova geração do grub designada GNU Grub 2, substituiu o Grub legacy (legado) versão 0.97, que não está sendo desenvolvido. O desenvolvimento da nova versão do grub está sob a responsabilidade do projeto PUPA que o reescreveu do zero com objetivo de torna torna-lo modular e portável. Com isso alcançar mais robustez e segurança, mas para isso estão propondo as seguintes mudanças.
1. Utilizar interface Gráfica.
2. Carregamento dinâmico de módulos.
3. Utilização de linguagens de script, para melhor personalização
4. Adicionar suporte para outras arquiteturas, bem como, UltraSparc e PowerPC.
5. E criar uma imagem de núcleo mais compacta.
6. Suporte para demais línguas (Internacionalização).
7. Utilizar drivers do Etherboot para implementar o conceito de netboot.
8. Estrutura orientada à objeto para sistema de arquivos, discos e entre outros
9. Superação à falha de RAID.
Essas mudanças requem um novo conceito e conhecimento para configuração, portanto colocarei aqui algumas formas e configurações que usei, caso dúvida podem entrar em contato para tirar dúvidas.
4. Instalação do grub2
Em alguns casos, a instalação do grub2 se dá pelo processo de instalação normal através do CD de instalação. Sistemas mais atualizados que geralmente utilizam kernel 2.6.31 provavelmente utilizarão o novo GNU Grub, porém podes-se instala-lo juntamente de outros pacotes adicionais que o compõem. Se estiver usando Ubuntu 9.10 use um comando para verificar a versão do grub atual. Caso não esteja usando a versão mais recente instale o pacote mais atual utilizando o utilitário aptitude ou gerenciador da distribuição que está usando. O quadro 1, localizado abaixo está apresentando os procedimentos para a instalação.
Processo de instalação do Grub 2 Checar a versão que está usando $ grub-install -v Instalar versão atual do grub2 (Beta) $ sudo aptitude install grub2 Ou atualizar o grub1 $ update-grub Identificar o HD onde se encontra o grub $ sudo grub-prob -t device /boot/grub
|
Após a instalação você irá notar as seguintes diferenças, uma delas é que ao reiniciar o computador ao pressionar a tecla (ESC) não conseguirá entrar nas opções de escolha de boot, entendendo que a mesma por padrão só aparece se houver dois sistemas instalados, mas se houver a necessidade de escolher alguma versão do kernel ou se for preciso entrar por algum motivo precisará pressionar a tecla (SHIFT).
Outra mudança importe é o arquivo /boot/grub/menu.lst passou a ser /boot/grub/grub.cfg, que utiliza scripts para a elaboração do arquivo. O diretório possui arquivos modulares que compõem o grub, eles são responsáveis pelo funcionamento correto e quais componentes podem ser adicionados ou removidos. Geralmente configurações eram feitas no menu.lst, agora podemos fazer as mesmas configurações no grub.cfg porém não aconselhadas pois o arquivo de configuração que do diretório /etc/default/grub e /etc/grub.d que por sua vez modifica-o. Os arquivos que compõem o /etc/grub.d são lidos na hora em que o computador está sendo iniciado, e por está razão há uma prioridade de execução, a tabela 2 demostra quais arquivos são esses e suas funcionalidades.
Tabela 2
Arquivo |
Descrição da utilidade do arquivo |
00_header |
Essas configurações são importadas |
05_debian_theme |
Configura o splash de inicialização |
10_hurd |
- |
10_linux |
Indica o Kernel no dispositivo |
20_memtest86+ |
Indica /boot/memtest86+.bin e menu grub2 |
30_os-prober |
Indicam os Sistemas Operacionais instalados |
40_custom |
Personalizar o menu |
5. Configuração dos arquivos do Grub
O arquivos /etc/defaults/grub é arquivo responsável pela alteração de configurações padrões do grub, nele podemos configurar o menu de apresentação, qual sistema iniciar por padrão, ultima sessão usada (ultimo sistema usado), mudar nome do kernel no menu, tempo de espera, resolução no boot e entre outros. Embora pode-se fazer a configuração em três arquivos, bem como, diretamente no grub.cfg, /etc/defaults/grub, ou criar um arquivo padronizado que tenham as configurações semelhantes à do grub.cfg. Mas indo por tartes a configuração do /etc/defaults/grub está representada na tabela 3.
Opção |
Configuração |
Descrição |
GRUB_DEFAULT |
0, save, “Ubuntu, Linux 2.6.31-9-generic” |
Sistema de arranque |
GRUB_HIDDEN_TIMEOUT |
0 |
Ocultar menu |
GRUB_HIDDEN_TIMEOUT_QUIET |
True ou False |
Não use |
GRUB_TIMEOUT |
10 |
Configurar o tempo |
GRUB_DISTRIBUTOR |
`lsb_release -i -s 2> /dev/null || echo Debian` |
Padrão |
GRUB_CMDLINE_LINUX_DEFAULT |
"quiet splash" |
Apresentar splash |
GRUB_CMDLINE_LINUX |
“” |
- |
GRUB_TERMINAL |
Console |
Desabilita terminal gráfico |
GRUB_GFXMODE |
640x480 |
Resolução do boot |
GRUB_DISABLE_LINUX_UUID |
True |
Não use |
GRUB_DISABLE_LINUX_RECOVERY |
True |
Não use |
As configurações do arquivo /etc/grub.d/40_custom é o arquivo em que podemos fazer as configurações diversas, elas são iguais as configurações do arquivo grub.cfg, embora necessite de duas linhas fundamentais para tornar o arquivo executável. Então poderá copiar algumas funções do arquivo grub.cf, que podem ser as especificações menuentry (Menu de entrada), essas opções podem ser customizadas conforme queira o seu menu, portanto, pode seguir o modelo de configuração no exemplo abaixo. Note no exemplo os textos que estão ilustrados como comentário.
Exemplo 1
#!/bin/sh ############
Este trecho foi cópia do do fórum do Ubuntu ##################
echo "Adding Windows 43_custom" >&2 |
Para fazer configurações de imagens para o splash, precisa-se
de instalar o pacote de imagens, após a instalação imagens serão copiadas para
o diretório /usr/share/images/grub, o que não se limitará a usuários
fazerem seus próprios splash"s. Processo de configuração do pacote de splash
baixo.
$ sudo aptitude install grub2-splashimages |
Para fazer a configuração dos bootsplash usaremos o arquivo /etc/grub.d/05_debian_theme,
dentro do arquivo possui um loop que, por padrão ele busca em outro diretório
em /boot/grub e /usr/share/images/desktop-base, portanto, você pode fazer duas
ações: Uma seria colocar a imagem no diretório padrão e indicar o nome da
mesma; A outra é adicionar ao loop o diretório /usr/share/images/grub
e indicar o nome da imagem como mostra o exemplo 2.
Trechos do arquivos 05_debian_theme # Para trocar a cor das descrições seque-se o modelo abaixo que pode ser modificado. set_mono_theme() { cat << EOF set menu_color_normal=white/black set menu_color_highlight=black/white EOF } # Verifica para usar imagem de backgrounds use_bg=false if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then for i in {/boot/grub,/usr/share/images/desktop-base,/usr/share/imagens/grub}/sua-imagem.{png,tga} ; do if is_path_readable_by_grub $i ; then bg=$i case ${bg} in *.png) reader=png ;; *.tga) reader=tga ;; *.jpg|*.jpeg) reader=jpeg ;; esac if test -e /boot/grub/${reader}.mod ; then echo "Found Debian background: `basename ${bg}`" >&2 use_bg=true break fi fi done fi |
Estas
linhas estão contidas em/etc/grub.d/05_debian_theme. A cor é
definida pela linha abaixo. A primeira cor é a cor do texto, a segunda é a cor
de fundo.
set color_normal=black/black |
O código abaixo define a cor de entradas selecionadas. A primeira
cor é a cor do texto em destaque, a segunda é a cor de fundo da linha
selecionada. Se black é a segunda entrada, a linha de destaque será
transparente e apenas o texto mudará de cor.
set color_highlight=magenta/black |
O black é a cor de transparência GRUB 2 padrão . Altere
apenas a cor do primeiro, se utilizar uma imagem de splash. Se o segundo
valor nesta linha é alterada para uma cor diferente de black a imagem splash
será escondida atrás de um fundo de cor sólida. Após fazer todas essas
configurações ou qualquer configuração que se relacione com o grub2 utilize o
comando um comando para validar as alterações.
# update-grub2 |
6. Considerações finais
Embora o grub seja um dos melhores gerenciadores de inicialização de sistemas, novas implementações o tonará mais confiável e robusto, que por sua vez, beneficiará a usuários e instituições mais confiabilidade no Sistema Operacional Linux.
6.1 Agradecimentos
Agradeço ao Carlos Farah, que orientou-me a utilizar nos meus artigos utilitários que minimizam erros para usuários iniciantes, que consiste em usar comandos sudo e aptitude. Obrigado Carlos.
6.2 Sobre o Autor
José Cleydson Ferreira da Silva.
Técnico em Tecnologia da Informação formado pela Escola Técnica de Viçosa-MG
(ETEV), Bacharelando em Sistemas de Informação - FDV Viçosa-MG, usuário do
Linux por filosofia, acredito que os padrões abertos podem mudar os rumos do
mercado de TI.
6.3 Contatos
Email, gtalk: cleysinhonv@gmail.com
Twitter: @cleysinhonv
Web site: www.cleysinho.blogspot.com
Web site: www.gnu-lia.org
Outros artigos: http://www.vivaolinux.com.br/artigos/userview.php?login=cleysinhonv
6.4 Referência Bibliográfica
http://www.gnu.org/software/grub/grub-2.en.html
http://commons.wikimedia.org
- Login automático com SSH e Automatização da instalação (deploy) e atualização de sites com GitLinux
- O que é Ar.DroneLinux
- Criando aplicativos para o iPhone no Linux (sem Xcode e MacOS X)Linux
- Blu-ray: Reproduzindo, copiando, ripando e assistindo no GNU/LinuxLinux
- Extensão Sun Presentation Minimizer para Broffice.ORGLinux