Visão geral do processo de boot
Autor: Felipe Santos | Publicado: 2012-09-14T05:58:00-07:00






Antes de falar de LILO e GRUB, vamos rever como um PC é iniciado ou inicializado. O código denominado BIOS (de Basic InputOutput Service) é armazenado em memória não volátil, como ROM, EEPROM ou memória flash. Quando o PC é ligado ou reinicializado, esse código é executado. Em geral, ele realiza um autoteste inicial (POST) para verificar a máquina. Por fim, ele carrega o primeiro setor a partir do registro de boot mestre (MBR) na unidade de boot.

O MBR também tem a tabela de partições, para que a quantidade de código executável no MBR seja inferior a 512 bytes, o que não é muito código. Observe que cada disco, mesmo um flexível, possui código executável em seu MBR, mesmo se o código for apenas suficiente para apresentar uma mensagem, como "Disco não inicializável na unidade A:". Esse código, carregado pelo BIOS a partir desse primeiro setor, é chamado de loader de boot de primeiro estágio ou de loader de boot de estágio 1.
O MBR de unidade de disco rígido padrão usado pelos sistemas operacionais MS DOS, PC DOS e Windows® verifica a tabela de partições para localizar uma partição primária na unidade de boot marcada como ativa, carrega o primeiro setor a partir dessa partição e passa o controle para o começo do código carregado. Essa nova porção de código é também conhecida como o registro de boot de partição. Esse registro é na verdade outro loader de boot de estágio 1, mas esse tem inteligência suficiente apenas para carregar um conjunto de blocos da partição. O código neste novo conjunto de blocos é chamado deloader de boot de estágio 2. Conforme usado por MS-DOS e PC-DOS, o loader de estágio 2 continua diretamente para carregar o restante do sistema operacional. Esse é o modo como o seu sistema operacional entra em operação pela sua autoinicialização até estar funcionando normalmente.
Isso funciona bem para um sistema com um único sistema operacional. O que acontecerá se você quiser vários sistemas operacionais, digamos, OS/2, Windows XP e três distribuições Linux diferentes? Você poderá usar algum programa (como o DOS FDISK) para alterar a partição ativa e reinicializar. Isso é incômodo. Além do mais, um disco pode ter apenas quatro partições principais, e o MBR padrão pode ter apenas uma partição primária ativa; não se pode fazer o boot a partir de uma partição lógica. Mas, nosso exemplo hipotético citou cinco sistemas operacionais, e cada um precisa de uma partição. Opa!
A solução está em usar algum código especial que permita que um usuário escolha em qual sistema operacional será feito o boot. Exemplos incluem:

Loadlin

Um programa executável DOS invocado de um sistema DOS em execução para fazer o boot de uma partição Linux. Isso era popular quando a configuração de um sistema multiboot era um processo complexo e arriscado.

OS/2 Boot Manager

Um programa que é instalado em uma pequena partição dedicada. A partição foi marcada como ativa, e o processo de boot de MBR padrão iniciou o OS/2 Boot Manager, que apresenta um menu permitindo escolher qual sistema operacional inicializar.

Um loader de boot inteligente

Um programa que pode residir em uma partição de sistema operacional e é invocado pelo registro de boot da partição de uma partição ativa ou pelo registro de boot mestre. Exemplos incluem:
• BootMagic, parte do Norton PartitionMagic
• LILO, o LOader do LInux
• GRUB, o loader GRand Unified Boot (agora chamado de GRUB Legacy)
• GRUB 2, um novo loader de boot que acaba de começar a aparecer em distribuições comuns
• 
Evidentemente, se você puder obter o controle do sistema para um programa que tenha mais de 512 bytes de código para realizar essa tarefa, não será muito difícil permitir o boot de partições lógicas ou de partições que não estejam na unidade de boot. Todas essas soluções permitem essas possibilidades, porque podem carregar um registro de boot de uma partição arbitrária ou porque eles têm algum entendimento de qual arquivo ou quais arquivos carregar para iniciar o processo de boot.

Carregamento em cadeia

Quando um gerenciador de boot obtém o controle, uma das coisas que ele pode carregar é outro gerenciador de boot. Isso é chamado carregamento em cadeia, e ocorre mais frequentemente quando o gerenciador de boot que está localizado no registro de boot mestre (MBR) carrega o loader de boot que está no registro de boot de partição. Isso quase sempre é feito quando um loader de boot Linux é solicitado a inicializar uma partição Windows ou DOS, mas também pode ocorrer quando o loader de boot Linux de um sistema é solicitado a carregar o loader de boot de outro sistema. Veja a seguir exemplos que mostram quando é possível usar isso para vários sistemas Linux.

Loaders de boot Linux

Daqui em diante, nos concentraremos em LILO e GRUB, já que esses são os loaders de boot inclusos na maioria das distribuições Linux. LILO já existe há algum tempo. GRUB é mais recente. O GRUB original agora se tornou GRUB Legacy, e o GRUB 2 está sendo desenvolvido sob o patrocínio da Free Software Foundation. Discutiremos o GRUB 2 brevemente, principalmente para que você tenha uma ideia das principais diferenças e de como o GRUB e o GRUB 2 podem coexistir. Para o restante do artigo, consideramos que GRUB significa GRUB Legacy, a menos que o contexto especificamente indique o GRUB 2. Também está disponível uma nova versão do LILO, chamada ELILO (que é projetada para sistemas de boot que usam Extensible Firmware Interface ou EFI da Intel, em vez de BIOS).
O processo de instalação de sua distribuição provavelmente dará a você uma opção de qual loader de boot configurar. Tanto o GRUB como o LILO funcionarão com a maioria dos discos modernos, embora algumas distribuições, como Fedora, não forneçam mais o LILO. Lembre-se de que a tecnologia de disco tem avançado rapidamente, portanto, você deve sempre ter certeza de que o loader de boot, a distribuição Linux escolhida (ou outro sistema operacional) e o BIOS de sistema funcionarão com o seu disco novo em folha. Caso contrário, poderá ocorrer perda de dados. Da mesma forma, se você estiver adicionando uma nova distribuição a um sistema existente, pode ser necessário certificar-se de que você tenha o LILO ou o GRUB mais recente em seu MBR. Também será necessária uma versão recente o bastante do GRUB ou do LILO, case você planeje fazer o boot a partir de um disco LVM ou RAID.
Os loaders de estágio 2 usados em LILO e GRUB permitem escolher quais sistemas operacionais ou versões carregar dentre inúmeras opções. Entretanto, LILO e GRUB diferem bastante no fato de que uma mudança no sistema requer o uso de um comando para recriar a configuração de boot LILO sempre que você atualizar um kernel ou efetuar outras alterações específicas no seu sistema, ao passo que GRUB pode fazer isso por meio de um arquivo de texto de configuração editável. O GRUB 2 também requer uma reconstrução de um arquivo de configuração que geralmente está armazenado em /etc.

http://www.ibm.com/developerworks/br/library/l-lpic1-v3-102-2/