Fonte: http://ubuntuforum-br.org/index.php?topic=58947.0

GRUB 2 - Um help na apresentação e configuração
« em: 12 de Novembro de 2009, 01:23 »

Esse tópico é uma tradução livre e resumida de : Documentação da 
Comunidade Ubuntu, GRUB 2.
Estive tentado a fazer isso com o GRUB antigo e agora aproveitei a 
oportunidade do lançamento do GRUB 2.
São abordados só detalhes da estrutura e da configuração. Quem desejar 
mais é só ir na Fonte.
A intenção é que seja um guia para os novos usuários do GRUB 2.


Apresentação

O GRUB 2 é agora o gerenciador de boot do Ubuntu 9.10 (Karmic Koala) e 
muitos outros sistema operacionais.
Na inicialização do computador o GRUB 2 apresenta o menu e espera a 
atuação do usuário dentro do tempo fixado ou transfere automaticamente o 
controle para o sistema operacional.
GRUB 2 é um software Open Source. Ele é descendente do GRUB (GRand 
Unified Bootloader).
Foi completamente reescrito para dar ao usuário flexibilidade e 
performance significativamente aumentadas.

Melhorias

As melhorias em relação ao GRUB incluem :

- apoio de scripts
- módulo de carregamento dinâmico
- modo de recuperação
- menus personalizados
- temas
- suporte ao menu gráfico
- imagens iso de Live CD de boot diretamente do disco rígido
- nova estrutura de arquivos de configuração
- sem suporte a plataforma x-86 (tal como PowerPc)
- suporte universal a UUIDs (não apenas o Ubuntu)


GRUB vs GRUB 2

O menu do GRUB 2 parecerá familiar aos usuários do Grub mas há muitas 
diferenças internamente.

- numa instalação limpa do Ubuntu 9.10 sem nenhum outro sistema 
operacional instalado o Grub 2 inicializará
diretamente na tela de login ou Desktop.
- pressione a tecla SHIFT para mostrar o menu durante o boot (no GRUB 
legacy formalmente ESC)
- /boot/grub/menu.lst do GRUB legacy foi substituido por 
/boot/grub/grub.cfg no GRUB 2
- não há "/find boot/grub/stage1" no prompt do grub. Stage 1.5 foi eliminado
- o principal arquivo de menu /boot/grub/grub.cfg não é para ser editado 
mesmo pelo "root"
- grub.cfg é sobrescrito sempre que houver uma atualização, um kernel 
for adicionado/removido ou o usuário
executar update-grug
- o usuário pode criar um arquivo personalizado em /etc/grub.d/40_custom 
com suas próprias entradas. Esse
arquivo não será sobrescrito
- o arquivo de configuração principal para alterar as configraçoes do 
menu é o /etc/default/grub
- existem vários arquivos para configurar o menu - /etc/default/grub 
mencionado acima e todos os arquivos
da pasta /etc/grub.d/
- mudou a numeração das partições. a primeira partição agora é 1 em vez 
de 0. O primeiro dispositivo no entanto
continua 0 (não mudou)
- buscas automáticas para outros sistema operacionais como windows 
sempre que update-grub é executado
- nenhuma mudança na configuração dos arquivos acontecerá até que o comando
Código:

sudo update-grub


seja executado

Instalação

Voce pode checar a versão instalada no seu sistema pelo Synaptic ou pelo 
Terminal digitando :
Código:

grub-install -v


O GRUB 2 vem instalado por padrão no Ubuntu 9.10 (Karmic Koala).
O pacote do GRUB 2 é o grub-pc. O pacote grub-common também será instalado.
grub2 é um pacote simulado de transição, pode ser seguramente removido e 
é mostrado no Synaptic como não instalado.

Upgrade para GRUB 2

A atualização para GRUB 2 a partir do GRUB comum é relativamente fácil.
Os desenvolvedores decidiram não usar uma atualização automática para o 
GRUB 2 como padrão em instalações de atualização.
Quem fizer upgrade para o Ubuntu 9.10 pode continuar usando o GRUB 
legacy se desejar,
Para fazer a atualização para GRUB 2 : Upgrade para GRUB 2


Estrutura de arquivos

GRUB 2 incorpora um diretório totalmente revisado e uma hierarquia de 
arquivos.
Para saber onde o GRUB 2 está instalado digite no terminal
Código:

sudo grub-probe -t device /boot/grub

para a partição e
Código:

sudo grub-probe -t fs_uuid /boot/grub

para a UUID.

Hierarquia de arquivos e diretórios

/boot/grub/grub.cfg

