Tema LinuxBSD Ver. 0.2 lnx
 http://www.linuxbsd.com.br 

  


  

  

Como utilizar o GRUB

Enviado por DarkWarrior em Qua, 2007-01-17 13:58.

Autor: Luiz Aguiar (crashx)
eMail: luizaguiar[NOSPAM]softhome.net
Data: 28 de agosto de 2003

Este é um artigo de nivél básico, que visa mostrar as opções e funcionalidades básicas do GRUB. Para um aprofundamento nos detalhes de configurações e opções, leia a documentação disponível na sua distribuição e no site oficial http://www.gnu.org/software/grub/.

1 - O que é o GRUB ?

O GRUB (Grand Unified Boot Loader) é um gerenciador de boot, assim como Lilo e outros, que utiliza o padrão Multiboot, sendo capaz de carregar diversas imagens de boot e módulos. O GRUB também permite buscar imagens pela rede, por cabo seriais, suporta discos rígidos IDE e SCSI, sistemas sem discos e terminais remotos. Possui interface por linha de comandos ou menus de escolha.

Ele é flexível, funcional e poderoso, podendo iniciar sistemas operacionais como FreeBSD, OpenBSD, NetBSD, GNU/Linux, GNU/Hurd (o único bootloader capaz). Sistemas operacionais proprietarios como o Windows (9x, ME, NT, 2000 e XP), Dos e IBM OS/2 sao suportados usando a função chainloader. Podemos destacar também o suporte aos sistemas de arquivos ext2 , 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.

Além das citadas acima o GRub possui ainda as seguintes características:

* Suporte a não-Miltiboot sistemas operacionais.
* Leitura de múltiplos módulos (não são módulos do kernel como no GNU/Linux).
* Arquivo de configuração simples e fácil.
* Interface de selecao por Menu.
* Interface de linha de comandos flexível, simples para novos usuários e poderosa para usuários avançados.
* Acesso a dados em qualquer dispositivo instalado.
* Detecção de toda memória RAM disponível.
* Suporte a Logical Block Address (LBA).

2 - Nomenclatura das partições

O GRUB não faz distinção entre discos IDE e SCSI, ele chama ambos por (hd?). Abaixo segue uma tabela comparativa entre as nomenclaturas adotas pelo GNU/Linux e pelo GRUB para tratar discos e partições.

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)
/dev/sda1 (hd0,0)
/dev/sda2 (hd0,1)

/dev/sdb (hd1)
/dev/sdb1 (hd1,0)
/dev/sdb2 (hd1,1)

/dev/fd0 (fd0)

3 - Como instalar o GRUB (MBR e disquete)

Ao contrário do Lilo, o GRUB necessita ser instalado uma única vez. Toda alteração deve ser feita no arquivo de configuração /boot/grub/menu.1st, desde uma inclusão de disco ou apenas alteração de imagem de kernel.

Um arquivo de exemplo fica localizado em /usr/share/doc/grub/examples/menu.1st. Você pode utilizá-lo como referência para fazer o seu próprio menu.1st

Instalando no MBR (Master Boot Recorde):

# grub-install /dev/hda

Instalando no disquete:
Modo linha de comando:

# dd if=/usr/lib/grub/i386-pc/stage1 of=/dev/fd0 count=1
1+0 records in
1+0 records out

# dd if=/usr/lib/grub/i386-pc/stage2 of=/dev/fd0 seek=1
153+1 records in
153+1 records out

Modo por menu de seleção:
# mke2fs /dev/fd0
# mount /dev/fd0 /floppy -t ext2
# mkdir /floppy/grub
# cp /usr/lib/grub/i386-pc/stage1 /floppy/grub
# cp /usr/lib/grub/i386-pc/stage2 /floppy/grub
# cp /boot/grub/menu.lst /floppy/grub
# umount /floppy

No GRUB digite:
# grub
grub> install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/grub/menu.lst
grub> quit

Está pronto o disquete com seleção por menu.

4 - Exemplo de arquivo de configuração menu.1st

timeout 30
default 0
fallback 1
color light-cyan/black white/blue
password minha-senha-secreta

# 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.21
lock
root (hd0,0)
kernel (hd0,0)/boot/vmlinuz-2.4.21 vga=6 mem=512M ramdisk=0 hdc=ide-scsi 5

# Para boot com FreeBSD
title FreeBSD 4.8
root (hd0,2,a)
kernel /boot/loader

# Para boot com Windows (qualquer um)
title Windows XP
unhide (hd0,0)
rootnoverify (hd0,0)
chainloader +1
makeactive

Opções:
timeout = Define o tempo (em segundos) de espera para bootar a imagem padrão.

default = Define qual é a imagem padrão a ser dado boot, detalhe, a numeração começa em 0, definindo que é a primeira entrada de imagem, 1 para a segunda entrada de imagem, e assim por diante.

fallback = Caso o boot na imagem padrão não ocorra devido a algum erro/problema, pode ser definido aqui uma outra opção a ser dado boot.

color = Define as cores a serem usadas no menu.

password = Aqui atribuí-se uma senha a ser usada para não permitir alterações no menus e acesso a ouras funções como a linha de comando.

title = Define um título que será apresentado no menu de boot.

root = Determina qual a partição raiz do sistema.

rootnoverify = Idêntico 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 a imagem de kernel vai ser iniciada. Você pode passar parâmetros diretamente para o kernel também, como vga, mem, ramdisk, etc.

module = Faz com que algum módulo necessário para o boot seja carregado. São módulos necessários ao boot de alguns sistemas, como por exemplo o GNU Hurd e não módulos de kernel como som, rede, file systems, etc.

lock = Faz com que a senha especificada com o parâmetro "password" seja solicitada no momento em que se tentar carregar a imagem em questão.

makeactive = Torna a partição ativa. Este comando está limitado a partições primárias dos discos.

chainloader = Alguns sistemas como o Windows armazenam seu próprio gerenciador de boot no início da partição em que ele está instalado. A opcao chainloader carregar o gerenciador de boot de tal sistema deixando-o efetuar o boot normalmente.

map = Alguns sistemas não permitem ser iniciados quando não estão no primeiro disco (Dos, Win 9x, etc.). A opção map faz um mapeando das unidades de disco de modo como que possa contornar esse problema.

hide e unhide = Esconde e mostra partição, necessário quando houver mais de uma versão do Windows na máquina. Suponha que exista o Windows 98 na primeira partição primária (hd0,0) e o Windows XP na segunda partição primária (hd0,1), o menu.1st ficaria assim:

title Windows 98
hide (hd0,1) # esconde o XP
unhide (hd0,0)
rootnoverify (hd0,0)
chainloader +1
makeactive

title Windows XP
hide (hd0,0) # esconde o 98
unhide (hd0,1)
rootnoverify (hd0,1)
chainloader +1
makeactive

5 - Especificando o runlevel do sistema

Uma opção muito versátil do GRUB é poder especificar o runlevel do sistema na entrada de configuração do mesmo. Para isso basta colocar o número do runlevel que deseja utilizar no final da opção kernel.

Exemplos:

# Modo single user
kernel (hd0,0)/boot/vmlinuz-2.4.21 vga=6 hdc=ide-scsi single

Você pode passar o parâmetro init=/bin/sh pra cair direto no shell, no caso de perder a senha do root por exemplo.

# Modo console (runlevel 2)
kernel (hd0,0)/boot/vmlinuz-2.4.21 vga=6 hdc=ide-scsi 2

# Modo com boot gráfico (runlevel 5)
kernel (hd0,0)/boot/vmlinuz-2.4.21 vga=6 hdc=ide-scsi 5

6 - Como utilizar a linha de comandos

Com certeza um dos recursos mais interessantes do grub é a linha de comandos, que alias já me salvou várias vezes :-), ela de dá opções muito bacanas para adicionar ou remover entradas, editar opções do boot do sistema desejado, procurar imagens a serem bootadas, entre outras coisas, e tudo isso sem mesmo bootar em sistema algum.

Ex.: Você acabou de compilar o kernel 2.6.0-test3 e está louco para testá-lo, e após o reboot recebe aquela mensagem tão bonita de "kernel panic" :-), ai você se lembra que não fez um disco de boot e nem adicionou sua imagem atual como alternativa de boot e não sabe onde esta o CD de instalação para um boot modo rescue. Nessas horas com certeza você verá como é útil a linha de comandos, através dela você localiza sua antiga imagem e pode dar boot em seu sistema normalmente.

