O GRUB (Grand Unified Boot Loader ou grande gerenciador unificado de inicialização) é um gerenciador de inicialização poderoso, com muitos recursos. Flexível e funcional, permite inicializar sistemas como Windows, DOS, Linux, GNU Hurd, BSD, OS/2 etc., além de suportar muitos tipos diferentes de sistemas de arquivos.
O GRUB possui suporte à inicialização via linha de comando, útil para uso em sistemas de alta segurança onde o acesso ao computador é altamente restrito.
A configuração do GRUB é feita através da edição do arquivo /boot/grub/menu.lst. Ao contrário do LiLo, ao se fazer modificações no arquivo de configuração do GRUB não é necessário reinstalá-lo. O GRUB acompanha programas extras que ajudam na configuração automática de seu arquivo de configuração, detectando automaticamente os diferentes sistemas operacionais e versões do kernel Linux existentes.
Abaixo, segue um exemplo do arquivo /boot/grub/menu.lst acompanhado da explicação dos seus principais parâmetros.
# Sistema padrão
default 0
# Tempo de espera antes de inicializar o sistema operacional padrão
timeout 5
# Selecionar as cores de exibição da tela de prompt
color cyan/blue white/blue
## ## Fim das opções principais ##
# Splashimage - imagem exibida no fundo da tela de prompt
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
# Lista dos sistemas operacionais disponíveis
# 1ª Entrada (0). Debian GNU/Linux, kernel 2.6.8-2-k7
title Debian GNU/Linux, kernel 2.6.8-2-k7
root (hd0,1)
kernel /boot/vmlinuz-2.6.8-2-k7 root=/dev/hda2 ro vga=791
initrd /boot/initrd.img-2.6.8-2-k7
savedefault
boot
# 2ª Entrada (1). Debian GNU/Linux, kernel 2.6.8-2-k7,
# modo monousuário, para manutenção do sistema
title Debian GNU/Linux, kernel 2.6.8-2-k7 (recovery mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.8-2-k7 root=/dev/hda2 ro single
initrd /boot/initrd.img-2.6.8-2-k7
savedefault
boot
# 3º Sistema Operacional (2). Microsoft® Windows® XP
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1
- default 0: seleciona qual o número do sistema operacional padrão de acordo com a sua entrada na lista. A primeira entrada na lista será a número 0, a segunda a número 1 e assim por diante;
- timeout 5: o parâmetro timeout especifica o tempo que o GRUB vai esperar antes de carregar automaticamente o sistema padrão (especificado no parâmetro default). Para carregar automaticamente o primeiro sistema da lista, coloque 0. Se quiser que o GRUB fique esperando até que se escolha um sistema operacional para inicializar, comenta-se esta linha (#timeout);
- color cyan/blue white/blue: especifica as cores utilizadas na tela de prompt;
- splashimage=(hd0,1)/boot/grub/splash.xpm.gz: especifica o endereço da imagem de fundo que será exibida na tela de prompt;
- title: é o título da entrada que será exibido no menu do prompt. Pode ser "Debian GNU/Linux, kernel 2.6.8-2-k7", "Microsoft Windows XP Professional", "Slackware Linux 10.1, kernel 2.4.29" etc;
- root(hd0,1): informa o disco e partição onde está instalado o sistema operacional. Ao contrário do LiLo, que utiliza endereços absolutos do disco rígido (como /dev/hda1, /dev/hda2, etc.), o GRUB utiliza endereços físicos no estilo (hdx,y), sendo que "x" é o número do HD (0 = primary master, 1 = primary slave, 2 = secondary master, 3 = secondary slave) e "y" o número da partição (0 = partição 1, 1 = partição 2, 2 = partição 3);
- kernel: aqui se deve especificar o endereço em que está localizado o kernel Linux (desde que se esteja configurando uma entrada para um sistema GNU/Linux), seguido das opções de inicialização. O parâmetro ro é padrão. Repare que, no GRUB, o parâmetro vga=791 é inserido na mesma linha do parâmetro kernel;
- initrd: se o sistema utilizar initrd, ela deve ser especificada aqui. Se não utilizar, pode-se excluir essa linha ou comentá-la (#initrd);
- savedefault: comando interno do GRUB para salvar as informações listadas anteriormente;
- boot: comando interno do GRUB que carrega o sistema de acordo com as informações listadas anteriormente;
- makeactive: parâmetro necessário para inicializar outros sistemas operacionais, como o Windows;
- chainloader +1: utilizado para inicializar outros sistemas operacionais, como o Windows.
Para instalar o GRUB pela primeira vez, o comando é:
# grub-install [local]
Se quiser instalar na MBR (o padrão), coloca-se /dev/hda:
# grub-install /dev/hda
Se quiser instalar numa partição, especifique-a. Nesse caso será necessário um disquete ou um outro gerenciador de inicialização para iniciar o sistema.
# grub-install /dev/hda1
Se for instalado um novo sistema operacional ou um novo kernel extra, será preciso atualizar o menu.lst. Existe um jeito de fazer isso automaticamente, mas nem sempre funciona completamente (não há motivo para preocupação, pois não existe a possibilidade de se perder o acesso ao sistema com esse comando):
# update-grub
Informações adicionais e recursos extras podem ser obtidos nas páginas de manual do GRUB:
$ man grub