Com o Linux ficando cada vez mais popular, nada mais natural que muitas pessoas terem instalados em seus computadores mais de um sistema operacional. Seja por dual boot ou por virtualização, os gerenciadores de boot sempre existem, até mesmo para um único SO.
Neste artigo vamos entender como o gerenciador de boot mais famoso dos últimos tempos funciona, como configurá-lo, como recuperá-lo em caso de falhas ou perdas e estudar sua interação com o sistema. O GRUB (GRand Unified Bootloader) acompanha muitas distribuições atuais como Ubuntu, Debian e OpenSUSE. Foi escrito por Erich Boleyn e agora é mantido pela FSF (Free Software Foundation). Apesar de ser um pouco mais complexo que outros gerenciadores de boot, o GRUB, se bem entendido, é uma ferramenta impressionante e bem feita. Descubra neste artigo o porquê dessa afirmação.
Parte 1 - A função de um bootloader
Parte 2 - Estrutura de armazenamento do GRUB
Parte 3 - Setor de inicialização e MBR
Parte 4 - Como instalar
Parte 5 - Configuração básica
Parte 6 - Cores e imagens
1. A função de um bootloader
Esta primeira pergunta pode surgir na mente de alguns leitores. Antes de falar sobre o GRUB, vamos definir o que é e qual a função de um bootloader. Tudo começa com o BIOS (Basic Input/Output System - Sistema Básico de Entrada e Saída), que é o programa responsável por executar o teste básico de hardware chamado POST (Power On Self Test - Auto-teste ao ligar) quando o PC é ligado. Depois deste teste o BIOS procura por um bootloader nos setores de boot de vários dispositivos de armazenamento ou de rede. A ordem de busca nos dispositivos é configurada no SETUP - programa que configura o BIOS.
O BIOS não sabe inicializar um sistema operacional. Ele só busca um bootloader e somente nos setores de boot dos dispositivos ou pela rede (boot PXE). É de responsabilidade do BIOS buscar nesses dispositivos pelo bootloader e, caso não encontre em nenhum deles (configurados previamente no SETUP - opção boot order), o BIOS retorna um erro e a inicialização do PC é interrompida. É por isso que o sistema não inicializa quando o HD principal está desconectado ou quando há um disquete no drive e o drive de disquete está configurado na ordem de boot como mais prioritário que o HD e assim por diante.
Quando o BIOS acha o bootloader, o carrega para memória do PC e se encerra. A partir de agora, quem controla o PC é o bootloader. Esse bootloader pode oferecer um menu como fazem o GRUB e o LILO ou podem simplesmente apontar para o início de uma partição, sem dar-te opções de escolha, como os do Windows antigos. Todavia, todos são bootloaders. Eles é que vão iniciar o sistema operacional.
2. Estrutura de armazenamento do GRUB
Quando o GRUB é instalado, são criados executáveis em áreas diferentes do disco rígido. Esses executáveis são chamdos de estágios (stages). São eles:
stage1 - instalado no MBR (Master Boot Record - Setor Mestre de Inicialização) ou no setor de boot de uma partição. Em ambos os casos, o setor é limitado a 512 bytes de tamanho. Seria quase impossível para Erich Boleyn escrever um software que coubesse num setor de 512 bytes. Para contornar esta limitação, o stage1 só verifica a geometrica do disco rígido contra erros de configuração e chama outro executável que pode ser o stage1.5 ou o stage2, dependendo do caso.
stage1.5 - este executável define o sistema de arquivos utilizado pela partição que contém GRUB. Mas nem sempre o stage1.5 é utilizado porque os sistemas de arquivos mais comuns já são suportados nativamente pelo GRUB e, a não ser que o hardware realmente exija, o stage1 vai pular diretamente para o stage2.
stage2 - aqui é exibido o menu ou a CLI, dependendo da configuração. Então o usuário seleciona uma opção e o stage2 carrega o sistema operacional escolhido.
3. Setor de inicialização e MBR
Depende. Se estivermos falando do MBR, ele é o primeiro setor do disco rígido. Se for o setor de inicialização de uma partição, ele é o primeiro setor da partição. Simples, não? Vamos fazer um pequeno laboratório para demonstrar onde o grub fica, logo abaixo.
O primeiro passo é instalar um editor de disco rígido. O Linux tem o lde, que é bem conhecido. Você até pode usá-lo mas neste artigo vamos demonstrar com o ncurses-hexedit. Se estiver no Ubuntu ou em distribuições baseadas em Debian, pode usar o APT:
Se preferir usar o código-fonte para compilar ou obter outros executáveis, acesse a página do autor do programa, Adam Rogoyski.
No PC que usamos para escrever o artigo, usamos um disco rígido SATA onde está instalado o Ubuntu Hardy e o grub foi instalado no MBR. Sabemos que o Linux reconhece este tipo de HD como /dev/sdx, onde x é a letra que indica a posição do HD na placa-mãe (primeiro HD, segundo HD, etc). Vamos ver o conteúdo do disco rígido:
Vamos entender a saída:
Esses são os dados presentes no nosso disco rígido, sendo exibidos para nós em hexadecimal e o equivalente em ASCII.
A coluna OFFSET nos mostra o endereço (posição) do byte em questão, onde 0x00000000 é o primeiro byte do disco rígido, 0x00000001 é o segundo e assim por diante. O nosso primeiro setor, que é o MBR, tem 512 bytes, como falamos anteriormente. Logo, o MBR vai de 0x00000000 até 0x00000200 (512 em decimal equivale a 200h - em hexa).
PS.: A notação hexa tem pelo menos três formas diferentes. O hexa 4D pode ser escrito como 0x4D, 4Dh ou 4DH.
Descendo um pouco vemos, na coluna ASCII, a string "GRUB .Geom.Hard Disk.Read. Error" (ver imagem abaixo). Este é um erro acusado pelo GRUB quando há parâmetros de geometria de disco incorretos. Se você esqueceu quem faz isso, volte ao item 2 e releia. Estamos falando do stage1. Perceba que o limite de 512 bytes (offset 0x200) não é estrapolado. Na verdade o MBR pode ocupar até 446 bytes dos 512. O resto é reservado para a tablela de partições que, nosso caso, pasmem, é a FAT. Isso mesmo. Mesmo utilizando um sistema Linux, o formato de tabela de partições padrão é o MS-DOS/FAT, por conveniência.
Se você reperar bem, na imagem acima, até um pouco antes de 1BE (446) há alguns zeros, que indicam o fim do MBR. Em 1BE já começa a tabela de partições com o byte 80h.
Se descermos mais um pouco, vamos nos deparar com uma string sobre o stage1.5:
E se descermos mais, sobre o stage2:
O stage2 é o maior executável. Aqui ele ocupa 108356 bytes. Bem, isso dá mais de 7000 linhas de offsets. Para sair do hexeditor, aperte CTRL+C.
4. Como instalar
Muitas distribuições atuais trazem o GRUB por padrão. Na própria instalação da distribuição, o GRUB já é instalado. Geralmente o usuário que está instalando escolhe onde instalar, se no MBR ou no setor de inicialização da primeira partição do primeiro disco.
De qualquer forma, se desejar ter acesso so GRUB dentro do sistema, pode instalar via repositório (com certeza todos tem).
5. Configuração básica
O GRUB guarda sua configuração e seus binários todos em /boot/grub. Uma listagem típica deste diretório segue abaixo:
Dos stages nós já falamos anteriormente, então vamos listar a função dos arquivos de configuração:
default - este é o arquivo de configuração que detém qual a opção padrão de inicialização. Por exemplo, você pode ter na sua inicialização do GRUB, os sistemas: Fedora, Windows XP e Arch Linux. Um deles você configurará como padrão para ser inicializado caso nenhum seja escolhido durante a inicialização. Mas você não vai digitar diretamente o nome do sistema no arquivo default, e sim usar o comando grub-set-default, passando para ele como parâmetro o nome do bloco que refere-se ao sistema desejado. Esta configuração pode ser feita no menu.lst, que fica bem mais fácil.
device.map - esta é a lista de dispositivos de armazenamento que o GRUB detectou na instalação. Veja um exemplo:
No exemplo acima, o GRUB detectou três discos rígidos SATA/SCSI no PC onde está instalado. O GRUB chama de hdx os discos, onde x é um número, começado em 0 para o primeiro disco (/dev/hda ou /dev/sda). O GRUB não faz distinção entre SATA/SCSI e IDE no que diz respeito ao nome do dispositivo. Ou seja, independente da interface do disco, ele entrará na numeração hdx, tendo como base a posição do dispositivo na placa-mãe.
installed-version - este arquivo contém o número da versão do GRUB instalada. Seu conteúdo é similar a saída do comando grub --version.
menu.lst - este é onde mais vamos mexer. A maioria dos sistemas com GRUB exibe um menu de inicialização. Este é o arquivo de configuração deste menu. Nele, temos diversas opções, que veremos abaixo.
Vamos ver um conteúdo de exemplo do menu.lst, mas vamos filtrar a saída para exibir somente as linhas que não estão comentadas (do contrário, a saída será muito grande):
Agora vamos explicar cada linha deste exemplo.
default 0 - esta linha configura que o sistema padrão a ser selecionado é o de número 0. Para saber qual é o sistema de número 0, procure pelo primeiro "title" (sem aspas) no menu.lst. A segunda ocorrência de "title" refere-se ao sistema de número 1 e assim por diante.
timeout 3 - este é o tempo, em segundos, de espera para que o usuário selecione um sistema no menu. No caso desta configuração, se o usuário não escolher um sistema em 3 segundos, o sistema padrão será carregado.
hiddenmenu - se esta linha estiver presente, o menu não aparecerá. Ao invés dele, uma mensagem com o texto "Pressione ESC para exibir o menu" surgirá na tela. Se em X segundos (configurados no timeout) o usuário não pressionar o ESC, o sistema padrão será carregado. Para desabilitar esta função remove (ou comente) esta linha.
splashimage - esta opção indica o caminho para uma imagem de fundo do menu, no formato xpm.gz. Veremos como adicionar uma imagem de fundo mais adiante.
title - aqui definimos um título para um novo bloco (uma nova opção no menu do grub). Pode ser qualquer coisa.
root - esta sub-opção de title, indica o HD e a partição so sistema que será inicializado. O GRUB numera as partições no formato (hdx,y) onde x é o número do HD (como explicado acima, quando falamos do device.map) e y é o número da partição onde a primeira partição é a 0 (zero) e assim por diante.
Opções dos sistemas baseados em UNIX e GNU/Linux
kernel - no caso do Linux, ainda é necessário especificar o caminho absoluto da imagem do kernel que será inicializada. Este caminho (e ocasionalmente algumas opções) fica nesta linha.
initrd - esta opção define a imagem que será utilizada como Initial RAM Disk. Trocando em miúdos, define a imagem que será posta em RAM disk (emulação de disco rígido em memória) na inicialização.
Esses são os comandos mais usados para inicialização de sistemas Linux. Existe uma gama enorme de opções que você pode conferir lendo os manpages do GRUB. Vale a pena.
Opções dos sistemas Windows
Um bloco típico para inicizaliação de sistemas Windows é:
Vamos às explicações das novas opções:
makeactive - marca a partição em questão como ativa (permitindo ser inicializada) pois o Windows tem o seu próprio bootloader.
chainloader +1 - esta opção carrega/lê um setor (o primeiro) da partição em questão, que é justamente onde está o bootloader próprio do Windows e a partir daí o sistema é inicializado sem problemas.
6. Cores e imagens
O menu do GRUB é muito simples e é exibido por pouco tempo. Mesmo assim, existem alguns recursos para deixar o GRUB mais bonito. Um deles é alterar suas cores.
Para mudar as cores do menu, use a opção color a/b c/d no seu menu.lst, onde:
a - é a cor das opções.
b - é a cor do fundo.
c - é a cor da opção selecionada.
d - é a cor do cursor de seleção.
As cores válidas para a,b,c, d são:
* black (preto)
* blue (azul)
* green (verde)
* cyan (ciano)
* red (vermelho)
* magenta (púrpura)
* brown (marrom)
* light-gray (cinza-claro)
As cores que são válidas somente para a e c são:
* dark-gray
* light-blue
* light-green
* light-cyan
* light-red
* light-magenta
* yellow (amarelo)
* white (branco)
Portanto, para um menu no melhor estilo "Matrix", seu menu.lst poderia conter a linha:
color green/black light-green/black
Para usar uma imagem de fundo, esta deve estar no formato XPM, medir 640x480 e usar uma paleta de 14 cores. Por fim, deve também estar nomeada para splash.xpm e compactada com o gzip como splash.xpm.gz. Todas essas exigências são para reduzir o tamanho ao máximo pois o menu é carregado ainda no MBR. Vamos ver como converter uma imagem para este formato:
Abra no GIMP a imagem que você deseja (neste exemplo, vamos usar o logotipo antigo de nosso site), depois vá em "Imagem > Redimensionar" e coloque os valores como na figura abaixo:
Depois, temos que converter a paleta de cores para 14 cores. Vá em "Imagem > Modo > Indexado", sete a paleta para 14 cores e clique em "Converter".
Agora clique em "Salvar como..." e nomeie como splash.xpm. Ao clicar em salvar, o GIMP detecta o formato desejado pela extensão digitada e já cria nosso arquivo no formato certo (XPM).
É necessário compactar a imagem com o gzip e depois colocar em /boot/grub. Para isso, vamos ao terminal:
Agora adicione a linha a seguir ao seu menu.lst:
Substitua (hd0,0) pela sua partição Linux. Salve e reinicie. Aqui, nosso resultado segue abaixo:
Neste artigo vamos entender como o gerenciador de boot mais famoso dos últimos tempos funciona, como configurá-lo, como recuperá-lo em caso de falhas ou perdas e estudar sua interação com o sistema. O GRUB (GRand Unified Bootloader) acompanha muitas distribuições atuais como Ubuntu, Debian e OpenSUSE. Foi escrito por Erich Boleyn e agora é mantido pela FSF (Free Software Foundation). Apesar de ser um pouco mais complexo que outros gerenciadores de boot, o GRUB, se bem entendido, é uma ferramenta impressionante e bem feita. Descubra neste artigo o porquê dessa afirmação.
Parte 1 - A função de um bootloader
Parte 2 - Estrutura de armazenamento do GRUB
Parte 3 - Setor de inicialização e MBR
Parte 4 - Como instalar
Parte 5 - Configuração básica
Parte 6 - Cores e imagens
1. A função de um bootloader
Esta primeira pergunta pode surgir na mente de alguns leitores. Antes de falar sobre o GRUB, vamos definir o que é e qual a função de um bootloader. Tudo começa com o BIOS (Basic Input/Output System - Sistema Básico de Entrada e Saída), que é o programa responsável por executar o teste básico de hardware chamado POST (Power On Self Test - Auto-teste ao ligar) quando o PC é ligado. Depois deste teste o BIOS procura por um bootloader nos setores de boot de vários dispositivos de armazenamento ou de rede. A ordem de busca nos dispositivos é configurada no SETUP - programa que configura o BIOS.
O BIOS não sabe inicializar um sistema operacional. Ele só busca um bootloader e somente nos setores de boot dos dispositivos ou pela rede (boot PXE). É de responsabilidade do BIOS buscar nesses dispositivos pelo bootloader e, caso não encontre em nenhum deles (configurados previamente no SETUP - opção boot order), o BIOS retorna um erro e a inicialização do PC é interrompida. É por isso que o sistema não inicializa quando o HD principal está desconectado ou quando há um disquete no drive e o drive de disquete está configurado na ordem de boot como mais prioritário que o HD e assim por diante.
Quando o BIOS acha o bootloader, o carrega para memória do PC e se encerra. A partir de agora, quem controla o PC é o bootloader. Esse bootloader pode oferecer um menu como fazem o GRUB e o LILO ou podem simplesmente apontar para o início de uma partição, sem dar-te opções de escolha, como os do Windows antigos. Todavia, todos são bootloaders. Eles é que vão iniciar o sistema operacional.
2. Estrutura de armazenamento do GRUB
Quando o GRUB é instalado, são criados executáveis em áreas diferentes do disco rígido. Esses executáveis são chamdos de estágios (stages). São eles:
stage1 - instalado no MBR (Master Boot Record - Setor Mestre de Inicialização) ou no setor de boot de uma partição. Em ambos os casos, o setor é limitado a 512 bytes de tamanho. Seria quase impossível para Erich Boleyn escrever um software que coubesse num setor de 512 bytes. Para contornar esta limitação, o stage1 só verifica a geometrica do disco rígido contra erros de configuração e chama outro executável que pode ser o stage1.5 ou o stage2, dependendo do caso.
stage1.5 - este executável define o sistema de arquivos utilizado pela partição que contém GRUB. Mas nem sempre o stage1.5 é utilizado porque os sistemas de arquivos mais comuns já são suportados nativamente pelo GRUB e, a não ser que o hardware realmente exija, o stage1 vai pular diretamente para o stage2.
stage2 - aqui é exibido o menu ou a CLI, dependendo da configuração. Então o usuário seleciona uma opção e o stage2 carrega o sistema operacional escolhido.
3. Setor de inicialização e MBR
Depende. Se estivermos falando do MBR, ele é o primeiro setor do disco rígido. Se for o setor de inicialização de uma partição, ele é o primeiro setor da partição. Simples, não? Vamos fazer um pequeno laboratório para demonstrar onde o grub fica, logo abaixo.
O primeiro passo é instalar um editor de disco rígido. O Linux tem o lde, que é bem conhecido. Você até pode usá-lo mas neste artigo vamos demonstrar com o ncurses-hexedit. Se estiver no Ubuntu ou em distribuições baseadas em Debian, pode usar o APT:
Código:
$ sudo apt-get install ncurses-hexedit
No PC que usamos para escrever o artigo, usamos um disco rígido SATA onde está instalado o Ubuntu Hardy e o grub foi instalado no MBR. Sabemos que o Linux reconhece este tipo de HD como /dev/sdx, onde x é a letra que indica a posição do HD na placa-mãe (primeiro HD, segundo HD, etc). Vamos ver o conteúdo do disco rígido:
Código:
$ sudo hexeditor -d /dev/sda
Esses são os dados presentes no nosso disco rígido, sendo exibidos para nós em hexadecimal e o equivalente em ASCII.
A coluna OFFSET nos mostra o endereço (posição) do byte em questão, onde 0x00000000 é o primeiro byte do disco rígido, 0x00000001 é o segundo e assim por diante. O nosso primeiro setor, que é o MBR, tem 512 bytes, como falamos anteriormente. Logo, o MBR vai de 0x00000000 até 0x00000200 (512 em decimal equivale a 200h - em hexa).
PS.: A notação hexa tem pelo menos três formas diferentes. O hexa 4D pode ser escrito como 0x4D, 4Dh ou 4DH.
Descendo um pouco vemos, na coluna ASCII, a string "GRUB .Geom.Hard Disk.Read. Error" (ver imagem abaixo). Este é um erro acusado pelo GRUB quando há parâmetros de geometria de disco incorretos. Se você esqueceu quem faz isso, volte ao item 2 e releia. Estamos falando do stage1. Perceba que o limite de 512 bytes (offset 0x200) não é estrapolado. Na verdade o MBR pode ocupar até 446 bytes dos 512. O resto é reservado para a tablela de partições que, nosso caso, pasmem, é a FAT. Isso mesmo. Mesmo utilizando um sistema Linux, o formato de tabela de partições padrão é o MS-DOS/FAT, por conveniência.
Se você reperar bem, na imagem acima, até um pouco antes de 1BE (446) há alguns zeros, que indicam o fim do MBR. Em 1BE já começa a tabela de partições com o byte 80h.
Se descermos mais um pouco, vamos nos deparar com uma string sobre o stage1.5:
E se descermos mais, sobre o stage2:
O stage2 é o maior executável. Aqui ele ocupa 108356 bytes. Bem, isso dá mais de 7000 linhas de offsets. Para sair do hexeditor, aperte CTRL+C.
4. Como instalar
Muitas distribuições atuais trazem o GRUB por padrão. Na própria instalação da distribuição, o GRUB já é instalado. Geralmente o usuário que está instalando escolhe onde instalar, se no MBR ou no setor de inicialização da primeira partição do primeiro disco.
De qualquer forma, se desejar ter acesso so GRUB dentro do sistema, pode instalar via repositório (com certeza todos tem).
Código:
No Ubuntu: $ sudo apt-get install grub No SUSE: $ zypper install grub No Fedora: $ yum install grub Enfim, a regra é usar o seu gerenciador de pacotes e instalar. Como alternativa, pode-se baixar o código-fonte, compilar e instalar, mas antes é necessário instalar as dependências, caso ainda não estejam instaladas: $ sudo apt-get install bison gcc-4.1 g++ make liblzo2-dev $ wget -c ftp://alpha.gnu.org/gnu/grub/grub-1.96.tar.gz $ tar -xvzf grub-1.96.tar.gz $ cd grub-1.96.tar.gz $ ./configue $ make $ sudo make install
O GRUB guarda sua configuração e seus binários todos em /boot/grub. Uma listagem típica deste diretório segue abaixo:
Código:
$ ls -lah /boot/grub/ total 216K drwxr-xr-x 3 root 999 4,0K 2008-06-24 00:23 . drwxr-xr-x 3 root root 4,0K 2008-06-24 00:23 .. -rw-r--r-- 1 root 999 197 2008-04-27 21:44 default -rw-r--r-- 1 root 999 45 2008-04-27 21:44 device.map -rw-r--r-- 1 root 999 7,9K 2008-04-27 21:44 e2fs_stage1_5 -rw-r--r-- 1 root 999 7,8K 2008-04-27 21:44 fat_stage1_5 drwxr-xr-x 2 root root 4,0K 2008-06-12 02:42 images -rw-r--r-- 1 root 999 16 2008-04-27 21:45 installed-version -rw-r--r-- 1 root 999 8,5K 2008-04-27 21:44 jfs_stage1_5 -rw-r--r-- 1 root root 4,3K 2008-06-24 00:23 menu.lst -rw-r--r-- 1 root root 4,3K 2008-06-24 00:23 menu.lst~ -rw-r--r-- 1 root 999 7,2K 2008-04-27 21:44 minix_stage1_5 -rw-r--r-- 1 root 999 9,5K 2008-04-27 21:44 reiserfs_stage1_5 -rw-r--r-- 1 root 999 512 2008-04-27 21:44 stage1 -rw-r--r-- 1 root 999 106K 2008-04-27 21:45 stage2 -rw-r--r-- 1 root 999 9,1K 2008-04-27 21:44 xfs_stage1_5
default - este é o arquivo de configuração que detém qual a opção padrão de inicialização. Por exemplo, você pode ter na sua inicialização do GRUB, os sistemas: Fedora, Windows XP e Arch Linux. Um deles você configurará como padrão para ser inicializado caso nenhum seja escolhido durante a inicialização. Mas você não vai digitar diretamente o nome do sistema no arquivo default, e sim usar o comando grub-set-default, passando para ele como parâmetro o nome do bloco que refere-se ao sistema desejado. Esta configuração pode ser feita no menu.lst, que fica bem mais fácil.
device.map - esta é a lista de dispositivos de armazenamento que o GRUB detectou na instalação. Veja um exemplo:
Código:
$ cat /boot/grub/device.map (hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc
installed-version - este arquivo contém o número da versão do GRUB instalada. Seu conteúdo é similar a saída do comando grub --version.
menu.lst - este é onde mais vamos mexer. A maioria dos sistemas com GRUB exibe um menu de inicialização. Este é o arquivo de configuração deste menu. Nele, temos diversas opções, que veremos abaixo.
Vamos ver um conteúdo de exemplo do menu.lst, mas vamos filtrar a saída para exibir somente as linhas que não estão comentadas (do contrário, a saída será muito grande):
Código:
No exemplo acima, o GRUB detectou três discos rígidos SATA/SCSI no PC onde está instalado. O GRUB chama de hdx os discos, onde x é um número, começado em 0 para o primeiro disco (/dev/hda ou /dev/sda). O GRUB não faz distinção entre SATA/SCSI e IDE no que diz respeito ao nome do dispositivo. Ou seja, independente da interface do disco, ele entrará na numeração hdx, tendo como base a posição do dispositivo na placa-mãe. installed-version - este arquivo contém o número da versão do GRUB instalada. Seu conteúdo é similar a saída do comando grub --version. menu.lst - este é onde mais vamos mexer. A maioria dos sistemas com GRUB exibe um menu de inicialização. Este é o arquivo de configuração deste menu. Nele, temos diversas opções, que veremos abaixo. Vamos ver um conteúdo de exemplo do menu.lst, mas vamos filtrar a saída para exibir somente as linhas que não estão comentadas (do contrário, a saída será muito grande):
default 0 - esta linha configura que o sistema padrão a ser selecionado é o de número 0. Para saber qual é o sistema de número 0, procure pelo primeiro "title" (sem aspas) no menu.lst. A segunda ocorrência de "title" refere-se ao sistema de número 1 e assim por diante.
timeout 3 - este é o tempo, em segundos, de espera para que o usuário selecione um sistema no menu. No caso desta configuração, se o usuário não escolher um sistema em 3 segundos, o sistema padrão será carregado.
hiddenmenu - se esta linha estiver presente, o menu não aparecerá. Ao invés dele, uma mensagem com o texto "Pressione ESC para exibir o menu" surgirá na tela. Se em X segundos (configurados no timeout) o usuário não pressionar o ESC, o sistema padrão será carregado. Para desabilitar esta função remove (ou comente) esta linha.
splashimage - esta opção indica o caminho para uma imagem de fundo do menu, no formato xpm.gz. Veremos como adicionar uma imagem de fundo mais adiante.
title - aqui definimos um título para um novo bloco (uma nova opção no menu do grub). Pode ser qualquer coisa.
root - esta sub-opção de title, indica o HD e a partição so sistema que será inicializado. O GRUB numera as partições no formato (hdx,y) onde x é o número do HD (como explicado acima, quando falamos do device.map) e y é o número da partição onde a primeira partição é a 0 (zero) e assim por diante.
Opções dos sistemas baseados em UNIX e GNU/Linux
kernel - no caso do Linux, ainda é necessário especificar o caminho absoluto da imagem do kernel que será inicializada. Este caminho (e ocasionalmente algumas opções) fica nesta linha.
initrd - esta opção define a imagem que será utilizada como Initial RAM Disk. Trocando em miúdos, define a imagem que será posta em RAM disk (emulação de disco rígido em memória) na inicialização.
Esses são os comandos mais usados para inicialização de sistemas Linux. Existe uma gama enorme de opções que você pode conferir lendo os manpages do GRUB. Vale a pena.
Opções dos sistemas Windows
Um bloco típico para inicizaliação de sistemas Windows é:
Código:
title Windows Vista Ultimate root (hd1,0) makeactive chainloader +1
makeactive - marca a partição em questão como ativa (permitindo ser inicializada) pois o Windows tem o seu próprio bootloader.
chainloader +1 - esta opção carrega/lê um setor (o primeiro) da partição em questão, que é justamente onde está o bootloader próprio do Windows e a partir daí o sistema é inicializado sem problemas.
6. Cores e imagens
O menu do GRUB é muito simples e é exibido por pouco tempo. Mesmo assim, existem alguns recursos para deixar o GRUB mais bonito. Um deles é alterar suas cores.
Para mudar as cores do menu, use a opção color a/b c/d no seu menu.lst, onde:
a - é a cor das opções.
b - é a cor do fundo.
c - é a cor da opção selecionada.
d - é a cor do cursor de seleção.
As cores válidas para a,b,c, d são:
* black (preto)
* blue (azul)
* green (verde)
* cyan (ciano)
* red (vermelho)
* magenta (púrpura)
* brown (marrom)
* light-gray (cinza-claro)
As cores que são válidas somente para a e c são:
* dark-gray
* light-blue
* light-green
* light-cyan
* light-red
* light-magenta
* yellow (amarelo)
* white (branco)
Portanto, para um menu no melhor estilo "Matrix", seu menu.lst poderia conter a linha:
color green/black light-green/black
Para usar uma imagem de fundo, esta deve estar no formato XPM, medir 640x480 e usar uma paleta de 14 cores. Por fim, deve também estar nomeada para splash.xpm e compactada com o gzip como splash.xpm.gz. Todas essas exigências são para reduzir o tamanho ao máximo pois o menu é carregado ainda no MBR. Vamos ver como converter uma imagem para este formato:
Abra no GIMP a imagem que você deseja (neste exemplo, vamos usar o logotipo antigo de nosso site), depois vá em "Imagem > Redimensionar" e coloque os valores como na figura abaixo:
Depois, temos que converter a paleta de cores para 14 cores. Vá em "Imagem > Modo > Indexado", sete a paleta para 14 cores e clique em "Converter".
Agora clique em "Salvar como..." e nomeie como splash.xpm. Ao clicar em salvar, o GIMP detecta o formato desejado pela extensão digitada e já cria nosso arquivo no formato certo (XPM).
É necessário compactar a imagem com o gzip e depois colocar em /boot/grub. Para isso, vamos ao terminal:
Código:
$ gzip slpash.xpm $ sudo cp splash.xpm.gz /boot/grub
Código:
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
Comment