GRUB 2 - Monte você mesmo o menu

Venho mostrar como é de grande valia, você mesmo ter o poder sobre o GRUB 2, podendo fazer a edição que quiser, sem deixar com linhas duplicadas e sem grande escrita. Tendo, assim, um menu limpo e elegante.

[ Hits: 26.321 ]

Por: Glauber GF em 26/02/2014 | Blog: http://www.vivaolinux.com.br/~mcnd2


Criando o menu com as informações obtidas



Dentro do arquivo 40_custom, vamos começar acrescentando o menu do Debian.

Copie e cole o código abaixo e logo tentarei, de uma maneira breve, explicar do que se trata cada linha:

## Entrada para Debian em /dev/sda6
menuentry "Debian 7 (Wheezy)" --class gnu-linux --class gnu --class os {
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos6)'
    search --no-floppy --fs-uuid --set=root 2e0726d9-1231-42de-bedc-ae2bdf8ebc8e
    linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=2e0726d9-1231-42de-bedc-ae2bdf8ebc8e ro quiet acpi_osi=linux
acpi_backlight=vendor splash
    initrd /boot/initrd.img-3.2.0-4-amd64
}

O mesmo procedimento faremos com o Sabayon, Mageia e Windows, mudando apenas o nome de entrada do menu como os devices, UUID, e setar o caminho do kernel de boot de cada distribuição.

Explicando cada linha:
  • ## Entrada para Debian em /dev/sda6 :: opcional - Para identificação mais eficaz.
  • menuentry "Debian 7 (Wheezy)" --class gnu-linux --class gnu --class os { :: Nome que aparecerá no menu do GRUB este estando entre as aspas "".
  • insmod part_msdos :: Tabela de partição do HDD - no meu caso, e acho que da maioria também, MS-DOS.
  • insmod ext2 :: Sistema de arquivo "file system" da partição - ext2 = ext3/ext4.
  • set root='(/dev/sda,msdos6)' :: Device/partição - onde se encontra o sistema instalado.
  • search --no-floppy --fs-uuid --set=root 2e0726d9-1231-42de-bedc-ae2bdf8ebc8e :: Parâmetro que identifica root com a UUID.
  • linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=2e0726d9-1231-42de-bedc-ae2bdf8ebc8e ro quiet acpi_osi=linux acpi_backlight=vendor splash :: Parâmetros que procuram a UUID para ser chamado o kernel do boot.
  • initrd /boot/initrd.img-3.2.0-4-amd64 :: Caminho para carregar o sistema de arquivos na memória do processo de inicialização.
  • } :: Sem espaço depois da chave - fechamento dos parâmetros do menu do grub.

Depois de acrescentado o menu das outras distribuições GNU/Linux (Sabayon e Mageia), da mesma forma que foi acrescentado o do Debian, com as informações obtidas anteriormente, agora, vamos acrescentar o menu do Windows 7.

Copie e cole o código abaixo:

## Entrada para Windows em /dev/sda2
menuentry "Windows 7 (Seven)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root
search --no-floppy --fs-uuid --set=root F43C452F3C44EDE4
chainloader +1

A diferença em relação ao código das distribuições GNU/Linux é quase nenhuma, apenas, retire as linhas linux e initrd e acrescente no final, a linha chainloader +1, que chama o carregador de boot do Windows, deixando a esse, a tarefa de iniciar o sistema.

Pronto!

Depois de ter feito na mão o menu, o arquivo 40_custom ficou conforme o abaixo:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

## Entrada para Debian em /dev/sda6

menuentry "Debian 7 (Wheezy)" --class gnu-linux --class gnu --class os {
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos6)'
    search --no-floppy --fs-uuid --set=root 2e0726d9-1231-42de-bedc-ae2bdf8ebc8e
    linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=2e0726d9-1231-42de-bedc-ae2bdf8ebc8e ro quiet acpi_osi=linux
