Configurando o GRUB - Sistema Dual Boot Linux e Windows
Autor: Prof. Luiz Angelo | Publicado: 2011-03-24T21:55:00-07:00

Olá, pessoal!

Conforme havia comentado em aula, há uma série de tutoriais, vídeos e dados referentes à configuração, pelo GRUB, da inicialização em dual boot (muitos em inglês, e bons artigos em português). Respeitando as publicações existentes, estou escrevendo uma para nossa realidade do ensino técnico, nos pormenores com conceitos e fundamentos que são importantes para o aprendizado de todos, na nossa disciplina de Gestão de Sistemas Operacionais III. Então, não vamos nos preocupar somente com a técnica do "fazer", mas vamos entender também no "porque fazer".

Todas as ações aqui descritas são realizadas com o usuário root (super-usuário ou administrador) do Linux Ubuntu 9.10 - Karmic Koala (lançamento em Outubro de 2009). Mesmo usuários com configuração equiparada ao root não conseguem realizar estas atividades. 


Bom, iremos manipular, basicamente, dois arquivos:
grub.cfg, que fica armazenado no path "/boot/grub" (sem aspas);
 
40_custom, que fica armazenado no path "/etc/grub.d" (sem aspas);

&nbsp;É importante salientarmos que o arquivo grub.cfg não é um arquivo para ser manipulado diretamente. Não é recomendável. Só faça isso se tiver plena certeza do que está fazendo.&nbsp;

Outra informação pertinente: antes de manipularmos os arquivos e gerarmos uma nova imagem para ser montada sobre o grub.cfg, é aconselhável fazermos um backup (cópia de segurança). A mesma pode ser armazenada na pasta "/home/professor-03/Documentos" (sem aspas) de um usuário cadastrado no linux (no caso, professor-03 é o usuário que utilizamos como exemplo na figura abaixo), a saber:
 
 
Para fins de padronização, adotemos o mesmo nome do arquivo (grub), porém alteremos a cópia de segurança com extensão 'bck' (em alusão à backup, sinônimo de cópia de segurança, em inglês).
 
O arquivo grub.cfg é um arquivo que é executado pela inicialização do programa de arranque GRUB. Ele é 'montado' a partir da compilação dos arquivos contidos no path "/etc/grub.d" (sem aspas). Temos neste caminho (path), os seguintes arquivos:
10_linux: que traz informações à respeito da inicialização do próprio Linux (no caso, as configurações de inicialização do modo normal do Linux, do modo de recuperação (recovery);
20_memtest86+: é o arquivo que possibilita realizar um teste/diagnóstico de funcionamento da parte física do computador, realizando diagnósticos de funcionamento da memória (só utilizado quando há problemas na inicialização do próprio linux);
30_os-prober: traz informações pertinentes a outros sistemas operacionais (que não linux) instalados no computador;
40_custom: é a opção de customizar/personalizar a inicialização do computador, fazendo com que o GRUB reconheça as informações ali postadas e inicialize o computador de acordo com as configurações ali definidas.
O que iremos fazer é manipular diretamente o 40_custom, com as opções que temos para inicialização em modo dual boot. Depois, compilaremos o arquivo grub.cfg, retirando as referências de inicialização comum do linux (arquivo 10_linux), do teste de memória (arquivo 20_memtest86+) e de outros sistemas operacionais (30_os-prober).

Mas de que forma?
Bom, primeiro, vamos "fazer uma cola" do conteúdo já disponibilizado no arquivo grub.cfg, que contém os dados que o GRUB utiliza para a inicialização do Linux sem nenhuma edição. Primeiro, abrimos o arquivo grub.cfg (com o editor gedit, mas há outros que também podem ser utilizados), conforme figura abaixo:


Após o arquivo aberto, procure a linha ###Begin /etc/grub.d/10_linux ###, conforme a figura abaixo, e selecione deste ponto, até o final do documento:
Após selecionar tudo, utilize a opção "copiar" do menu (ou botão direito do mouse ou teclas de atalho  ctrl+c).


Feita a "cola" na área de transferência, vamos manipular agora o arquivo 40_custom, que está no path "/etc/grub.d" (sem aspas), com o mesmo programa gedit.


Ao abrir o arquivo 40_custom, selecione na última linha do mesmo, e "cole" o conteúdo da área de transferência. O arquivo vai ficar conforme mostrado na figura abaixo:
&nbsp;
Observe que neste arquivo, que é um arquivo de montagem (depois ele será utilizado pelo compilador para gerar a nova imagem de inicialização no grub.cfg), as linhas ficam coloridas, de acordo com a funcionalidade do recurso/comando. As "#" significam comentários, as letras em cor preta significam comandos de E/S (entrada e saída de dados) e os comandos em marrom são comandos internos de manipulação de variáveis e lógica computacional (comparações, atribuições e ações diretas ao processador).


E agora, o que devemos fazer? Devemos customizar, isto é, configurar a personalização da inicialização do computador, somente com as opções que queremos que apareça: do sistema operacional Windows instalado, e do Linux.


Qual o procedimento? Ir excluindo as opções que não quero que sejam exibidas. É bom lembrar que fizemos um backup da opção inicial, se houver qualquer problema, só devemos restaurar a antiga inicialização.


Sendo assim, e seguindo a imagem da tela anterior, vamos selecionar a entrada de menu "Ubuntu, Linux 2.6.31-14-generic (recovery mode)", desde sua declaração "comando menuentry até sua "} - chave de fechamento":

