(Os detalhes contidos na seção sobre o GRUB, foram
integralmente desenvolvidos por Alexandre Costa
<alebyte@bol.com.br>
como contribuição ao guia FOCA GNU/Linux.)
O GRUB (Grand Unified Boot Loader) é mais uma alternativa como gerenciador de boot e apresenta alguns recursos extras com relação as outras opções disponíveis. Ele é flexível, funcional e poderoso, podendo inicializar sistemas operacionais como o Windows (9x, ME, NT, 2000 e XP), Dos, Linux, GNU Hurd, *BSD, OS/2 e etc. Podemos destacar também o suporte aos sistemas de arquivos ext2 (Linux), ext3 e reiserfs (novos sistemas de arquivos journaling do Linux), FAT16 e FAT32 (Win 9x/ME), FFS (Fast File System usado no *BSD), minix (MINIX OS) e etc.
Por utilizar o padrão Multiboot ele é capaz de carregar diversas imagens de boot e módulos. Por esse motivo ele é o único gerenciador de inicialização capaz de carregar o conjunto de servidores do GNU Hurd. O GRUB também permite buscar imagens do kernel pela rede, por cabo seriais, suporta discos rígidos IDE e SCSI, detecta toda a memória RAM disponível no sistema, tem interface voltada para linha de comandos ou menus de escolha, além de suportar sistemas sem discos e terminais remotos.
Como possui inúmeros recursos, será apresentada sua utilização básica, ficando como sugestão ao leitor procurar se aprofundar mais em suas possibilidades de uso e configuração.
O GRUB trabalha com uma notação diferente para apontar discos e partições sendo necessário algumas explicações antes de prosseguir. Veja a tabela comparativa:
No Linux No GRUB /dev/hda (hd0) /dev/hda1 (hd0,0) /dev/hda2 (hd0,1) /dev/hdb (hd1) /dev/hdb1 (hd1,0) /dev/hdb2 (hd1,1) /dev/sda (hd0) # Disco SCSI ID 0 /dev/sda1 (hd0,0) # Disco SCSI ID 0, partição 1 /dev/sda2 (hd0,1) # Disco SCSI ID 0, partição 2 /dev/sdb (hd1) # Disco SCSI ID 1 /dev/sdb1 (hd1,0) # Disco SCSI ID 1, partição 1 /dev/sdb2 (hd1,1) # Disco SCSI ID 1, partição 2 /dev/fd0 (fd0)
OBS: Os discos IDE e
SCSI são referenciados ambos como (hd?
)
pelo GRUB. Não há distinção entre os discos e de modo geral
a identificação de unidades IDE é menor do que qualquer tipo de drive SCSI,
salvo se você alterar a seqüência de inicialização (boot) na BIOS.
Para saber como o Linux trabalha com partições veja “Identificação de discos e partições em sistemas Linux”.
A instalação do GRUB ao contrário da instalação do
LILO (“LILO”), só precisa ser executada
uma única vez. Caso seja necessária alguma mudança como por exemplo adicionar
uma nova imagem, esta pode ser feita apenas editando o arquivo de configuração
menu.lst
.
Um método simples de adicionar o GRUB para gerenciar seu MBR (Master Boot Record) é rodando o seguinte comando (como superusuário):
# /sbin/grub-install /dev/hda
Este comando grava o GRUB no MBR do primeiro disco e cria o
diretório /boot/grub
onde estarão os arquivos necessários
para o seu funcionamento. Neste ponto o GRUB já está
instalado e quando você reiniciar seu computador irá se deparar com uma linha
de comandos, onde terá que carregar a imagem do kernel manualmente. Mais
adiante será explorada a utilização desta linha de comando que é muito
eficiente.
Provavelmente você achará mais interessante copiar o arquivo de configuração de
exemplos do GRUB e otimizá-lo às suas necessidades. Note
que isto não exclui a possibilidade de utilizar a linha de comando, apenas cria
uma interface de menus onde você pode configurar várias opções de boot de uma
forma organizada, automatizada e funcional. Copie este arquivo para o
diretório /boot/grub
com o seguinte comando:
# cp /usr/share/doc/grub/examples/menu.lst /boot/grub
Por ser um arquivo de exemplos será necessário otimizá-lo de acordo com suas necessidades, o que será abordado mais a frente.
Quando criamos um disquete de partida, este funcionará em um sistema qualquer, podendo utilizar este disquete em várias máquinas diferentes ou em uma máquina em que tenha tido algum problema com o GRUB no MBR. Coloque um disquete virgem e digite os seguintes comandos:
# dd if=/usr/lib/grub/i386-pc/stage1 of=/dev/fd0 count=1 # dd if=/usr/lib/grub/i386-pc/stage2 of=/dev/fd0 seek=1
Estes comandos permitem que seja apresentada a linha de comando do grub quando este disco for utilizado para boot.
Quando foi criado o disquete de partida anteriormente, este só nos permitia
utilizar a linha de comando sendo necessário carregar o
menu.lst
pelo disco rígido (o qual deve estar presente).
Em alguns casos este disco satisfaz as necessidades básicas mas pode haver um
momento em que você deseje ter um disquete que funcione com vários sistema e
não dependa de um disco fixo.
Digite os seguintes comandos:
# mke2fs /dev/fd0 # mount /dev/fd0 /floppy -t ext2 # mkdir /floppy/grub # cp /usr/lib/grub/i386-pc/stage[12] /floppy/grub # cp /usr/share/doc/grub/examples/menu.lst /floppy/grub # umount /floppy # /sbin/grub
Este último comando disponibiliza a linha de comando do GRUB. Digite os seguintes comandos:
grub> install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/grub/menu.lst grub> quit
Neste momento o disquete está pronto. Note que o menu.lst
que foi copiado para ele é um arquivo de exemplo, sendo necessário que você o
configure de acordo com suas necessidades.
Esta seção descreve o arquivo menu.lst
com explicações
sobre as opções mais usadas. Este arquivo é dividido em parâmetros Globais,
que afetam o arquivo todo e parâmetros que só tem efeito para as imagens do
sistema que será carregado. Algumas opções podem ser passadas para o kernel do
Linux no momento do boot, algumas delas também serão detalhadas.
timeout
= Define um tempo (em segundos) de espera. Se
nenhuma tecla for pressionada, carrega a imagem padrão.
default
= Define qual será a opção padrão que deve ser
automaticamente selecionada quando nenhuma outra for especificada em um tempo
definido por timeout.
fallback
= Caso ocorra algum erro inesperado e a opção
padrão não possa ser carregada, este parâmetro define qual a outra opção deve
ser utilizada.
color
= Permite que você escolha as cores usadas no menu de
boot.
password
= Permite que você especifique uma senha. Está
será solicitada sempre que houver necessidade de realizar uma função que não
seja carregar as imagens disponíveis, como por exemplo acessar a linha de
comandos do GRUB. Você pode utilizar também o parâmetro password para esconder
um arquivo que contenha outras configurações, como um menu.lst secreto. O
arquivo pode ter um nome qualquer.
Ex.: password = senha (hd0,0)/boot/grub/secret.conf
Você pode ter várias entradas do parâmetro "password" em um mesmo arquivo sendo
que uma delas é usada para bloquear o acesso as imagens/linha de comandos e as
outras usadas para carregar arquivos de opções do GRUB. Quando você digitar
p
para entrar com a senha, você pode digitar a senha que
protege as imagens/linha de comandos ou a que é utilizada para carregar os
arquivos de opções.
hiddenmenu
= Está opção faz com que o menu de opções não
seja mostrado e de boot na imagem especificada por "default" depois de expirado
o tempo definido em timeout
. O usuário pode requisitar o
menu com as opções pressionando a tecla <ESC> antes que o tempo definido
em timeout expire.
title
= Define um texto que será apresentado no menu de boot
para identificar o sistema a ser inicializado.
root
= Determina qual a partição raiz do sistema a ser
inicializada.
rootnoverify
= Idêntica a opção root
, mas
não tenta montar a partição-alvo, o que é necessário para alguns sistemas como
Dos e Windows.
kernel
= Nesta opção você informa qual o kernel vai ser
inicializado. Você pode passar parâmetros diretamente para o kernel também.
Ex.: kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6
module
= Faz com que algum módulo necessário para o boot
seja carregado. Lembre-se que estes não são módulos do kernel (módulos de som,
rede, etc.) e sim módulos necessários ao boot de alguns sistemas, como por
exemplo o GNU Hurd.
lock
= Quando você quiser controlar se uma pessoa pode
iniciar um sistema que esteja listado nas opções do menu de boot, você pode
utilizar esta opção que faz com que a senha especificada com o comando
"password" seja solicitada no momento em que se tentar carregar a imagem em
questão.
pause
= Emite uma mensagem na tela e espera uma tecla ser
pressionada.
makeactive
= Torna a partição ativa. Este comando está
limitado a partições primárias dos discos.
chainloader
= Alguns sistemas como o Windows ou Dos
armazenam seu próprio gerenciador de boot no início da partição em que ele está
instalado. Para efetuar o boot destes sistemas através do GRUB, você precisa
pedir para que o gerenciador de boot de tal sistema seja carregado e faça seu
trabalho, dando o boot.
hide
e unhide
= Esconde e mostra partição
respectivamente. Estas duas opções são necessárias quando houver mais de uma
versão do Dos ou Windows na máquina em partições diferentes, já que estes
sistemas detectam automaticamente a partição e quase sempre o fazem de modo
errado. Suponha o Windows na primeira partição primária (hd0,0) e o Dos na
segunda partição primária (hd0,1). Quando quisermos carregar estes sistemas
devemos proceder da seguinte maneira:
title Windows hide (hd0,1) unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive title Dos hide (hd0,0) unhide (hd0,1) rootnoverify (hd0,1) chainloader +1 makeactive
map
= Alguns sistemas não permitem ser inicializados quando
não estão no primeiro disco (Dos, Win 9x, etc.). Para resolver esta e outras
situações o GRUB tem um comando que permite enganar tal
sistema mapeando as unidades de disco do modo como lhe for mais conveniente.
Imagine que você tenha o primeiro disco (hd0) com o GNU/Linux instalado e em um outro disco (hd1) com o Windows/Dos instalado. O Windows/Dos não permitem serem inicializados desta forma e como solução você poderia usar a seguinte entrada no arquivo de configurações do GRUB:
title Windows unhide (hd1,0) rootnoverify (hd1,0) chainloader +1 map (hd1) (hd0) makeactive
Isso faz com que o disco (hd1), onde esta o Windows/Dos, seja apresentado a este sistema como (hd0) "enganado" o mesmo e possibilitando o boot.
Pode ser necessário passar alguns parâmetros para o kernel no momento do boot. Para maiores informações ver a seção “Parâmetros de inicialização passados ao kernel”. Você pode passar os parâmetros da seguinte maneira:
# Exemplo de entrada no 'menu.lst'. title Linux 2.4.16 root (hd0,0) kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 mem=512M ramdisk=0
Neste exemplo, a linha com o comando "kernel" é usada para indicar qual imagem deve ser carregada. As opções que seguem (vga, mem e ramdisk) são parâmetros que devem ser passados diretamente ao kernel do sistema a ser carregado.
# Exemplo de arquivo de configuração do GRUB. # Note que você pode usar o caracter '#' para fazer comentários. # Se após 30 segundos nenhuma tecla for pressionada, carrega a imagem padrão. timeout 30 # Define a primeira imagem como padrão. default 0 # Caso a imagem padrão não funcione carrega a imagem definida aqui. fallback 1 # Define as cores que serão usadas no menu. color light-cyan/black white/blue # Permite utilizar uma senha. password minha-senha-secreta password minha-senha (hd0,0)/boot/grub/secret.conf # Para boot com o GNU/Hurd title GNU/Hurd root (hd0,0) kernel /boot/gnumach.gz root=hd0s1 module /boot/serverboot.gz # Para boot com o GNU/Linux title Linux 2.4.16 # Pede a senha configurada em "password" antes de carregar esta imagem. lock root (hd0,0) # Atente as opções passadas diretamente para o kernel (vga, mem, etc.). kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 mem=512M ramdisk=0 # Para boot com o Mach (obtendo o kernel de um disquete) title Utah Mach4 multiboot root (hd0,2) pause Insira o disquete agora!!! kernel (fd0)/boot/kernel root=hd0s3 module (fd0)/boot/bootstrap # Para boot com FreeBSD title FreeBSD 3.4 root (hd0,2,a) kernel /boot/loader # Para boot com OS/2 title OS/2 root (hd0,1) makeactive chainloader +1 chainloader /boot/chain.os2 # Para boot com Windows 9x, ME, NT, 2000, XP. title Windows 9x, ME, NT, 2000, XP unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive # Para instalar o GRUB no disco rígido. title = Instala o GRUB no disco rígido root = (hd0,0) setup = (hd0) # Muda as cores. title Mudar as cores color light-green/brown blink-red/blue
O GRUB possui inúmeros recursos, mas com certeza um dos mais
importantes e que merece destaque é sua linha de comandos. A maioria dos
comandos usados no arquivo de configuração menu.lst
são
válidos aqui e muitos outros estão disponíveis. Uma breve apresentação da
linha de comandos será dada, ficando por conta do leitor se aprofundar o quanto
achar necessário em sua flexibilidade.
Quando o GRUB é inicializado você pode se deparar com sua
linha de comandos ou se possuir o arquivo menu.lst
configurado, um menu de escolha. Mesmo usando os menus de escolha você pode
utilizar a linha de comandos, bastando para isso seguir as instruções no rodapé
da tela onde o GRUB nos informa que podemos digitar
e
para editar as entradas de boot ou c
para ter acesso a linha de comandos (lembre-se que pressionar
<ESC>
faz com que você volte aos menus de escolha).
Caso a opção password
tenha sido especificada no arquivo
menu.lst
, será necessário antes de acessar as outras
opções (que estarão desabilitadas) pressionar p
e entrar com
a senha correta.
Agora, com acesso a linha de comandos, você pode verificar os comandos disponíveis pressionando duas vezes a tecla <TAB>. Note que você também pode utilizar esta tecla para completar nomes de comandos bem como parâmetros de alguns comandos.
Alguns comandos disponíveis:
cat
= Este comando permite verificar o conteúdo de um
arquivo qualquer, o qual deve estar gravado em um dispositivo ligado a sua
máquina. Embora seja um recurso útil, nenhuma permissão de acesso é verificada
e qualquer pessoa que tenha acesso a linha de comandos do GRUB pode listar o
conteúdo de arquivos importantes. Para contornar este problema o parâmetro
password
é utilizado no arquivo
menu.lst
e faz com que uma senha seja solicitada antes de
liberar o acesso a linha de comandos. Não esqueça que ainda é possível
utilizar um disquete com o GRUB para dar boot na máquina o
que permite usar a linha de comandos pelo disquete.
Ex.: grub> cat (hd0,0)/etc/passwd
cmp
= Este comando é utilizado para comparar dois arquivos.
Ex.: grub> cmp (hd0,0)/arquivo1 (hd0,0)/arquivo2
configfile
= Carrega um arquivo de configuração do GRUB.
Ex.: grub> configfile (hd0,0)/boot/grub/menu.lst
displayapm
= Mostra informações sobre APM.
displaymem
= Mostra informações sobre a memória RAM.
find
= Permite encontrar um arquivo. A saída deste comando
disponibiliza o nome completo do caminho para o arquivo e a partição onde o
mesmo está localizado.
Ex.: grub> find stage1
geometry
= Mostra informações sobre a geometria reconhecida
de seu drive e permite que você escolha a geometria desejada caso esta esteja
sendo reconhecida erroneamente.
help
= help "comando" para ver a ajuda.
Ex.: help color
install
= Instala o GRUB, embora não seja recomendado o uso
deste comando diretamente, pois é possível esquecer ou trocar facilmente um
parâmetro e sobrescrever a tabela de partições de seu disco.
Ex.: install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/grub/menu.lst
setup
= Você pode usar este comando para instalar o GRUB.
Note que sua sintaxe é menos complexa do que a usada em
install
.
Ex.: grub> root = (hd0,0) grub> setup = (hd0)
quit
= Abandona a linha de comandos do GRUB.
reboot
= Reinicia o computador.
boot
= Efetua o boot. Suponha o Linux instalado em (hd0,0),
podemos passar os seguintes comandos na linha de comandos para efetuar o boot
de uma imagem do GNU/Linux:
grub> root (hd0,0) grub> kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 grub> boot
Muitos outros comandos estão disponíveis tanto na linha de comandos do
GRUB quanto no arquivo de configuração
menu.lst
. Estes comandos adicionais podem ser necessários
apenas para algumas pessoas e por isso não serão explicados.
Não existe a necessidade de se remover o GRUB do MBR pois
não há utilização para o mesmo vazio. Para substituir o
GRUB do MBR é necessário apenas que outro gerenciador de
boot escreva algo nele. Você pode seguir o procedimento de instalação do
LILO para escrever algo no MBR ou usar o comando
fdisk /mbr
do DOS.
Para obter informações mais detalhadas sobre o GRUB é recomendado o site oficial do mesmo, o qual está disponível apenas na língua inglesa. Os seguintes sites foram utilizados na pesquisa:
Site oficial do GRUB: http://www.gnu.org/software/grub/
Site Debian-br (http://www.debianbrasil.org/), na parte de suporte, documentação, "Como usar o GRUB: Um guia rápido para usar o GRUB, feito por Vitor Silva Souza e Gustavo Noronha Silva".
Copyright © 1999-2020 - Gleydson Mazioli da Silva