O gerenciador de boot GRUB

O gerenciador de boot GRand Unified Boot Loader, ou GRUB, é o padrão de praticamente todas as distribuições de hoje em dia. O GRUB é um software que permite gerenciar o arranque de um sistema operacional por sua partição de boot ou através das opções de um dualboot. Um dualboot é utilizado para armazenar mais de um setor de boot que permitem a entrada em um sistema operacional, a escolha ou por arranque preferencial. Antes, o lilo era o padrão e acompanhava praticamente 100% de todas elas, sendo que o Slackware distribui o lilo até hoje e o grub em extras. Uma das grandes vantagens do GRUB é a leitura automática do seu arquivo de configuração ao contrario do que acontecia com o lilo, que era necessário a regravação no armazenamento de boot local, seja MBR, partição de boot ou diskete (como era realizado antes).

Quando vc liga a sua máquina, seja ela um desktop, workstation e servidor, após a contagem de memória, que por muitas vezes é ignorada ou vc não vê, além da inicialização de controladoras, como SCSI, HBA e outros de auto-inicialização e todo o esquema de endereçamento de interrupção e endereçamentos físicos oferecidos pelo sistema de firmware, como a BIOS ou EFI (que é muito melhor na distribuição automática e gerenciavel pelo sistema operacional), depois de sua máquina descobrir todo os endereçamentos e controladoras, então é a vez do MBR (master boot record), iniciar os 512 primeiros bytes do disco. Lembramos que todo o processo de inicialização da máquina, depende de um disco de armazenamento para solicitar e armazenar virtualmente em áreas de memoria virtual, pois o mesmo depende de instruções de inicialização.  A MBR contém uma instrução que comanda qual área do disco deve ser iniciada e então arrancar a área secundária, que geralmente é informada por um software de gerenciamento de boot, como o lilo, grub e qualquer outro OS Loader. O Grub então é responsável por gerenciar o arranque principal da partição de boot e múltiplos sistemas operacionais, como instruções.

O GRUB é instalado em uma área de inicialização do sistema operacional e pode ser instalado através do grub-install em MBR, ou seja no disco, na partição de boot ou área externa, como diskete (ah! esquece isso). O comando grub-install é utilizado para fazer isso e acompanha o pacote principal do grub. Estamos falando tanto do GRUB1, conhecido por legacy e GRUB2 também. O mais importante do GRUB2 é que ele consegue ler muitas tabelas de particionamento inicial e padrão de várias arquiteturas, como a EFI que antes era necessário o grub-efi e outros. Em máquinas com a arquitetura POWER da IBM, que usam PReP e o gerenciamento pelo SMS, utiliza-se o yaboot.

O arquivo de configuração do grub1 é o /boot/grub/menu.lst, o que praticamente vc ja não encontra mais por ai, pois todas as distribuições ja usam a versão 2 do GRUB, sendo que o seu arquivo de configuração é distribuido em /boot/grub, nos arquivos /boot/grub/grub.cfg, diretório /etc/grub.d/ que possui todos os scripts de carga do grub e gerenciado com instruções de boot em /etc/default/grub.

Dentro do diretório /etc/grub.d vc encontra scripts como:

/etc/grub.d/00_header O principal arquivo, pois tem a finalidade de ler todos os parametros do arquivo /etc/default/grub. IMPORTANTE! 
/etc/grub.d
/10_linux, que gerencia o menu de entrada da distribuição utilizada,
/etc/grub.d/20_memtest86+ que permite fazer o velho teste de memoria que o linux sempre acompanhou (leia mais sobre isso),
/etc/grub.d/20_linux_xen em caso de xensource instalado (mesmo que não o menu permanece ai),
/etc/grub.d/30_os-prober que gerencia o menu em caso de outro sistema operacional instalado, quando encontrado.
/etc/grub.d/05_debian_theme Permite que o menu do grub consiga ler wallpapers com algumas extensões.