acpi_backlight=vendor splash
    initrd /boot/initrd.img-3.2.0-4-amd64
}
## Entrada para Mageia em /dev/sda5
menuentry "Mageia 4 (Thornicroft)" --class gnu-linux --class gnu --class os {
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos5)'
    search --no-floppy --fs-uuid --set=root d38287e5-ceb0-44ec-a0bc-66bfdbbff76d
    linux /boot/vmlinuz-desktop BOOT_IMAGE=linux root=UUID=d38287e5-ceb0-44ec-a0bc-66bfdbbff76d splash quiet vga=789
    initrd (hd0,5)/boot/initrd-desktop.img
}
## Entrada para Sabayon em /dev/sda7
menuentry "Sabayon 8 (rolling release v14.xx)" gnu-linux --class gnu --class os {
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos7)'
    search --no-floppy --fs-uuid --set=root 799e1b8d-f8c5-479c-89ea-623c07f5321a
    linux /boot/kernel-genkernel-x86_64-3.13.0-sabayon root=UUID=799e1b8d-f8c5-479c-89ea-623c07f5321a ro quiet
    initrd (hd0,7)/boot/initramfs-genkernel-x86_64-3.13.0-sabayon
}
## Entrada para Windows em /dev/sda2
menuentry "Windows 7 (Seven)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(/dev/sda,msdos2)'
    search --no-floppy --fs-uuid --set=root F43C452F3C44EDE4
    chainloader +1
}


Página anterior     Próxima página

Páginas do artigo
   1. Obtendo informações
   2. Criando o menu com as informações obtidas
   3. Finalizando / Observação
Outros artigos deste autor

Operadoras de Banda Larga com Medição de Velocidade

Erro no KDM (temas) depois de update no Sabayon

Modem USB 3G largado na gaveta! Nãããõooo...

Atualizando Mageia 5 para versão 6

Internet com a velocidade aumentada (Regulamento ANATEL)

Leitura recomendada

Nagios - O seu gerenciador de redes

Projeto OpenFarm

CruxPorts4Slack - O ports para Slackware

DeVeDe - Produzindo discos de vídeo

Stoq - Gestão Comercial - Instalação e configuração

  
Comentários
[1] Comentário enviado por removido em 26/02/2014 - 09:24h

Boa dica!
Será que teria como criar um script que automatize esse procedimento?

[2] Comentário enviado por removido em 26/02/2014 - 09:56h

Bom dia..

A VOL agradece a contribuição. apenas deixando uma contribuição... na linha da página número 2 onde diz:

set root='(/dev/sda,msdos6)' :: Device/partição - onde se encontra o sistema instalado.

Na verdade essa opção da configuração do grub.cfg refere-se a partição onde encontra-se os arquivos que iniciam (kernel e initrd) o sistema.

[3] Comentário enviado por mcnd2 em 26/02/2014 - 18:52h

@costapha, só quem entende de scripts poderá opinar sobre, mais uma coisa é certa, se tem como, deve dar um trabalhinho, rS!

@eabreu, quase a mesma referência, e como tentei ser breve saiu essas palavras. No caso quando disse que "onde se encontra o sistema instalado", foi a mesma intenção de chamar os arquivos que na partição estão, sendo eles lidos para subir o sistema.

Obrigado pelos feedback.

[4] Comentário enviado por removido em 26/02/2014 - 20:09h

Glauber, no arquivo "40_custom" completo, vi que colocou as entradas dos sistemas fora da ordem das partições.

Exemplo: a ordem é "sda6", "sda5", "sda7" e "sda2".

Pergunto se essa ordenação altera o tempo de boot ou é indiferente.

[5] Comentário enviado por mcnd2 em 26/02/2014 - 20:31h

Izaias, na minha concepção é indiferente a ordem.

Deixei desse jeito para ficar os sistemas em ordem alfabética: Debian > Mageia > Sabayon > Windows. Detalhe, rS!...

Nunca percebi demora no boot ao escolher o sistema, sobe o padrão de cada SO instalado sem demora.

Só estou com um probleminha no Mageia no boot mais nada haver com o Grub 2. O problema é com IPv6 ou algo relacionado com a ethernet.

...

[6] Comentário enviado por removido em 26/02/2014 - 20:54h

Ok, explicado.


Hoje em dia temos aplicativos (como o GRUB-Customizer) para gerenciar o GRUB, mas aprender sobre o arquivo-raiz da função, é outra coisa.

Ótima contribuição!

