Grub2
segunda-feira, 9 de novembro de 2009
Tuxmind
O Ubuntu 9.10 tem uma novidade. É o grub2.
Se você quiser alterar o menu do Grub2, o procedimento é diferente do Grub Legacy. O Grub2 já não tem o menu.lst.
Porque razão mudaram o Grub?
A Principal razão para isso, é a necessidade de adicionar novas funcionalidades.
Só que na opinião dos devenlopers, o Grub chegou a uma fase insustentável. Adicionar novas funcionalidades no Grub, é uma tarefa difícil de realizar por causa do código confuso, e por outras impossibilidades técnicas. Ou seja, para adicionar novos recursos no Grub, seria mais fácil escrever o código do zero.
Então quais as vantagens do Grub2?
Uma das principais vantagens do grub2 é que o conteúdo do menu, é automaticamente actualizado quando o kernel recebe updates.
Por exemplo:
No Ubuntu quando havia actualizações no kernel, após a "instalação" do novo kernel, aparece uma janela com algumas opções:
Usar o novo menu.lst?
Manter o menu menu.lst?
Ver diferenças entre os dois?
etc...
Se escolhermos a primeira opção ele adiciona um novo item no menu com o novo kernel, mas se você tiver outra distribuição Linux instalada , ele não consegue "ver", e não adiciona no novo menu.lst.
Se escolhermos a segunda opção ele mantém o menu.lst mas quando reiniciarmos a maquina ele vai continuar a dar boot no kernel antigo. A solução é editar manualmente o menu.lst.
Com o Grub2 esse problema fica resolvido. Porque o Grub irá adicionar ao menu a última versão do kernel que está disponível no seu sistema.
Mesmo que você escolha "manter a versão actualmente instalada" o update-grub vai listar o novo Kernel.
O /boot/grub/menu.lst é subistituido pelo /boot/grub/grub.cfg mas este não pode ser editado.
Então como editar o Grub2?
As alterações serão feitas no /etc/default/grub. Basicamente o que ele contém é um pouco parecido com o que se encontrava disponível na parte superior do arquivo /boot/grub/menu.lst. Sempre que o root editar o /etc/default/grub, é necessário executar o comando "update-grub" para que a nova configuração seja escrita no grub.cfg.
Estas são algumas opções que estão dentro do /etc/default/grub
Define qual a entrada "default" (por omisão). Tal como acontecia no "antigo" Grub, 0 (zero) é o primeiro item do menu, 1 será o segundo, etc..
Esta opção serve para "guardar" a nossa última escolha no menu do Grub. Assim no proximo boot a ultima opção seleccionada passa a ser a "default" e assim sucessivamente.
Já existia no Grub Legacy. A sua função se mantem. São os segundos em que o grub "espera" até carregar automaticamente entrada "default"
Se usar o valor -1 o Grub não da boot até que seja escolhida uma opção.
Para que serve a pasta /etc/grub.d/?
Os arquivos desta pasta serão lidos durante execução do comando "update-grub". Os scripts que estão nesta pasta são os responsáveis por escrever no arquivo /boot/grub/grub.cfg
Os ficheiros são executados por ordem crescente. Primeiro 00_ depois 05_ 10_ 40_ etc...
A ordem em que os scrips são executados vai definir a localização de cada item no menu.
Estes são os script que estão em /etc/grub.d/:
00_header
Este script é responsável por ler o que está escrito no /etc/default/grub.
05_debian_theme
A função deste scrip é configurar opções relacionadas com o aspecto do Grub (Imagem de fundo, cor do texto e temas)
10_hurd
Localiza kernels hurd.
10_linux
Localiza kernels Linux com base no comando "lsb_release -i -s" que retoma o nome da distribuição.
20_memtest86+
Se o arquivo /boot/memtest86+.bin existir, é adicionado como item do menu.
30_os-prober
Procura por outros OS's para adicionar no menu.
40_custom
É aqui que você deve adicionar novos itens no menu do Grub2. Não se esqueça de usar o comando update-grub após a alterações.
Vamos a um exemplo:
No Grub (antigo) eu adicionei uma distribuição com o nome de "Caixa Mágica"
title linux Caixa Magica 12
kernel (hd1,4)/boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd (hd1,4)/boot/initrd.img
Veja como fica no Grub2. Abrimos o /etc/Grub.d/40_custom e adicionamos no final do arquivo:
menuentry "Caixa Mágica 12" {
set root=(hd1,5)
linux /boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd /boot/initrd.img
}
Repare que o Grub2 reconhece as partições de forma diferente. O hd1,4 passou a ser hd1,5.
Se for um hd0,2 passa a ser hd0,3 etc...
Com o grub2 é possível dar boot de uma imagem iso que esteja guardada no disco. Você pode usar o loopback no Grub2 para "montar" a imagem iso :)
Veja um exemplo para dar boot numa imagem ISO:
Neste exemplo a imagem ISO do Ubuntu está na raiz ( / ) da partição hd1,7
E pronto! Feche o arquivo e para actualizar o Grub2 execute o comando update-grub.
No próximo boot as novas opções estarão disponíveis no Menu do Grub2.
Isto é apenas uma explicação básica, do Grub2.
Se quiser estudar mais a fundo o Grub2 recomendo a leitura das seguintes páginas:
https://help.ubuntu.com/community/Grub2
https://wiki.ubuntu.com/Grub2
Veja aqui uma lista de comandos do Grub Legacy, e do Grub2, e as suas diferenças:
http://grub.enbug.org/CommandList
Se você encontrou algum erro no texto, é só comentar para melhorar o texto :)
Se você quiser alterar o menu do Grub2, o procedimento é diferente do Grub Legacy. O Grub2 já não tem o menu.lst.
Porque razão mudaram o Grub?
A Principal razão para isso, é a necessidade de adicionar novas funcionalidades.
Só que na opinião dos devenlopers, o Grub chegou a uma fase insustentável. Adicionar novas funcionalidades no Grub, é uma tarefa difícil de realizar por causa do código confuso, e por outras impossibilidades técnicas. Ou seja, para adicionar novos recursos no Grub, seria mais fácil escrever o código do zero.
Então quais as vantagens do Grub2?
Uma das principais vantagens do grub2 é que o conteúdo do menu, é automaticamente actualizado quando o kernel recebe updates.
Por exemplo:
No Ubuntu quando havia actualizações no kernel, após a "instalação" do novo kernel, aparece uma janela com algumas opções:
Usar o novo menu.lst?
Manter o menu menu.lst?
Ver diferenças entre os dois?
etc...
Se escolhermos a primeira opção ele adiciona um novo item no menu com o novo kernel, mas se você tiver outra distribuição Linux instalada , ele não consegue "ver", e não adiciona no novo menu.lst.
Se escolhermos a segunda opção ele mantém o menu.lst mas quando reiniciarmos a maquina ele vai continuar a dar boot no kernel antigo. A solução é editar manualmente o menu.lst.
Com o Grub2 esse problema fica resolvido. Porque o Grub irá adicionar ao menu a última versão do kernel que está disponível no seu sistema.
Mesmo que você escolha "manter a versão actualmente instalada" o update-grub vai listar o novo Kernel.
O /boot/grub/menu.lst é subistituido pelo /boot/grub/grub.cfg mas este não pode ser editado.
Então como editar o Grub2?
As alterações serão feitas no /etc/default/grub. Basicamente o que ele contém é um pouco parecido com o que se encontrava disponível na parte superior do arquivo /boot/grub/menu.lst. Sempre que o root editar o /etc/default/grub, é necessário executar o comando "update-grub" para que a nova configuração seja escrita no grub.cfg.
Estas são algumas opções que estão dentro do /etc/default/grub
GRUB_DEFAULT=0
Define qual a entrada "default" (por omisão). Tal como acontecia no "antigo" Grub, 0 (zero) é o primeiro item do menu, 1 será o segundo, etc..
GRUB_DEFAULT=saved
Esta opção serve para "guardar" a nossa última escolha no menu do Grub. Assim no proximo boot a ultima opção seleccionada passa a ser a "default" e assim sucessivamente.
GRUB_TIMEOUT=5
Já existia no Grub Legacy. A sua função se mantem. São os segundos em que o grub "espera" até carregar automaticamente entrada "default"
Se usar o valor -1 o Grub não da boot até que seja escolhida uma opção.
Para que serve a pasta /etc/grub.d/?
Os arquivos desta pasta serão lidos durante execução do comando "update-grub". Os scripts que estão nesta pasta são os responsáveis por escrever no arquivo /boot/grub/grub.cfg
Os ficheiros são executados por ordem crescente. Primeiro 00_ depois 05_ 10_ 40_ etc...
A ordem em que os scrips são executados vai definir a localização de cada item no menu.
Estes são os script que estão em /etc/grub.d/:
00_header
Este script é responsável por ler o que está escrito no /etc/default/grub.
05_debian_theme
A função deste scrip é configurar opções relacionadas com o aspecto do Grub (Imagem de fundo, cor do texto e temas)
10_hurd
Localiza kernels hurd.
10_linux
Localiza kernels Linux com base no comando "lsb_release -i -s" que retoma o nome da distribuição.
20_memtest86+
Se o arquivo /boot/memtest86+.bin existir, é adicionado como item do menu.
30_os-prober
Procura por outros OS's para adicionar no menu.
40_custom
É aqui que você deve adicionar novos itens no menu do Grub2. Não se esqueça de usar o comando update-grub após a alterações.
Vamos a um exemplo:
No Grub (antigo) eu adicionei uma distribuição com o nome de "Caixa Mágica"
title linux Caixa Magica 12
kernel (hd1,4)/boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd (hd1,4)/boot/initrd.img
Veja como fica no Grub2. Abrimos o /etc/Grub.d/40_custom e adicionamos no final do arquivo:
menuentry "Caixa Mágica 12" {
set root=(hd1,5)
linux /boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd /boot/initrd.img
}
Repare que o Grub2 reconhece as partições de forma diferente. O hd1,4 passou a ser hd1,5.
Se for um hd0,2 passa a ser hd0,3 etc...
Com o grub2 é possível dar boot de uma imagem iso que esteja guardada no disco. Você pode usar o loopback no Grub2 para "montar" a imagem iso :)
Veja um exemplo para dar boot numa imagem ISO:
menuentry "Ubuntu Live - ubuntu.iso" {
set root=(hd1,7)
loopback loop /ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso --
initrd (loop)/casper/initrd.lz
}
set root=(hd1,7)
loopback loop /ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso --
initrd (loop)/casper/initrd.lz
}
Neste exemplo a imagem ISO do Ubuntu está na raiz ( / ) da partição hd1,7
E pronto! Feche o arquivo e para actualizar o Grub2 execute o comando update-grub.
No próximo boot as novas opções estarão disponíveis no Menu do Grub2.
Isto é apenas uma explicação básica, do Grub2.
Se quiser estudar mais a fundo o Grub2 recomendo a leitura das seguintes páginas:
https://help.ubuntu.com/community/Grub2
https://wiki.ubuntu.com/Grub2
Veja aqui uma lista de comandos do Grub Legacy, e do Grub2, e as suas diferenças:
http://grub.enbug.org/CommandList
Se você encontrou algum erro no texto, é só comentar para melhorar o texto :)
Nenhum comentário:
Postar um comentário