Feita esta seleção, basta apagar a seleção (utilize a tecla "Delete" ou "backspace" do teclado).


O próximo passo será eliminar a referência a inicialização das opções de teste de memória.&nbsp;

Para tanto, basta selecionar desde o comentário ### BEGIN /etc/grub.d/20_memtest86+ ### até o comentário ### END /etc/grub.d/20_memtest86+ ###, e apagar toda a seleção.


Estamos quase no final. Apesar de já termos deixado praticamente as duas opções que queremos na inicialização, ainda falta uma importante alteração: deixar o Linux como segunda opção no dual boot. As pessoas estão acostumadas a utilizar o Windows, e não tem a obrigação (e muitas vezes, nem conhecimento ou paciência, por mais simples que possa ser) de ficar selecionando o Windows na inicialização do computador. Para que isto não aconteça, vamos "inverter" a ordem das definições de chamada dos sistemas operacionais no arquivo 40_custom. De que forma? Apenas selecionando a chamada do Windows e recortando o conteúdo para o início do documento. Ao final desta operação, o arquivo ficará assim:


Observe que após o comando "menuentry" a declaração dos sistemas operacionais encontra-se em tom rosa. Estas declarações são a forma à qual serão exibidas na tela do usuário, na inicialização do computador. Podemos tirar as referências que o Linux fez, e que não fazem diferença nenhuma para o usuário. Na verdade, estas informações, por muitas vezes, confundem os usuários, gerando uma série de perguntas sem fundamento e sem importância alguma.
Assim, vamos selecionar (com o mouse mesmo), os textos [on /dev/sda1] (ignore o colchetes, apenas para isolamento da informação a ser selecionada) e [2.6.31.14-generic]. Apague estes textos.
O nosso arquivo ficará assim:
Agora, basta salvar o arquivo, clicando na opção "Salvar".


Após o salvamento, é importante desativarmos a consulta do GRUB para os outros arquivos de montagem, que estão armazenados na pasta '/etc/grub.d', e deixarmos ativo o arquivo customizado, que acabamos de preparar.
Para tanto, vamos usar o comando chmod, com a opção "-x" (sem aspas), que desativará a consulta do GRUB, quando este for realizar a 'montagem' da nova imagem de inicialização.
Execute na janela do terminal respectiva, no caminho "/etc/grub.d" (sem aspas). A sintaxe do comando é demonstrada na figura abaixo:


Feito isso, os arquivos mencionados no comando chmod ficarão desativados, inclusive sendo mostrados de maneira diferenciada, não mais em tom "verde", mas em tom "preto", significando que não são mais arquivos ativos para consulta do compilador do GRUB.


Por último, devemos compilar e executar a atualização da imagem do GRUB, utilizando o comando update (execute na janela do terminal respectiva, onde o grub.cfg encontra-se armazenado), conforme a próxima figura:
Pronto, a configuração está terminada. Agora é só reiniciar o computador e utilizá-lo normalmente, sem importunar usuários do Windows, e podendo aproveitar todos os recursos da máquina, sem emulação, com o Linux rodando diretamente no hardware do computador.