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.
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
}
[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.
[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.
[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 !
[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!