Hugo Cisneiros (Eitch), hugo arroba devin ponto com ponto br
Versão 4.0, 2006
Índice
O GRUB (GRand Unified Bootloader), assim como o LILO é um gerenciador de boot. Seu trabalho é carregar o kernel do Linux ou iniciar outros sistemas operacionais. Ele surgiu da necessidade de um gerenciador de boot livre e por isso foi criado sob o guarda-chuva do projeto GNU. Com o GRUB, você consegue iniciar vários sistemas diferentes, seja Linux, BSDs, Mac, entre outros. Como neste manual gostamos do Linux, vamos puxar mais o saco dele :)
O GRUB tem algumas diversas vantagens sobre o LILO e é por isso que a maioria das distribuições estão substituindo o LILO pelo uso do GRUB. Além do menu bonitinho para a escolha do sistema operacional, tecnicamente o GRUB tem algumas boas vantagens:
Ele acessa diretamente o sistema de arquivos e carrega o kernel através dele. Com isso você não precisa ficar re-instalando o gerenciador na MBR toda vez que fizer alguma alteração.
Possui uma shell-interativa, ao estilo do bash, que permite o usuário a flexibilidade de controlar todo o gerenciador de boot como queira na inicialização.
Através do menu interativo de escolha do sistema operacional, você pode editar as linhas de boot já pré-definidas e alterar caso haja algum contra-tempo.
Permite colocar senha tanto para a edição da linha de boot de um sistema, quanto para iniciar este sistema.
Suporta boot remoto via o protocolo TFTP.
Então com essas características legais e divertidas, eu aconselho utilizar o GRUB para gerenciar as suas versões de kernel do Linux :)
O arquivo de configuração do GRUB geralmente está fixo em um lugar, que é o /boot/grub/menu.lst
. Muitas distribuições fazem um link para /etc/grub.conf
, então editar os dois arquivos funcionam. A seguir, um exemplo de configuração para dois sistemas operacionais: Linux e Windows:
# Exemplo para dois sistemas Operacionais: Linux e Windows!
#
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
# Partição Linux
title Fedora Core
root (hd0,1)
kernel /boot/vmlinuz-2.6.13-1.1532_FC4 ro root=/dev/hda1 vga=791
initrd /boot/initrd-2.6.13-1.1532_FC4.img
# Partição Windows
title Windows
rootnoverify (hd1,0)
chainloader +1
Exemplo 4.3. Exemplo de Arquivo de Configuração do GRUB
No exemplo acima, assim como no LILO temos duas partes: uma global com as configurações do funcionamento geral do GRUB e uma parte com as definições dos sistemas. Na seção global, podemos definir muitas coisas como senhas, imagem do menu, cores, entre outros.
Antes de mais nada, é preciso notar que o GRUB trata as partições de um modo diferente que o Linux. Por exemplo, ao invés de /dev/hda1
ele usa (hd0,0). Veja a tabela abaixo:
Dispositivo | Equivalente no GRUB |
---|---|
/dev/hda1 | (hd0,0) - Partição 1 da IDE Primária Master |
/dev/hda2 | (hd0,1) - Partição 2 da IDE Primária Master |
/dev/hdb1 | (hd1,0) - Partição 1 da IDE Primária Slave |
/dev/hdc3 | (hd2,2) - Partição 3 da IDE Secundária Master |
/dev/hdd2 | (hd3,2) - Partição 2 da IDE Secundária Slave |
Tabela 4.2. Comparação de dispositivos para o GRUB
Nota | |
---|---|
O GRUB detecta e identifica seus HDs automaticamente, fazendo a conversão mostrada acima. Caso você tenha dúvidas quanto à essa equivalência, utilize o seguinte comando para verificar:
|
Para mais informações sobre dispositivos no Linux, veja Seção 3.5, “Dispositivos”.
Agora vamos ver com detalhes das partes de configuração do GRUB!
Qual o sistema será iniciado por padrão caso o usuário não escolha nenhum outro. Serve junto com a opção timeout
para quando o usuário não fazer nada, ele inicie no sistema padrão. Caso nada seja especificado, o primeiro sistema (número 0) será o padrão.
A quantidade de segundos que o GRUB vai esperar o usuário apertar alguma tecla antes de iniciar no sistema padrão definido pela opção default
.
Configura a senha do GRUB criptografada em MD5. Faz com que o usuário tenha que digitar uma senha antes de poder editar algum dos itens do menu. Combinada com a opção lock
na configuração das partições, faz com que o usuário só consiga iniciar o sistema digitando a senha.
Importante | |
---|---|
Para gerar esses caracteres malucos criptografados é simples, basta executar o comando
Então digitando a senha, o programa vai gerar os caracteres malucos e você pode copiar e colar no seu arquivo de configuração como explicado :) |
A imagem de fundo para o menu de escolha do sistema. No exemplo está indicando uma imagem no diretório /boot/grub/
em formato .xpm.gz
(XPM GZipado). Você pode usar uma imagem de fundo, ou cores.
Se colocado, o GRUB não mostrará um menu interativo e vai iniciar o sistema padrão depois de X segundos (especificado na opção timeout
). Se você quiser acessar o menu mesmo assim, terá que apertar Esc para mostrar o menu.
Com essa opção você especifica cores para os planos de frente e fundo do menu do GRUB. As cores são especificadas pelos seus nomes em inglês: black, blue, green, cyan, red, magenta, brown and light-gray; dark-gray, light-blue, light-green, light-cyan, light-cyan, light-red, light-magenta, yellow e white.
O segundo argumento funciona da mesma maneira que o primeiro, mas apenas para os itens que estiverem selecionados no menu (que você seleciona com as setas do teclado).
Aqui você vai colocar as partições/sistemas que vai querer bootar. Cada conjunto de linhas corresponde à um sistema diferente (veja no exemplo anterior :)). Vejamos aqui os parâmetros para a partição Linux que definimos:
Aqui é o título que vai aparecer no menu. No nosso exemplo usamos o "Fedora Core", mas pode ser qualquer outra coisa!
A partição em que seu root se encontra. Lembrando que essa partição tem que ser onde está o /boot
, que é onde fica a imagem do kernel.
O caminho do kernel para fazer o boot, junto com as opções do kernel. Aqui você vai usar a mesma coisa que no LILO por exemplo :)
Onde se encontra o arquivo initrd
do kernel atual. O initrd contém módulos e informações iniciais para o sistema poder iniciar. Ele é carregado um pouco depois do kernel.
Com a opção lock
, você faz com que o usuário tenha que digitar uma senha antes de iniciar o sistema. Combine esta opção com o parâmetro global password
, explicado anteriormente.
Importante | |
---|---|
Se for usar o parâmetro |
Estas foram as opções para uma partição Linux. Se você quiser colocar uma Windows (como no exemplo que usei anteriormente), você só terá que substituir algumas coisinhas, como veremos a seguir:
Mesma coisa que anteriormente, é o título, que no caso agora vai ser Windows :(
Especifica a partição root do sistema, mas ao contrário da opção root, não monta a partição. Como o boot do Windows é direto e não precisa ser carregado um kernel pelo GRUB (ele tem seu próprio carregador), então é necessário não montar a partição do Windows.
Carrega a partição chamando um outro gerenciador de boot, que é o caso do próprio do Windows.
E assim com essas opções, você pode ir montando o seu menu de inicialização do GRUB como quiser! :)
Assim como na seção do LILO (Seção 4.1.4, “Mega-exemplo”), colocarei aqui o mesmo exemplo, só que utilizando um arquivo de configuração do GRUB. Vou apresentar um arquivo de configuração para 4 sistemas diferentes, com senha e tudo mais :)
# Arquivo de configuração do GRUB
# Seção de parâmetros globais do GRUB
default=0
timeout=10
# password boboalegre
password --md5 $1$H35tC1$l45i5oNTY0UaNxZ8TjylF.
# Seção de partições do GRUB
# Slackware Linux usando kernel 2.2.16
title Slackware Linux (Kernel 2.2.16)
root (hd0,0)
kernel /boot/vmlinuz-2.2.16 ro root=/dev/hda1
# Conectiva Linux 5.1 usando kernel 2.2.17
title Conectiva Linux 5.1 (Kernel 2.2.17)
root (hd0,1)
kernel /boot/vmlinuz-2.2.17 ro root=/dev/hda2
initrd /boot/initrd-2.2.17.img
# Conectiva Linux 5.1 usando kernel 2.2.16-cl6
title Conectiva Linux 5.1 (Kernel 2.2.16-cl6)
root (hd0,1)
kernel /boot/vmlinuz-2.2.16-cl6 ro root=/dev/hda2
initrd /boot/initrd-2.2.16-cl6.img
# Debian 2.2 usando kernel 2.2.17
title Debian 2.2 (Kernel 2.2.17)
root (hd1,0)
kernel /boot/vmlinuz-2.2.17 ro root=/dev/hdb1
initrd /boot/initrd.img-2.2.17
# Debian 2.2 usando kernel 2.2.18
title Debian 2.2 (Kernel 2.2.18)
root (hd1,0)
kernel /boot/vmlinuz-2.2.18 ro root=/dev/hdb1
initrd /boot/initrd.img-2.2.18
# Ruindows e Nojenta e Oitxo
title Ruindows e Nojenta e Oitxo
rootnoverify (hd2,0)
chainloader +1
# Fim da configuração do GRUB
Exemplo 4.4. Mega-Exemplo Complexo Alienígena de configuração do GRUB
Na maioria das vezes a distribuição quando é instalada, instala o GRUB como gerenciador de boot. Com o grub instalado na MBR do HD, não será mais preciso ficar re-instalando, como é o caso do LILO. Mas se é a primeira vez que você configurou o GRUB e está instalando, aí tudo bem. Para instalar na MBR do HD Master Primário:
# grub-install /dev/hda
Se por acaso você quiser instalar em um disquete:
# grub-install /dev/fd0
Assim você terá um GRUB no disquete para quaisquer eventualidades :) Para desinstalar o GRUB da MBR, basta você instalar outra coisa por cima, LILO ou utilizando o comando fdisk \mbr
no DOS/Windows.
Leia também a seção sobre o LILO (Seção 4.1.5, “Instalando o LILO”) para ver o caso interessante :)