[7] Comentário enviado por mcnd2 em 26/02/2014 - 21:57h

Valeu Izaias...

[8] Comentário enviado por maran em 28/02/2014 - 21:03h

Belo artigo, é sempre bom saber fazer na raiz, afinal um dia você pode estar trabalhando e não ter estes recursos a seu favor.

Parabéns.
Abraço

[9] Comentário enviado por mcnd2 em 28/02/2014 - 21:19h

Fala @maran, tranquilidade? Tá meio sumido brother!

Com certeza é bom saber fazer na mão grande, pois como é de grande importância o gerenciamento do boot loader assim podendo iniciar o sistema desejado arrumando do seu jeito e não dependendo do sistema para isso.

Thank you.

[10] Comentário enviado por maran em 28/02/2014 - 21:50h

@mcnd2

É igual aquela camiseta brother mv social.life /dev/null

Tava complicado muito trampo, mais estou voltando pra comunidade,
espero que em breve possa já estar contribuindo com algumas coisas novas que aprendi desde o principio : )
Isso ai já faz algum tempo que venho acompanhando os artigos da galera antiga e os seus o nível técnico vem aumentado frequentemente.
Parabéns brother !

Abraço!

[11] Comentário enviado por ruantux em 01/03/2014 - 22:04h

Excelente artigo amigo, parabéns acho que da pra adicionar mais coisas e deixar o script mais automatizado mais mesmo assim excelente artigo abraços !

[12] Comentário enviado por mcnd2 em 02/03/2014 - 00:11h

Valeu @ruantux pelo comentário.

Abraço.

[13] Comentário enviado por pguarnierr em 27/04/2016 - 09:18h

Olá!
Gostei do tutorial!
Com base nele eu tentei resolver meu problema. Tenho dois sistemas instaldos, Ubuntu ( em sda1 )e Windows 7 ( em sda2 ), e ao formatar o Ubuntu por causa de um probelma que deu, não entrava mais o Windows. Apesar de ter só esses dois sistemas, tentei adaptar seu tutorial para o meu caso. Mas não sei se tá certo. Eu elaborei as seguintes entradas no arquivo 40_custom:

## Entrada para Ubuntu
menuentry "Ubuntu 14" --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos1)'
search --no-floppy --fs-uuid --set=root 59e2676f-ccc1-4a1a-9469-1be120bdef8b
linux /boot/vmlinuz-3.16.0-30-generic root=UUID=59e2676f-ccc1-4a1a-9469-1be120bdef8b ro quiet acpi_osi=linux
acpi_backlight=vendor splash
initrd /boot/initrd.img-3.16.0-30-generic
}

## Entrada para Windows em /dev/sda2
menuentry "Windows 7" --class windows --class os {
insmod part_msdos
insmod ntfs
set root
search --no-floppy --fs-uuid --set=root 6543D5821B566ECE
chainloader +1
}

Note que eu modifiquei as UUID das partições e para o meu caso.
O que me deixou em dúvida são os arquivos vmlinux e o initdr.img, pois no meu terminal listou vários arquivos desses, eu não sabia o qual eu ia escolher, não tinha nenhum igual aos descritos pelo seu tutorial. E também fiquei em dúvida com o final "ro quiet acpi_osi=linux", copiei como está ali, mas em todo sistema que eu vejo, essa expressão muda de pc para pc.

Agora eu vi que ficou faltando colocar em "set root" (/dev/sda,msdos2) da entrada para Windows, eu vi agora que tinha que colocar, na parte onde era para copiar os códigos não havia.

Vamos ao resultado:
Apareceu o GRUB na inicialização com os dois sitemas descritos, o que já é bom. Ao selecionar o Windows, não entra, cai em um aviso de erro, mas numa tela roxa, não preta. O Ubuntu entra normalmente. Depois verei se é por causa do complemento que ficou faltando em "set root".


[14] Comentário enviado por pguarnierr em 28/04/2016 - 09:21h

Deu certo agora! Eu não tinha percebido, mas sem querer eu copiei a string UUID da partição spa3, ao invés da partição spa2. Eu corrigi ali e agora ao selecionar a entrada Windows também entra!
Incrível esse tutorial!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts