quinta-feira, 21 de abril de 2011

Remexendo coisa séria... MENU DO GRUB 2

Há pouco tempo andei postando aqui comentários sobre o Grub Customizer, que é usado para justamente editar o Menu do Grub 2, porém, o ideal é fazer a coisa sem aplicações gráficas que acabam por nos deixarem mais preguiçosos e emburrecidos (vide usuários do Windows) devido à sua facilidade de uso e assim partir para ver como o sistema funciona "de verdade".

Para tanto, busquei a informação em sites e manuais e encontrei uma descrição quase completa de como realmente customizar o menu do Grub 2, que fique bem claro que boa parte do texto não é de minha autoria, mas sim, tem algumas partes importantes que foram por mim adicionadas, depois de uma experimentação devidamente registrada e controlada.

Então, mãos à obra:

A partir da versão do Ubuntu Linux Karmic Koala, uma das novidades o Grub 2.

Essa versão do Grub adicionou uma série de scripts para reconhecimento mais rápido e amplo de partições e sistemas operacionais, entretanto, sua customização é bem diferente daquilo que ocorria na antiga versão.

Nas versões antigas do Grub, a remoção do memtest (alguém já usou??) e do recovery mode podia ser feita através da edição do arquivo "menu.lst", bastando simplesmente apagar ou comentar as linhas referentes às entradas desnecessárias.

Todavia, esse arquivo não está presente no Grub 2, e, em seu lugar, encontramos o grub.cfg, o arquivo de configuração do menu.

O problema inicial encontra-se no fato do grub.cfg ser gerado automaticamente e ter permissão de "somente leitura", o que impede a sua edição direta (mesmo como root). A solução nesse caso, seria a mudança nas permissões para que o arquivo pudesse ser editado e salvo, assim como era feito com o grub antigo e mesmo assim seria imprudente fazê-lo visto que o arquivo seria sobrescrito a partir do primeiro update, mesmo assim pode ser feito, levando-se em conta esta característica.

Antes de falar sobre a edição direta desse arquivo, vamos falar sobre outro meio de realizar a tarefa proposta no título. O que, entretanto, é o método correto.

Vale lembrar que as principais alterações do grub2 devem ser feitas no arquivo /etc/default/grub


Removendo o memtest:

A inclusão do memtest é feita a partir do script /etc/grub.d/20_memtest86+. Para evitar que o memtest entre no menu do grub em todas as atualizações do kernel, basta mudar as permissões do referido script com o seguinte comando:

    $ sudo chmod -x /etc/grub.d/20_memtest86+

O script continuará lá, mas não será mais incluso no menu do grub.
Removendo o Recovery mode:


Também não costumo usar o recovery mode, por isso, sempre o removo do meu menu.

No caso do grub 2, devemos editar o arquivo /etc/default/grub:

    $ sudo gedit /etc/default/grub

E descomentar a seguinte linha (basta remover o "#" da frente):

    GRUB_DISABLE_LINUX_RECOVERY=true

Feito isso, basta salvar o arquivo.

Gerando o novo menu:

Com todas as alterações feitas, basta gerar o novo grub.cfg usando o seguinte comando no terminal:

    $ sudo update-grub

Isso rodará o script que, por sua vez, irá gerar o novo grub.cfg sem o memtest ou o recovery mode.
Editando ao modo antigo (só use se souber o que está fazendo):


Editando o grub.cfg

Se você quer ir direto ao ponto, da mesma forma que fazia no antigo grub, excluindo ou comentando o que não lhe servia, basta alterar a permissão do arquivo grub.cfg de "apenas leitura" para "leitura e escrita" com o comando:

    $ sudo chmod +w /boot/grub/grub.cfg

Com isso o arquivo /boot/grub/grub.cfg poderá ser editado e as entradas desnecessárias poderão ser apagadas ou comentadas da mesma forma que era feito no antigo grub.

Mas lembre-se: só use esse método se souber o que pode ou não ser apagado/comentado, caso contrário o sistema pode não iniciar corretamente.


Excluindo versões antigas do Kernel  ((( CUIDADO! )))

O grub2 monta o menu a partir das versões de Kernel que se encontram no diretório /boot, assim, ele vai listar no menu todas as entradas que encontrar, com o tempo o menu vai ficando cada vez mais extenso, para resolver isso é bem simples, mas ao mesmo tempo é muito perigoso, visto que se o arquivo errado for excluído você fica SEM O KERNEL(!!!) e não irá iniciar.

Sempre usando o "sudo" siga os passos abaixo:
  1. Vá até o diretório /boot e crie um diretório do tipo /antigos para armazenar os arquivos dos kernels antigos.

  2. Veja que existem grupos de arquivos mais ou menos assim (usando apenas o ls geramos a lista):
        abi-2.6.32-24-generic         System.map-2.6.32-24-generic
        abi-2.6.32-25-generic         System.map-2.6.32-25-generic
        abi-2.6.32-26-generic         System.map-2.6.32-26-generic
        abi-2.6.32-27-generic         System.map-2.6.32-27-generic
        abi-2.6.32-28-generic         System.map-2.6.32-28-generic
        abi-2.6.32-29-generic         System.map-2.6.32-29-generic
        abi-2.6.32-30-generic         System.map-2.6.32-30-generic
        abi-2.6.32-31-generic         System.map-2.6.32-31-generic
        config-2.6.32-24-generic      vmcoreinfo-2.6.32-24-generic
        config-2.6.32-25-generic      vmcoreinfo-2.6.32-25-generic
        config-2.6.32-26-generic      vmcoreinfo-2.6.32-26-generic
        config-2.6.32-27-generic      vmcoreinfo-2.6.32-27-generic
        config-2.6.32-28-generic      vmcoreinfo-2.6.32-28-generic
        config-2.6.32-29-generic      vmcoreinfo-2.6.32-29-generic
        config-2.6.32-30-generic      vmcoreinfo-2.6.32-30-generic
        config-2.6.32-31-generic      vmcoreinfo-2.6.32-31-generic
        initrd.img-2.6.32-24-generic  vmlinuz-2.6.32-24-generic
        initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
        initrd.img-2.6.32-26-generic  vmlinuz-2.6.32-26-generic
        initrd.img-2.6.32-27-generic  vmlinuz-2.6.32-27-generic
        initrd.img-2.6.32-28-generic  vmlinuz-2.6.32-28-generic
        initrd.img-2.6.32-29-generic  vmlinuz-2.6.32-29-generic
        initrd.img-2.6.32-30-generic  vmlinuz-2.6.32-30-generic
        initrd.img-2.6.32-31-generic  vmlinuz-2.6.32-31-generic
  3. Mova todos os arquivos para a pasta /antigos, criada deixando apenas os da última versão que gerará uma listagem parecida com esta:

        abi-2.6.32-31-generic         System.map-2.6.32-31-generic
        config-2.6.32-31-generic      vmcoreinfo-2.6.32-31-generic
        initrd.img-2.6.32-31-generic  vmlinuz-2.6.32-31-generic

  4. Faça o update do grub:

        $ sudo update-grub

  5. Pronto, ele agora vai gerar um menu limpo e com apenas a última versão do Kernel.



Mais informações sobre a adição do grub 2 podem ser encontradas no seguinte site (em inglês):

https://wiki.ubuntu.com/Grub2

Nenhum comentário:

Postar um comentário