Obtendo ajuda:

Para obter ajudar sobre qualquer dos comandos do GRUB utilize o comando help, exemplo:
grub> help find
find: find FILENAME
Search for the filename FILENAME in all of partitions and print
the list of the devices which contain the file.

Situação 1:
Como bootar o sistema através do disquete usando a linha de comandos ?
Você pode usar a seguinte sequência:
grub> root (hd0,0)
grub> kernel (hd0,0)/boot/vmlinuz-2.4.21
grub> boot

Note que vc pode usar o para auto-completar os nomes ou para listar o conteudo da partição em uso. Exemplo:
grub> kernel (hd0,0)/boot/

Possible files are: grub message.ja message config-2.4.20-8 boot.b chain.b os2_d.b module-info-2.4.20-8 System.map-2.4.20-8 vmlinuz System.map vmlinux-2.4.20-8 vmlinuz-2.4.20-8 module-info kernel.h initrd-2.4.20-8.img

grub> kernel (hd0,3)/boot/

Depois disso fica fácil encontrar uma imagem decente pra dar boot no sistema.

Situação 2:
Dei boot em modo rescue pelo cd da minha distribuição porque gravei uma configuração errada no MBR, como instalar o GRUB no HD ?
# grub
grub> root (hd0,0) # Indica a partição raiz do sistema.
grub> setup(hd0) # Grava o GRUB no MBR do disco 0.

ou

# grub-install /dev/hda

Exemplos de comandos:
Mostra o conteudo do arquivo /usr/share/doc/grub/exemples/menu.1st:
grub> cat (hd0,1)/usr/share/doc/grub/exemples/menu.1st

Lê o arquivo de configuracao do GRUB:
grub> configfile (hd0,0)/boot/grub/menu.lst

Lista os devices que contem o arquivo stage1:
grub> find stage1

Especifica a particao raiz:
grub> root = (hd0,0)

Exibe a ajuda do comando kernel:
grub> help kernel

Sai do prompt de comando:
grub> quit

Reinicia o computador:
grub> reboot

7 - GRUB com splashimage

O Grub não tem suporte oficial a imagens gráficas na tela de boot (ou seleção de sistemas). Enquanto escrevia esse artigo, a versão do Grub é a 0.93. Segundo um de seus próprios desenvolvedores, eles precisam aperfeiçoar e adicionar recursos mais importantes para o Grub no momento, como suporte ao novo sistema de arquivos do FreeBSD UFS2.

O que acontece, é a disponibilidade de alguns patchs feitos pelos hackers do Grub para ele suportar imagens gráficas. Esse patch foi desenvolvido inicialmente por Paulo César Pereira de Andrade.

Distribuições como Red Hat, Conectiva entre muitas outras, já utilizam tais patchs, alguns desenvolvidos pela própria equipe de desenvolvedores da distribuição.

Por enquanto, se você utiliza o Grub e quer colocar uma imagem em seu tela de boot, só mesmo adicionando um pacth. Como isso não faz parte da documentação oficial do software, isso não será abortado (por enquanto) neste artigo. :-)

Uma ótima referência pode ser encontrada na seguinte url:
http://ruslug.rutgers.edu/~mcgrof/grub-images/

8 - Como remover o GRUB do MBR

Não existe um comando do próprio GRUB para removê-lo do MBR. Por quê ?
Porque não existe uma utilidade para um MBR vazio. :-)

Você pode substituí-lo por outro gerenciador de boot, como por exemplo instalar o lilo "por cima" dele, assim o lilo sobrescreve o MBR e apaga o GRUB. Ou ainda usar o comando fdisk/mbr através de um disquete de boot do DOS (de preferência FreeDOS). :-)

Mais detalhes e documentos, veja o site oficial do GRUB:
http://www.gnu.org/software/grub/

Referências:
GRUB Manual: http://www.gnu.org/software/grub/
Guia Foca GNU/Linux: http://focalinux.cipsga.org.br/

»