### CL 6.0 ###
O que é o GRUB
A principal característica do GRUB é a
flexibilidade. O GRUB compreende sistemas de arquivos e formatos de
kernel executáveis, então é possível
carregar um sistema operacional arbitrário da maneira que
preferir, sem que seja necessário gravar a
posição física do seu kernel no disco.
Entretanto é necessário especificar o drive (e a
partição) onde reside o kernel e o nome do arquivo do
mesmo. Para evitar toda vez ficar informando o drive e o nome do
arquivo, é possível configurar um pequeno arquivo.
GRUB irá localizar e lê-lo e irá fornecer uma
interface amigável na qual pode-se selecionar o sistema
operacional a ser iniciado. Naturalmente também é
possível utilizar a interface de linha de comando para
alcançar esses objetivos.
Sintaxe de Utilização
Primeiramente o GRUB requer que o nome do dispositivo esteja
entre `(' `)'. A palavra 'fd' significa que é um disquete e
o número zero é o número do drive, que
é contado a partir do zero. Esta expressão significa
que o GRUB irá utilizar o disquete por inteiro.
A palavra 'hd' significa que é um disco rígido. O
primeiro número '0' inidica o número do drive, que
é o primeiro disco rígido, enquanto que o segundo
inteiro '1' indica o número da partição.
Novamente note que o número da partição
é contado do '0' e não do '1'. Essa expressão
significa a segunda partição do primeiro disco
rígido. Nesse caso o GRUB irá utilizar uma
partição do disco ao invés de utilizar o disco
inteiro.
Isso especifica a primeira "partição extendida" do
primeiro disco rígido. Note que o número das
partições extendidas são contados a partir do
'4', independente do número atual de partições
primárias do disco.
Isso significa a partição BSD 'a' do segundo disco
rígido. Não entraremos em detalhes sobre esses tipos
de partições.
Note que o GRUB não distingue IDE de SCSI, ele
simplesmente conta os números dos drives a partir do zero,
independente do tipo. Normalmente qualquer número do drive
IDE é menor do que qualquer número do drive SCSI,
embora não seja verdade se você mudar a
sequência do boot alterando os drives IDE e SCSI na sua
BIOS.
Agora a questão é, como especificar o seu arquivo
? Novamente veja esse exemplo:
Isso especifica o arquivo chamado
vmlinuz, encontrado na primeira partição do
primeiro disco rígido.
Instalação
É recomendável criar um disco de emergência
para que seja possível recuperar o computador caso o seu
disco se torne não-inicializável
(imbootável).
Criando um disco de emergência com um
menu de opções
-
- Primeiramente formate o disquete:
-
- Crie um diretório grub na raíz do disquete:
# mount /dev/fd0
# mkdir /mnt/floppy/grub
|
-
- Copie os arquivos stage1 e stage2 e
menu.lst
# cp /boot/grub/stage? /mnt/floppy/grub
# cp /boot/menu.lst /mnt/floppy/grub
# cd /
# umount /mnt/floppy
|
-
- Rode o GRUB
# /usr/sbin/grub
grub> install (fd0)/grub/stage1 (fd0) (fd0)/grub/stage2 0x8000
(fd0)/grub/menu.lst
|
Em seguida reinicie o seu computador com esse disquete no driver
e logo após isso será apresentado o menu com as
possíveis opções de escolha.
Criando um disco de emergência
Para criar um disco de boot do GRUB, é necessário
pegar o stage1 e
stage2 do diretório
/boot/grub, e escrevê-los no primeiro e no segundo bloco
do seu disquete.
Atenção Este procedimento
irá destruir qualquer dado armazenado no disquete.
# cd /boot/grub
# dd if=stage1 of=/dev/fd0 bs=512 count=1
# dd if=stage2 of=/dev/fd0 bs=512 seek=1
|
Após isso reinicie o computador com esse disquete no
drive, e siga as instruções abaixo:
GNU/Linux
-
Configure o dispositivo root (/), provavelmente o comando find /vmlinuz, find
/boot/vmlinuz ou similar irá ajudá-lo.
-
Carregue o kernel:
grub> kernel (hd0,0)/boot/vmlinuz
root=/dev/hda1
|
Nesse caso o arquivo vmlinuz está localizado no primeiro
HD e na primeira partição do mesmo e no
diretório /boot. Altere esse exemplo de acordo com a sua
necessidade.
Atenção No caso do
diretório /boot existirem outros
arquivos vmlinuz
Isso acontece quando é instalado várias
versões do linux no mesmo HD, então é
necessário especificar o arquivo completo dessa forma:
grub> kernel (hd0,0)/boot/vmlinuz-2.2.16-13cl
root=/dev/hda1
|
Se for necessário especificar algum parâmetro do
kernel, apenas adicione-os ao comando, por exemplo, para configurar
vga para 0x317,
faça o seguinte:
grub> kernel (hd0,0)/vmlinuz root=/dev/hda1
vga=0x317
|
-
Se for utilizado o initrd, execute o comando
initrd depois do kernel. Geralmente
utilizado na existência de dispositivos SCSI:
grub> initrd (hd0,0)/initrd
|
Nesse caso o arquivo initrd está localizado no primeiro
HD e na primeira partição do mesmo.
-
Finalmente execute o comando boot.
Atenção Se for utilizar um
initrd e especificar a opção
mem= para o kernel, para ele usar menos memória do que o
tamanho atual, será necessário também
especificar a mesmo tamanho da memória do GRUB. Para mostrar
ao GRUB o tamanho, execute o comando
uppermem antes de ler o kernel.
DOS/Windows
Um problema em iniciar esses sistemas é se estiver
instalado mais do que um conjunto de DOS/WINDOWS no mesmo disco,
porque eles se confundem se existir mais do que uma
partição primária para o DOS/WINDOWS.
Certamente isso deveria ser evitado, mas existe uma
solução para isso que é utilizar a
técnica de partição hiding (esconder) e
unhiding (mostrar).
Se o GRUB "hiding" (esconde) uma partição DOS (ou
Windows), então ela ignora a partição. Se o
GRUB "unhiding" (mostra) uma partição DOS (ou
Windows), ele detectará a partição. Dessa
forma se estiver instalado Dos (ou Windows) na primeira
partição e na segunda partição no
primeiro disco rígido, para inicar a primeira cópia
faça o seguinte:
-
somente o Windows ou o DOS instalado:
grub> unhide (hd0,0)
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> makeactive
grub> boot
|
Nesse exemplo o windows está instado no primeiro HD e na
primeira partição do mesmo
-
um conjunto de duas instalação de windows ou
DOS
grub> unhide (hd0,0)
grub> hide (hd0,1)
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> makeactive
grub> boot
|
Nesse exemplo uma cópia do windows (ou Dos) está
instalado no primeiro HD e na primeira partição do
mesmo, e outra cópia do windows (ou Dos) no primeiro HD e na
segunda partição do mesmo.
Interface do usuário
GRUB possui uma interface com um menu simples para escolher
entre as opções vindas de um arquivo de
configuração, ou através da linha de
comando.
GRUB procura pelo seu arquivo de configuração logo
que ele é carregado. Se um é encontrado então
a interface do menu é construída por completo
utilizando todas as entradas encontradas no arquivo. Se escolher no
menu a opção linha de comando, ou se não foi
encontrado nenhum arquivo de configuração,
então o GRUB cai para a interface de linha de comando.
A interface de linha de comando
A interface de linha de comando fornece um prompt e depois uma
área de texto editável parecida em muito com a linha
de comando no UNIX ou DOS. Os comandos são um subconjunto
daqueles disponíveis no arquivo de
configuração, utilizados exatamente com a mesma
sintaxe.
O movimento do cursor e a edição de texto podem
ser feito via um subconjunto de funções
disponíveis no shell Bash:
Quando estiver digitando os comandos, caso o cursor esteja antes
ou na primeira letra do comando então se a tecla TAB for pressionada irá aparecer a
listagem dos comandos disponíveis, e se o TAB for pressionado quando o cursor estiver depois
da primeira letra então uma listagem completa será
fornecida dos discos, partições e nome dos arquivos
dependendo do contexto.
O menu da interface
O menu da interace é simples de ser utilizado.
Basicamente utilize as teclas de direção para
escolher a opção desejada e pressione ENTER para iniciar o sistema desejado. Um timeout
(intervalo) está disponível para iniciar uma
opção padrão, e isso é desativado no
momento que uma tecla é pressionada.
Caso deseje utilizar a linha de comando basta pressionar a tecla
c, que que é exatamente igual
quando se executa uma versão do GRUB sem o arquivo de
configuração, e para voltar ao menu pressione ESC, ou para editar algum dos ítems do
menu pressione e.
Editando uma entrada no menu
Se a tecla ESC for pressionada no
editor, ele abortará todas as mudanças feitas nas
opções de configuração e
retornará ao menu principal.
Quando uma linha particular é selecionada, o editor
coloca o usuário em uma versão especial da linha de
comando do GRUB afim de editar a linha. Caso a tecla ENTER for pressionada, GRUB irá trocar a
linha em questão com as mudanças feitas pelo
usuário.
Para adicionar uma nova linha de comando ao menu de entrada
basta pressionar o (adiciona uma linha
depois da linha corrente) ou O
(adiciona uma linha antes da linha corrente).
Para apagar uma linha pressione
d.