Fonte: http://ubuntuforum-br.org/index.php?topic=58947.0
GRUB 2 - Um help na apresentação e configuração « em: 12 de Novembro de 2009, 01:23 » Esse tópico é uma tradução livre e resumida de : Documentação da Comunidade Ubuntu, GRUB 2. Estive tentado a fazer isso com o GRUB antigo e agora aproveitei a oportunidade do lançamento do GRUB 2. São abordados só detalhes da estrutura e da configuração. Quem desejar mais é só ir na Fonte. A intenção é que seja um guia para os novos usuários do GRUB 2. Apresentação O GRUB 2 é agora o gerenciador de boot do Ubuntu 9.10 (Karmic Koala) e muitos outros sistema operacionais. Na inicialização do computador o GRUB 2 apresenta o menu e espera a atuação do usuário dentro do tempo fixado ou transfere automaticamente o controle para o sistema operacional. GRUB 2 é um software Open Source. Ele é descendente do GRUB (GRand Unified Bootloader). Foi completamente reescrito para dar ao usuário flexibilidade e performance significativamente aumentadas. Melhorias As melhorias em relação ao GRUB incluem : - apoio de scripts - módulo de carregamento dinâmico - modo de recuperação - menus personalizados - temas - suporte ao menu gráfico - imagens iso de Live CD de boot diretamente do disco rígido - nova estrutura de arquivos de configuração - sem suporte a plataforma x-86 (tal como PowerPc) - suporte universal a UUIDs (não apenas o Ubuntu) GRUB vs GRUB 2 O menu do GRUB 2 parecerá familiar aos usuários do Grub mas há muitas diferenças internamente. - numa instalação limpa do Ubuntu 9.10 sem nenhum outro sistema operacional instalado o Grub 2 inicializará diretamente na tela de login ou Desktop. - pressione a tecla SHIFT para mostrar o menu durante o boot (no GRUB legacy formalmente ESC) - /boot/grub/menu.lst do GRUB legacy foi substituido por /boot/grub/grub.cfg no GRUB 2 - não há "/find boot/grub/stage1" no prompt do grub. Stage 1.5 foi eliminado - o principal arquivo de menu /boot/grub/grub.cfg não é para ser editado mesmo pelo "root" - grub.cfg é sobrescrito sempre que houver uma atualização, um kernel for adicionado/removido ou o usuário executar update-grug - o usuário pode criar um arquivo personalizado em /etc/grub.d/40_custom com suas próprias entradas. Esse arquivo não será sobrescrito - o arquivo de configuração principal para alterar as configraçoes do menu é o /etc/default/grub - existem vários arquivos para configurar o menu - /etc/default/grub mencionado acima e todos os arquivos da pasta /etc/grub.d/ - mudou a numeração das partições. a primeira partição agora é 1 em vez de 0. O primeiro dispositivo no entanto continua 0 (não mudou) - buscas automáticas para outros sistema operacionais como windows sempre que update-grub é executado - nenhuma mudança na configuração dos arquivos acontecerá até que o comando Código: sudo update-grub seja executado Instalação Voce pode checar a versão instalada no seu sistema pelo Synaptic ou pelo Terminal digitando : Código: grub-install -v O GRUB 2 vem instalado por padrão no Ubuntu 9.10 (Karmic Koala). O pacote do GRUB 2 é o grub-pc. O pacote grub-common também será instalado. grub2 é um pacote simulado de transição, pode ser seguramente removido e é mostrado no Synaptic como não instalado. Upgrade para GRUB 2 A atualização para GRUB 2 a partir do GRUB comum é relativamente fácil. Os desenvolvedores decidiram não usar uma atualização automática para o GRUB 2 como padrão em instalações de atualização. Quem fizer upgrade para o Ubuntu 9.10 pode continuar usando o GRUB legacy se desejar, Para fazer a atualização para GRUB 2 : Upgrade para GRUB 2 Estrutura de arquivos GRUB 2 incorpora um diretório totalmente revisado e uma hierarquia de arquivos. Para saber onde o GRUB 2 está instalado digite no terminal Código: sudo grub-probe -t device /boot/grub para a partição e Código: sudo grub-probe -t fs_uuid /boot/grub para a UUID. Hierarquia de arquivos e diretórios /boot/grub/grub.cfg É o que mais se assemelha ao /boot/grub/menu.lst do GRUB mas diferentemente desse o grub.cfg não se destina a ser editado. Cada seção é claramente delimitada com "(### BEGIN)" e a referência do arquivo na pasta /etc/grub.d a partir da qual a informação foi gerada. grub.cfg é atualizado executando o comando Código: sudo update-grub e é automaticamente modificado quando há uma atualização ou instalação/remoção de kernel. Por padrão, e sempre que o comando update-grub é executado, este arquivo é feito "somente leitura". Isto porque a intenção é que o arquivo não seja editado manualmente. O usuário também verá uma infinidade de arquivos *. mod na pasta /boot/grub . Esses arquivos são da natureza modular do GRUB 2 e são carregados necessariamente pelo GRUB 2. /etc/default/grub Esse arquivo pode ser editado e configurado. Detalhes da configuração estão mais adiante em Configurando GRUB 2. /etc/grub.d/ (diretório) Os arquivos nessa pasta são lidos durante a execução do comando Código: sudo update-grub e suas instruções são incorporadas ao /boot/grub/grub.cfg. A colocação dos ítens de menu no grub.cfg é determinada pela ordem em que os arquivos são executados nessa pasta. Arquivos com numeral no início são executados primeiro começando pelo menor. 10_linux é executado antes de 20_mentest que é executado antes de 40_custon Entradas personalizadas podem se criadas no arquivo 40_custom ou num outro recém criado. Somente arquivos executáveis geram saída para o grub.cfg durante a execução do update-grub. Os arquivos default nesta pasta são : - 00_header : suas configurações normalmente são importadas de informações do /etc/default/grub e os usuários não precisam mudar esse arquivo. - 05_debian_theme : configura splash image, cor do texto, cor de realce e tema. Na ausência de splash image esse arquivo configura um tema monocromático para o menu inicial. - 10_hurd : não usada. - 10_linux : localiza kernels no root device para o sistema operacional em uso. Leva essa informação e estabelece os nomes apresentados no menu para estes kernels. - 20_memtest86+ : procura por /boot/memtest86+.bin e o inclue como opção no menu do GRUB 2. Não há opção para remover essa entrada do menu.Pode ser inibido removendo o executável desse arquivo sudo chmod -x /etc/grub.d/20_memtest86+ e executando depois sudo update-grub. - 30_os-prober : procura por Linux e outros sistemas operacionais.Resultados são colocados no grub.cfg baseando-se nos scripts desse arquivo. O arquivo é dividido em 4 seções representando ostipos de sistemas operacionais manipulados pelos scripts : Linux, Windows, OSX e Hurd. Variáveis nesse arquivo determinam o formato dos nomes exibidos no /boot/grub/grub.cfg e no menu do GRUB 2. Usuários familiarizados com scripts básico podem alterar essas variáveis e mudar o formato das entradas de menu exibidas. alternativamente o usuário pode inserir uma entrada no /etc/default/grub a qual desativa esse script. - 40_custom : Para adicionar entradas de menu personalizado que serão inseridoas no grub.cfg depois de update-grub. Mais informações sobre esse arquivo na parte de configuração. Configuração Alterações na configuração são normalmente feitas em /etc/defaul/grub e nos arquivos da pasta /etc/grub.d. O arquivo /boot/grub/grub.cfg não deve ser editado pelo usuário; mudanças nesse arquivo são feitas pelos scripts de configuração. Algumas das alterações mais comuns como OS/kernel default, menu timeout podem ser feitas pelo StartUp-Manager. Arquivo /etc/default/grub É o principal arquivo de configuração para alterar as configurações padrão. Após a instalação as seguintes linhas podem ser alteradas pelo usuário : GRUB_DEFAULT - Configura a entrada padrão do menu. Entradas podem ser numéricas ou "saved" (última usada) - GRUB_DEFAULT=0 Configura a entrada default pela posição. Como no GRUB a primeira entrada é zero, a segunda 1, etc, - GRUB_DEFAULT=saved Define a entrada de menu padrão com o que foi selecionado anteriormente (a última seleção). Se o menu é exibido durante a inicialização, a última entrada selecionada será realçada. Se nenhuma ação for tomada, esta seleção será iniciada no final do tempo limite ou se o menu está oculto. - GRUB_DEFAULT="xxxx" Uma entrada de menu exata, incluida entre aspas, também pode ser usada. Neste caso, a localização no menu não importa. Exemplo: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic" - GRUB_TIMEOUT= Configure o tempo. - GRUB_HIDDEN_TIMEOUT=0 O menu ficará oculto. # GRUB_HIDDEN_TIMEOUT=0 O menu não será oculto - GRUB_HIDDEN_TIMEOUT_QUIET=true true = nenhuma contagem regressiva é exibida. A tela ficará em branco. false = Um contador será exibido numa tela em branco durante o tempo do GRUB_HIDDEN_TIMEOUT. - #GRUB_GFXMODE=640x480 - Descomente essa linha para mudar a resolução. Ela fornece resoluções suportadas pela placa de vídeo do usuário (640x480, 800x600, 1280x1024, etc). Aplica-se apenas a resolução do menu de boot. Dica: Definindo a mesma resolução do sistema operacional o tempo de inicialização diminuirá ligeiramente. - Embora não seja necessário, o usuário também pode especificar a cor BitDepth anexando-o à configuração da resolução. Um exemplo seria 1280x1024x24 ou 640x480x32. - O usuário também pode adicionar várias resoluções. Se o GRUB 2 não pode usar a primeira entrada, ela irá tentar o próximo ajuste. As configurações são separadas por uma vírgula. Exemplo: 1280x1024x16, 800x600x24, 640x480. - Se utilizar uma splash image, certifique-se se a configuração da resolução e do tamanho da imagem são compatíveis. - Se estiver usando uma entrada que produz uma mensagem "não encontrado" ao executar update-grub, tente adicionar ou alterar a cor BitDepth. - Se esta linha está comentada (#) ou a resolução não está disponível o GRUB 2 usa a configuração padrão determinada pelo /etc/grub.d/00_header. - GRUB_DISABLE_LINUX_RECOVERY=true Adicione ou descomente essa linha se não desejar o “Recovery” mode no menu. "Recovery mode" para apenas um kernel, fazer uma entrada especial em / etc/grub/40_custom. Entradas personalizadas GRUB 2 permite ao usuário criar seleções de menus personalizados que serão automaticamente adicionados ao menu principal quando o comando Código: sudo update-grub é executado. Um arquivo 40_custom vazio está disponível em /etc/grub.d/ para uso ou para servir de exemplo para criar menus personalizados. Aqui estão algumas considerações para menus personalizados: - O nome do arquivo determina a ordem das seleções no menu. Nomes numérico são executados primeiro, seguido por nomes alfabéticos. - Entrada 10_linux aparecerá antes de 30_os prober, que será colocado antes de entradas 40_custom, que irá preceder my.custom.entries. - O usuário que desejar que as suas entradas de menu personalizado apareçam em primeiro lugar no menu principal pode nomear a pasta para 06_xxx que suas listas estarão em primeiro lugar no menu. - o arquivo deve ser feito executável : Código: sudo chmod +x /etc/grub.d/filename . - o conteúdo desse arquivo é adiconado ao grub.cfg sem alterações quando o comando sudo update-grub é executado. - Ao contrário do grub.cfg, arquivos personalizados podem ser editadas a qualquer momento, não são só leitura, e podem ser propriedade do usuário, se ele desejar. - Os arquivos personalizados são estáticos. O conteúdo não será alterado, quando novos kernels são adicionados ou removidos (a menos que os conteúdos sejam afetados pelo usuário acrescentado scripts). Se o arquivo personalizado coloca as entradas no topo do grub.cfg, o usuário poderá confirmar no /etc/default/grub (DEFAULT= x) após executar update-grub. Certifique-se se ainda aponta para a entrada de menu desejada. Para contar, a primeira entrada do menu no arquivo /etc/default/grub é 0. Criando menus personalizados O usuário pode editar o arquivo default /etc/grub.d/40_custom ou criar um novo. A maneira mais fácil de criar o conteúdo de um menu personalizado é copiar uma entrada do /boot/grub/grub.cfg. Depois de copiado, o conteúdo do 40_custom pode ser adaptado a vontade do usuário. • De acordo com o arquivo personalizado padrão da amostra (etc/grub.d/40_custom/) as duas primeiras linhas de um arquivo personalizado em /etc/grub.d deve ser: / bin / sh exec tail -n +3 $0 - Podem ser copiadas entradas de menu existente no arquivo boot/grub/grub.cfg ou de um arquivo do GRUB legacy. Se for copiado do arquivo menu.lst do GRUB legacy: - Uma cópia de backup deste arquivo pode estar na pasta /boot/grub se o usuário atualizou do GRUB para GRUB 2. - As seguintes entradas do menu do GRUB legacy devem ser mudadas : - title é mudado para menuentry. A linha deve terminar com { - root muda para set root= - kernel passa a ser linux - qulquer designação de partições (sda4, sdb6) deve ser mudada porque no GRUB legacy a primeira partição é 0 e no GRUB 2 é 1 (o primeiro disco continua sendo 0 igual ao GRUB legacy). Regras para construção de menuentry - a primeira linha inicia com menuentry e finda com { - o que está entre aspas é o que vai aparecer no menu do GRUB 2. Edite como desejar - a última linha do menuentry deve ser } - não deixe espaços em branco no fim das linhas - a linha set root= deve apontar para a localização de inicialização do GRUB2 (sdXY) - referência root da linha Linux deverá apontar para a partição do sistema. - Dica : Se GRUB 2 não encontra o kernel referenciado, tente substituir a UUID pelo nome do dispositivo (exemplo: / dev/sda6). Exemplo de menuentry : ### BEGIN /etc/grub.d/10_linux ### menuentry "Ubuntu, Linux 2.6.31-15-generic" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,2) search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc linux /boot/vmlinuz-2.6.31-15-generic root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro vga=789 quiet splash initrd /boot/initrd.img-2.6.31-15-generic } Essa entrada do exemplo, copiada do grub.cfg e alterada pode ter este aspecto: menuentry "Ubuntu 9.10" { set root=(hd0,2) search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc linux /boot/vmlinuz-2.6.31-15-generic root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro quiet splash initrd /boot/initrd.img-2.6.31-11-generic } Uma entrada de exemplo para uma versão de disco rígido do SystemRescueCD instalado conforme as instruções no site (em sda8). menuentry "System Rescue CD" { set root=(hd0,8) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz } Uma entrada de exemplo para Carregamento em série para um outro gestor de arranque GRUB. menuentry "Grub 1 Bootloader" { set root=(hd0,8) chainloader +1 } Splash Images GRUB 2 Splash Images Para configurar uma imagem de splash de inicialização primeiro selecionar a imagem para uso e escolher as cores do texto a ser exibido. Instale o pacote padrão GRUB 2 splash images : Código: sudo apt-get install grub2-splashimages . Não confundir este com o pacote grub-splashimages, que não é compatível com o GRUB 2. A localização padrão para essas imagens é /usr/share/images/grub. Cada usuário pode criar e usar suas próprias splash images. Configurando splash images As splash images do GRUB 2 são controladas pelo arquivo /etc/grub.d/05_debian_theme Edite esse arquivo como root : Código: sudo gedit /etc/grub.d/05_debian_theme Encontre a linha abaixo : for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do Há várias detalhes sobre esta entrada: - por default o GRUB 2 procura por splash images em /boot/grub e /usr/share/images/desktop-base - o pacote grub2splashimages não é extraído de uma das pastas acima, mas de /usr/share/images/grub - o usuário deve: - alterar a localização da pasta na linha acima para apontar para o endereço correto, ou - mover a imagen para uma das pastas acima referenciadas. - para adicionar a pasta grub coloque a entrada para ela e mude o nome do arquivo da imagem pelo que voce quer. Na imagem do nosso exemplo a configuração ficou assim : for i in {/boot/grub,/usr/share/images/desktop-base,/usr/share/images/grub}/Lake_mapourika_NZ.{png,tga} ; do Depois de ter introduzido o caminho e o nome da imagem em 05_debian_theme você executa Código: sudo update-grub para adicionar a informação ao grub.cfg. Configurando fonte e cores Estas linhas estão contidas em /etc/grub.d/05_debian_theme. A cor é definida pela linha abaixo. A primeira cor é a cor do texto, a segunda é a cor de fundo. set color_normal=black/black O código abaixo define a cor de entradas selecionadas. A primeira cor é a cor do texto em destaque, a segunda é a cor de fundo da linha selecionada. Se black é a segunda entrada, a linha de destaque será transparente e apenas o texto mudará de cor. set color_highlight=magenta/black O black é a cor de transparência GRUB 2 padrão . Altere apenas a cor do primeiro (ou seja, xxxxx /black), se utilizar uma imagem de splash. Se o segundo valor nesta linha é alterada para uma cor diferente de black a imagem splash será escondida atrás de um fundo de cor sólida. Para mais detalhes : GRUB 2 Splash Images. -- Fabiano garcia Fonseca Linux user #448759 - Ubuntu User #15701 www.linuxacessivel.org -- Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece Lista de discussão Ubuntu Brasil Histórico, descadastramento e outras opções: https://lists.ubuntu.com/mailman/listinfo/ubuntu-br