É o que mais se assemelha ao /boot/grub/menu.lst do GRUB mas 
diferentemente desse o grub.cfg não se destina a ser editado.
Cada seção é claramente delimitada com "(### BEGIN)" e a referência do 
arquivo na pasta /etc/grub.d a partir da qual a informação foi gerada.
grub.cfg é atualizado executando o comando
Código:

sudo update-grub

e é automaticamente modificado quando há uma atualização ou 
instalação/remoção de kernel.
Por padrão, e sempre que o comando update-grub é executado, este arquivo 
é feito "somente leitura". Isto porque a intenção é que o arquivo não 
seja editado manualmente.
O usuário também verá uma infinidade de arquivos *. mod na pasta 
/boot/grub . Esses arquivos são da natureza modular do GRUB 2 e são 
carregados necessariamente pelo GRUB 2.


/etc/default/grub

Esse arquivo pode ser editado e configurado. Detalhes da configuração 
estão mais adiante em Configurando GRUB 2.


/etc/grub.d/ (diretório)

Os arquivos nessa pasta são lidos durante a execução do comando
Código:

sudo update-grub

e suas instruções são incorporadas ao /boot/grub/grub.cfg.
A colocação dos ítens de menu no grub.cfg é determinada pela ordem em 
que os arquivos são executados nessa pasta.
Arquivos com numeral no início são executados primeiro começando pelo 
menor. 10_linux é executado antes de 20_mentest que é executado antes de 
40_custon
Entradas personalizadas podem se criadas no arquivo 40_custom ou num 
outro recém criado.
Somente arquivos executáveis geram saída para o grub.cfg durante a 
execução do update-grub.

Os arquivos default nesta pasta são :

- 00_header : suas configurações normalmente são importadas de 
informações do /etc/default/grub e os usuários não precisam mudar esse 
arquivo.

- 05_debian_theme : configura splash image, cor do texto, cor de realce 
e tema. Na ausência de splash image esse arquivo configura um tema 
monocromático para o menu inicial.
- 10_hurd : não usada.

- 10_linux : localiza kernels no root device para o sistema operacional 
em uso. Leva essa informação e estabelece os nomes apresentados no menu 
para estes kernels.

- 20_memtest86+ : procura por /boot/memtest86+.bin e o inclue como opção 
no menu do GRUB 2. Não há opção para remover essa entrada do menu.Pode 
ser inibido removendo o executável desse arquivo sudo chmod -x 
/etc/grub.d/20_memtest86+ e executando depois sudo update-grub.

- 30_os-prober : procura por Linux e outros sistemas 
operacionais.Resultados são colocados no grub.cfg baseando-se nos 
scripts desse arquivo. O arquivo é dividido em 4 seções representando 
ostipos de sistemas operacionais manipulados pelos scripts : Linux, 
Windows, OSX e Hurd. Variáveis nesse arquivo determinam o formato dos 
nomes exibidos no /boot/grub/grub.cfg e no menu do GRUB 2. Usuários 
familiarizados com scripts básico podem alterar essas variáveis e mudar 
o formato das entradas de menu exibidas. alternativamente o usuário pode 
inserir uma entrada no /etc/default/grub a qual desativa esse script.

- 40_custom : Para adicionar entradas de menu personalizado que serão 
inseridoas no grub.cfg depois de update-grub. Mais informações sobre 
esse arquivo na parte de configuração.



Configuração

Alterações na configuração são normalmente feitas em /etc/defaul/grub e 
nos arquivos da pasta /etc/grub.d.
O arquivo /boot/grub/grub.cfg não deve ser editado pelo usuário; 
mudanças nesse arquivo são feitas pelos scripts de configuração.
Algumas das alterações mais comuns como OS/kernel default, menu timeout 
podem ser feitas pelo StartUp-Manager.

Arquivo /etc/default/grub

É o principal arquivo de configuração para alterar as configurações padrão.
Após a instalação as seguintes linhas podem ser alteradas pelo usuário :

GRUB_DEFAULT
- Configura a entrada padrão do menu.
Entradas podem ser numéricas ou "saved" (última usada)

- GRUB_DEFAULT=0
Configura a entrada default pela posição. Como no GRUB a primeira 
entrada é zero, a segunda 1, etc,

- GRUB_DEFAULT=saved
Define a entrada de menu padrão com o que foi selecionado anteriormente 
(a última seleção).
Se o menu é exibido durante a inicialização, a última entrada 
selecionada será realçada. Se nenhuma ação for tomada, esta seleção será
iniciada no final do tempo limite ou se o menu está oculto.

- GRUB_DEFAULT="xxxx"
Uma entrada de menu exata, incluida entre aspas, também pode ser usada. 
Neste caso, a localização no menu não importa.
Exemplo: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"

- GRUB_TIMEOUT=
Configure o tempo.

- GRUB_HIDDEN_TIMEOUT=0
O menu ficará oculto.

# GRUB_HIDDEN_TIMEOUT=0
O menu não será oculto

- GRUB_HIDDEN_TIMEOUT_QUIET=true
true = nenhuma contagem regressiva é exibida. A tela ficará em branco.
false = Um contador será exibido numa tela em branco durante o tempo do 
GRUB_HIDDEN_TIMEOUT.

- #GRUB_GFXMODE=640x480
- Descomente essa linha para mudar a resolução. Ela fornece resoluções 
suportadas pela placa de vídeo do usuário (640x480, 800x600, 1280x1024, 
etc).
Aplica-se apenas a resolução do menu de boot.
Dica: Definindo a mesma resolução do sistema operacional o tempo de 
inicialização diminuirá ligeiramente.
- Embora não seja necessário, o usuário também pode especificar a cor 
BitDepth anexando-o à configuração da resolução.
Um exemplo seria 1280x1024x24 ou 640x480x32.
- O usuário também pode adicionar várias resoluções. Se o GRUB 2 não 
pode usar a primeira entrada, ela irá tentar o próximo ajuste.
As configurações são separadas por uma vírgula. Exemplo: 1280x1024x16, 
800x600x24, 640x480.
- Se utilizar uma splash image, certifique-se se a configuração da 
resolução e do tamanho da imagem são compatíveis.
- Se estiver usando uma entrada que produz uma mensagem "não encontrado" 
ao executar update-grub, tente adicionar ou alterar a cor BitDepth.
- Se esta linha está comentada (#) ou a resolução não está disponível o 
GRUB 2 usa a configuração padrão determinada pelo /etc/grub.d/00_header.


- GRUB_DISABLE_LINUX_RECOVERY=true
Adicione ou descomente essa linha se não desejar o “Recovery” mode no menu.
"Recovery mode" para apenas um kernel, fazer uma entrada especial em / 
etc/grub/40_custom.




Entradas personalizadas

GRUB 2 permite ao usuário criar seleções de menus personalizados que 
serão automaticamente adicionados ao menu principal quando o comando
Código:

sudo update-grub

é executado. Um arquivo 40_custom vazio está disponível em /etc/grub.d/ 
para uso ou para servir de exemplo para criar menus personalizados. Aqui 
estão algumas considerações para menus personalizados:

- O nome do arquivo determina a ordem das seleções no menu. Nomes 
numérico são executados primeiro, seguido por nomes alfabéticos.
- Entrada 10_linux aparecerá antes de 30_os prober, que será colocado 
antes de entradas 40_custom, que irá preceder my.custom.entries.
- O usuário que desejar que as suas entradas de menu personalizado 
apareçam em primeiro lugar no menu principal pode nomear a pasta para
06_xxx que suas listas estarão em primeiro lugar no menu.
- o arquivo deve ser feito executável :
Código:

sudo chmod +x /etc/grub.d/filename

.
- o conteúdo desse arquivo é adiconado ao grub.cfg sem alterações quando 
o comando sudo update-grub é executado.
- Ao contrário do grub.cfg, arquivos personalizados podem ser editadas a 
qualquer momento, não são só leitura, e
podem ser propriedade do usuário, se ele desejar.
- Os arquivos personalizados são estáticos. O conteúdo não será 
alterado, quando novos kernels são adicionados ou
removidos (a menos que os conteúdos sejam afetados pelo usuário 
acrescentado scripts).

Se o arquivo personalizado coloca as entradas no topo do grub.cfg, o 
usuário poderá confirmar no /etc/default/grub (DEFAULT= x) após executar 
update-grub. Certifique-se se ainda aponta para a entrada de menu 
desejada. Para contar, a primeira entrada do menu no arquivo 
/etc/default/grub é 0.


Criando menus personalizados

O usuário pode editar o arquivo default /etc/grub.d/40_custom ou criar 
um novo. A maneira mais fácil de criar o conteúdo de um menu 
personalizado é copiar uma entrada do /boot/grub/grub.cfg. Depois de 
copiado, o conteúdo do 40_custom pode ser adaptado a vontade do usuário.
• De acordo com o arquivo personalizado padrão da amostra 
(etc/grub.d/40_custom/) as duas primeiras linhas de um arquivo 
personalizado em /etc/grub.d deve ser:

/ bin / sh
exec tail -n +3 $0

- Podem ser copiadas entradas de menu existente no arquivo 
boot/grub/grub.cfg ou de um arquivo do GRUB legacy. Se for copiado do 
arquivo
menu.lst do GRUB legacy:
- Uma cópia de backup deste arquivo pode estar na pasta /boot/grub se o 
usuário atualizou do GRUB para GRUB 2.
- As seguintes entradas do menu do GRUB legacy devem ser mudadas :
- title é mudado para menuentry. A linha deve terminar com {
- root muda para set root=
- kernel passa a ser linux
- qulquer designação de partições (sda4, sdb6) deve ser mudada porque no 
GRUB legacy a primeira partição é 0 e no GRUB 2 é 1 (o
primeiro disco continua sendo 0 igual ao GRUB legacy).


Regras para construção de menuentry

- a primeira linha inicia com menuentry e finda com {
- o que está entre aspas é o que vai aparecer no menu do GRUB 2. Edite 
como desejar
- a última linha do menuentry deve ser }
- não deixe espaços em branco no fim das linhas
- a linha set root= deve apontar para a localização de inicialização do 
GRUB2 (sdXY)
- referência root da linha Linux deverá apontar para a partição do sistema.
- Dica : Se GRUB 2 não encontra o kernel referenciado, tente substituir 
a UUID pelo nome do dispositivo (exemplo: / dev/sda6).

Exemplo de menuentry :

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-15-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,2)
search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc
linux /boot/vmlinuz-2.6.31-15-generic 
root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro vga=789 quiet splash
initrd /boot/initrd.img-2.6.31-15-generic
}