Configuração do GRUB2
O arquivo /etc/default/grub é o mais importante do GRUB2 e seu conteúdo de variaveis e atributos que definem a leitura do grub.

GRUB_DEFAULT=0
Define o padrão de entrada do GRUB, mediante a que linha é marcada como auto. Lembramos que 0 é a primeira linha.

GRUB_HIDDEN_TIMEOUT=
Essa opção determina quanto tempo de entrada sem o menu do grub.

GRUB_TIMEOUT
Define o tempo de espera para o menu do grub auto-arrancar, caso escolha -1 forca a seleção manual.

GRUB_CMDLINE_LINUX_DEFAULT
Define a mais importante opção, como parametros do kernel como framebuffer, splash (como o rhgb), para boot gráfico, quiet para silenciar boot com menos verboses e outras opções ja conhecidas do atributo kernel do arquivo de configuração do grub1.

O que me chama bastante atenção no arquivo de configuração /boot/grub/grub.cfg é sua complexidade de informação que detona o arquivo de configuração do grub1, o menu.lst. É muito melhor de configurar o grub na mão pelo grub.cfg mas que infelizmente assusta a muitos, mas acredite, é muito, muito bom. Os atributos load e insmod no arquivo permite que módulos sejam carregados para o processo de entrada no sistema, onde muitas tipos de partições (não formatação, mas padrões), são carregados em um único arquivo, como o ext2, part_msdos que é padrão de IBMPC, gfxterm e gettext que define corretamente a variavel LANG para suporte a lingua nativa e pelo seu padrão definido pelolocale_dir, automaticamente de leitura do arquivo  /boot/grub/locale. O importante desse arquivo se encontra na função load_video que carrega automaticamente alguns módulos de vídeo pelo insmod como vga, vbe, video_bochs e video_cirrus para que vc não fique na mão com o vídeo default.

O mais legal é a entrada set root que aponta para o disco e partição de entrada, o atributo search, –fs-uuid e –set=root que definem pelo valor de entrada, baseado em partição ou UUID (que vc pode verificar após no Linux com o comando blkid, para descobrir para onde ele aponta). O atributo title foi substituido por echo e kernel por linux para a leitura da imagem vmlinuz e partição root. A imagem ram do kernel, seu initrd que carrega todos  os módulos que estão como módulo, estão carregados normalmente como o anterior.

Os ” inputs”, entradas do arquivo se parecem com isso:

search –no-floppy –fs-uuid –set=root 3e356e6f-da5a-44b6-b18f-c65da38ba6a8
linux /boot/vmlinuz-3.0.0-16-generic root=UUID=3e356e6f-da5a-44b6-b18f-c65da38ba6a8 ro
initrd /boot/initrd.img-3.0.0-16-generic

O arquivo de configuração do GRUB1, o menu.lst era bastante prática nisso, mas a sua falha, feria o seu proprio boot tenta que restruturar o grub por completo pelo comando GRUB ou sua manutenção, de onde automaticamente ele caia.

Após a edição dos seus arquivos de configuração, ele possui a sua leitura automaticamente, como no grub1, ao contrario do bom e velho lilo que a cada ajuste no arquivo /etc/lilo.conf era necessário recarregar o lilo.

O comando grub-install, permite que vc instale o grub em uma área de boot que pode ser em diskete, pendrive, disco (em partição boot MBR) e partição de boot, quando definido com o FLAG inicializável. O Flag inicializável era importante antigamente, hoje o que arranca a partição de boot é o gerenciador de boot, GRUB, como o LILO ja fazia. Voce tamém pode atualizar suas informações com o comando update-grub.

Segue um site de conteúdo muito importante, com o seu manual:
http://www.gnu.org/software/grub/manual/html_node/Command_002dline-and-menu-entry-commands.html#Command_002dline-and-menu-entry-commands

 

Powered by Moblie Video for WordPress + Daniel Watrous