Como Utilizar o GRUB

Started by mrx, 09 de February , 2007, 03:04:32 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

mrx

Como utilizar o GRUB

Autor: Luiz Aguiar (crashx)

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/


Voltando a ativa. ;P