Essa entrada do exemplo, copiada do grub.cfg e alterada pode ter este 
aspecto:

menuentry "Ubuntu 9.10" {
set root=(hd0,2)
search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc
linux /boot/vmlinuz-2.6.31-15-generic 
root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro quiet splash
initrd /boot/initrd.img-2.6.31-11-generic

}

Uma entrada de exemplo para uma versão de disco rígido do SystemRescueCD 
instalado conforme as instruções no site (em sda8).

menuentry "System Rescue CD" {
set root=(hd0,8)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz

}

Uma entrada de exemplo para Carregamento em série para um outro gestor 
de arranque GRUB.

menuentry "Grub 1 Bootloader" {
set root=(hd0,8)
chainloader +1

}


Splash Images

GRUB 2 Splash Images

Para configurar uma imagem de splash de inicialização primeiro 
selecionar a imagem para uso e escolher as cores do texto a ser exibido.
Instale o pacote padrão GRUB 2 splash images :
Código:

sudo apt-get install grub2-splashimages

.
Não confundir este com o pacote grub-splashimages, que não é compatível 
com o GRUB 2.
A localização padrão para essas imagens é /usr/share/images/grub.
Cada usuário pode criar e usar suas próprias splash images.


Configurando splash images

As splash images do GRUB 2 são controladas pelo arquivo 
/etc/grub.d/05_debian_theme
Edite esse arquivo como root :
Código:

sudo gedit /etc/grub.d/05_debian_theme

Encontre a linha abaixo :

for i in 
{/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; 
do


Há várias detalhes sobre esta entrada:

- por default o GRUB 2 procura por splash images em /boot/grub e 
/usr/share/images/desktop-base
- o pacote grub2splashimages não é extraído de uma das pastas acima, mas 
de /usr/share/images/grub
- o usuário deve:
- alterar a localização da pasta na linha acima para apontar para o 
endereço correto, ou
- mover a imagen para uma das pastas acima referenciadas.
- para adicionar a pasta grub coloque a entrada para ela e mude o nome 
do arquivo da imagem pelo que voce quer.

Na imagem do nosso exemplo a configuração ficou assim :

for i in 
{/boot/grub,/usr/share/images/desktop-base,/usr/share/images/grub}/Lake_mapourika_NZ.{png,tga}
 
; do


Depois de ter introduzido o caminho e o nome da imagem em 
05_debian_theme você executa
Código:

sudo update-grub

para adicionar a informação ao grub.cfg.

Configurando fonte e cores

Estas linhas estão contidas em /etc/grub.d/05_debian_theme.
A cor é definida pela linha abaixo. A primeira cor é a cor do texto, a 
segunda é a cor de fundo.

set color_normal=black/black

O código abaixo define a cor de entradas selecionadas. A primeira cor é 
a cor do texto em destaque, a segunda é a cor de fundo da linha 
selecionada. Se black é a segunda entrada, a linha de destaque será 
transparente e apenas o texto mudará de cor.


set color_highlight=magenta/black

O black é a cor de transparência GRUB 2 padrão . Altere apenas a cor do 
primeiro (ou seja, xxxxx /black), se utilizar uma imagem de splash.
Se o segundo valor nesta linha é alterada para uma cor diferente de 
black a imagem splash será escondida atrás de um fundo de cor sólida.
Para mais detalhes : GRUB 2 Splash Images.



-- 
Fabiano garcia Fonseca
Linux user #448759 - Ubuntu User #15701
www.linuxacessivel.org


-- 
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

Responder a