Artigos / Gerenciadores de Partida (Boot Loaders)


O que é?

Gerenciadores de Partida são programas que carregam um sistema operacional e/ou permitem escolher qual será iniciado.

LILO

Descrição

O LILO (Linux Loader) é sem dúvida o gerenciador de partida padrão para quem deseja iniciar o GNU/Linux através do disco rígido. Ele permite selecionar qual sistema operacional será iniciado (caso você possua mais de um) e funciona tanto em discos rígidos IDE como SCSI. A seleção de qual sistema operacional e a passagem de parâmetros ao kernel pode ser feita automaticamente ou usando o aviso de boot do LILO.

Criando o arquivo de configuração do LILO

Os dados para a criação do novo setor de boot que armazenará o gerenciador de partida são lidos do arquivo /etc/lilo.conf. Este arquivo pode ser criado em qualquer editor de textos . O arquivo /etc/lilo.conf é dividido em duas seções: Geral e Imagens. A seção Geral vem no inicio do arquivo e contém opções que serão usadas na inicialização do Lilo e parâmetros que serão passados ao kernel. A seção Imagens contém opções especificas identificando qual a partição que contém o sistema operacional, como será montado inicialmente o sistema de arquivos, tabela de partição, o arquivo que será carregado na memória para inicializar o sistema, etc.

Um exemplo do arquivo de configuração lilo.conf

Abaixo um exemplo do arquivo /etc/lilo.conf que poderá ser usado em instalações GNU/Linux com o DOS.

Arquivo: /etc/lilo.conf

boot=/dev/hda1 #Instala o LILO em /dev/hda1 compact install=menu map=/boot/map message=/etc/lilo.message #Mensagem que será mostrada na tela default=1 #Carrega a Imagem especificada por label=1 como padrão vga=normal #usa o modo de video 80x25 ao iniciar o Linux delay=20 #aguarda 2 segundos antes de iniciar a imagem padrão lba32 #permite quebrar o limite de 1024 cilindros na inicialização prompt #mostra o aviso de "boot:" logo que o LILO é carregado image=/vmlinuz #especifica o arquivo que contém a primeira imagem root=/dev/hda1 #partição onde a imagem acima esta localizada label=1 #identificação da imagem de disco read-only #monta inicialmente como somente leitura password=12345 #Usa a senha 12345 restricted #somente quando iniciar com o parâmetro single other=/dev/hda2 #especifica outro sistema que será carregado table=/dev/hda #a tabela de partição dele está em /dev/hda label=2 #identificação desta imagem de disco password=12345 #pede a senha antes de iniciar este sistema

A seção Geral vem do inicio do arquivo até a palavra Prompt. A partir do primeiro aparecimento da palavra image, other ou range, tudo o que vier abaixo será interpretado como imagens de inicialização.

Opções usadas no LILO

Global

  • backup=[arquivo/dispositivo] - Copia o setor de partida original para o arquivo ou dispositivo especificado.
  • boot=dispositivo - Define o nome do dispositivo onde será gravado o setor de partida do LILO (normalmente é usada a partição ativa ou o Master Boot Record - MBR). Caso não seja especificado, o dispositivo montado como a partição raiz será usado.
  • compact - Tenta agrupar requisições de leitura para setores seguintes ao sendo lido. Isto reduz o tempo de inicialização e deixa o mapa menor. É normalmente recomendado em disquetes.
  • default=imagem - Usa a imagem especificada como padrão ao invés da primeira encontrada no arquivo lilo.conf.
  • delay=[num] - Permite ajustar o número de segundos (em décimos de segundos) que o gerenciador de partida deve aguardar para carregar a primeira imagem de disco (ou a especificada por default=). Esta pausa lhe permite selecionar que sistema operacional será carregado.
  • install=interface - Especifica que interface será usada para exibição de menu com as opções de inicialização ao usuário. As seguintes opções são permitidas:
  • text - Exibe uma mensagem de texto (exibida através do parâmetro message=) na tela. Esta é a recomendada para terminais.
  • menu - Exibe um menu que lhe permite selecionar através de uma interface de menu a opção de inicialização. Esta é a padrão.
  • bmp - Exibe um bitmap gráfico com a resolução de 640x480 com 16 ou 256 cores.
  • lba32 - Permite que o LILO quebre o limite de 1024 cilindros do disco rígido, inicializando o GNU/Linux em um cilindro acima deste através do acesso . Note que isto requer compatibilidade com a BIOS, mais especificamente que tenha suporte a chamadas int 0x13 e AH=0x42. É recomendado o seu uso.
  • map=arquivo-mapa - Especifica a localização do arquivo de mapa (.map). Se não for especificado, /boot/map é usado.
  • message=arquivo - Especifica um arquivo que contém uma mensagem que será mostrada antes do aviso de boot:. Nenhuma mensagem é mostrada até que seja pressionada a tecla Shift após mostrar a palavra LILO. O tamanho da mensagem deve ser no máximo 65535 bytes. O arquivo de mapa deve ser novamente criado caso a mensagem seja retirada ou modificada. Na mensagem, o caracter FF (CTRL+L) limpa a tela.
  • password=senha - Permite proteger todas as imagens de disco com uma única senha. Caso a senha esteja incorreta, o LILO é novamente carregado.
  • prompt - Mostra imediatamente o aviso de boot: ao invés de mostrar somente quando a tecla Shift é pressionada.
  • timeout=[num] - Ajusta o tempo máximo de espera (em décimos de segundos) de digitação no teclado. Se nenhuma tecla é pressionada no tempo especificado, a primeira imagem é automaticamente carregada. Igualmente a digitação de senha é interrompida se o usuário estiver inativo por este período.

Adicionalmente as opções de imagem do kernel append, ramdisk, read-only, read-write, root e vga podem ser especificadas na seção global.

Imagem

As opções por imagem iniciam com uma das seguintes opções: image=, other= ou range=

  • table=dispositivo - Indica o dispositivo que contém a tabela de partição para aquele dispositivo. Necessário apenas para imagens especificadas por other=.
  • unsafe - Não acessa o setor de boot no momento da criação do mapa. Isto desativa algumas checagens, como a checagem da tabela de partição. unsafe e table= são incompatíveis.
  • label=[nome] - Permite especificar um nome para a imagem. Este nome será usado na linha boot: para inicializar o sistema.
  • optional - Ignora a imagem caso não estiver disponível no momento da criação do mapa. É útil para especificar kernels que não estão sempre presentes no sistema.

Instalando o Gerenciador

Após criar seu arquivo /etc/lilo.conf , execute o comando abaixo e se tudo ocorrer bem, o LILO será gravado como seu gerenciador inicial.

# lilo

GRUB

Descrição

O GRUB (Grand Unified Boot Loader) é mais uma alternativa como gerenciador de boot e apresenta alguns recursos extras com relação as outras opções disponíveis. Ele é flexível, funcional e poderoso, podendo inicializar sistemas operacionais como o Windows (9x, ME, NT, 2000 e XP), DOS, Linux, GNU Hurd , *BSD, OS/2 e etc. Podemos destacar também o suporte aos sistemas de arquivos ext2 (Linux), ext3 e reiserfs (novos sistemas de arquivos journaling do Linux), FAT16 e FAT32 (Win 9x/ME), FFS (Fast File System usado no *BSD), Minix (MINIX OS) e etc. Por utilizar o padrão Multiboot ele é capaz de carregar diversas imagens de boot e módulos. Por esse motivo ele é o único gerenciador de inicialização capaz de carregar o conjunto de servidores do GNU Hurd. O GRUB também permite buscar imagens do kernel pela rede, por cabo seriais, suporta discos rígidos IDE e SCSI, detecta toda a memória RAM disponível no sistema, tem interface voltada para linha de comandos ou menus de escolha, além de suportar sistemas sem discos e terminais remotos. Como possui inúmeros recursos, será apresentada sua utilização básica, ficando como sugestão ao leitor procurar se aprofundar mais em suas possibilidades de uso e configuração.

Instalando o GRUB

A instalação do GRUB ao contrário da instalação do LILO, só precisa ser executada uma única vez. Caso seja necessária alguma mudança como por exemplo adicionar uma nova imagem, esta pode ser feita apenas editando o arquivo de configuração /boot/grub/menu.lst.

No MBR

Um método simples de adicionar o GRUB para gerenciar seu MBR (Master Boot Record) é rodando o seguinte comando (como root):

# grub-install /dev/hda

Este comando grava o GRUB no MBR do primeiro disco e cria o diretório /boot/grub onde estarão os arquivos necessários para o seu funcionamento. Neste ponto o GRUB já está instalado e quando você reiniciar seu computador irá se deparar com uma linha de comandos, onde terá que carregar a imagem do kernel manualmente. Mais adiante será explorada a utilização desta linha de comando que é muito eficiente. Provavelmente você achará mais interessante copiar o arquivo de configuração de exemplos do GRUB e otimizá-lo às suas necessidades. Note que isto não exclui a possibilidade de utilizar a linha de comando, apenas cria uma interface de menus onde você pode configurar várias opções de boot de uma forma organizada, automatizada e funcional. Copie este arquivo para o diretório /boot/grub com o seguinte comando:

# cp /usr/share/doc/grub/examples/menu.lst /boot/grub

Por ser um arquivo de exemplos será necessário otimizá-lo de acordo com suas necessidades, o que será abordado mais a frente.

No Disco Flexível (somente linha de comando)

Quando criamos um disquete de partida, este funcionará em um sistema qualquer, podendo utilizar este disquete em várias máquinas diferentes ou em uma máquina em que tenha tido algum problema com o GRUB no MBR. Coloque um disquete virgem e digite os seguintes comandos:

# dd if=/usr/lib/grub/i386-pc/stage1 of=/dev/fd0 count=1
# dd if=/usr/lib/grub/i386-pc/stage2 of=/dev/fd0 seek=1

Estes comandos permitem que seja apresentada a linha de comando do grub quando este disco for utilizado para boot.

No Disco Flexível (com interface de menu)

Quando foi criado o disquete de partida anteriormente, este só nos permitia utilizar a linha de comando sendo necessário carregar o menu.lst pelo disco rígido. Em alguns casos este disco satisfaz as necessidades básicas mas pode haver um momento em que você deseje ter um disquete que funcione com vários sistema e não dependa de um disco fixo. Digite os seguintes comandos:

# mke2fs /dev/fd0
# mount /dev/fd0 /floppy -t ext2
# mkdir /floppy/grub
# cp /usr/lib/grub/i386-pc/stage[12] /floppy/grub
# cp /usr/share/doc/grub/examples/menu.lst /floppy/grub
# umount /floppy
# /sbin/grub

Este último comando disponibiliza a linha de comando do GRUB. Digite os seguintes comandos:

grub> install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/grub/menu.lst
grub> quit

Neste momento o disquete está pronto. Note que o menu.lst que foi copiado para ele é um arquivo de exemplo, sendo necessário que você o configure de acordo com suas necessidades.

Opções do Arquivo de Configuração

Esta seção descreve o arquivo menu.lst

Parâmetros Globais

  • timeout = Define um tempo (em segundos) de espera. Se nenhuma tecla for pressionada, carrega a imagem padrão.
  • default = Define qual será a opção padrão que deve ser automaticamente selecionada quando nenhuma outra for especificada em um tempo definido por timeout.
  • fallback = Caso ocorra algum erro inesperado e a opção padrão não possa ser carregada, este parâmetro define qual a outra opção deve ser utilizada.
  • color = Permite que você escolha as cores usadas no menu de boot.
  • password = Permite que você especifique uma senha. Está será solicitada sempre que houver necessidade de realizar uma função que não seja carregar as imagens disponíveis, como por exemplo acessar a linha de comandos do GRUB. Você pode utilizar também o parâmetro password para esconder um arquivo que contenha outras configurações, como um menu.lst secreto. O arquivo pode ter um nome qualquer.
Ex.: password = senha (hd0,0)/boot/grub/secret.conf
Você pode ter várias entradas do parâmetro "password" em um mesmo arquivo sendo que uma delas é usada para bloquear o acesso as imagens/linha de comandos e as outras usadas para carregar arquivos de opções do GRUB. Quando você digitar p para entrar com a senha, você pode digitar a senha que protege as imagens/linha de comandos ou a que é utilizada para carregar os arquivos de opções.
  • hiddenmenu = Está opção faz com que o menu de opções não seja mostrado e de boot na imagem especificada por "default" depois de expirado o tempo definido em timeout. O usuário pode requisitar o menu com as opções pressionando a tecla <ESC> antes que o tempo definido em timeout expire.

Parâmetros para Imagens

  • title = Define um texto que será apresentado no menu de boot para identificar o sistema a ser inicializado.
  • root = Determina qual a partição raiz do sistema a ser inicializada.
  • rootnoverify = Idêntica a opção root, mas não tenta montar a partição-alvo, o que é necessário para alguns sistemas como Dos e Windows.
  • kernel = Nesta opção você informa qual o kernel vai ser inicializado. Você pode passar parâmetros diretamente para o kernel também.
Ex.: kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6
  • module = Faz com que algum módulo necessário para o boot seja carregado. Lembre-se que estes não são módulos do kernel (módulos de som, rede, etc.) e sim módulos necessários ao boot de alguns sistemas, como por exemplo o GNU Hurd.
  • lock = Quando você quiser controlar se uma pessoa pode iniciar um sistema que esteja listado nas opções do menu de boot, você pode utilizar esta opção que faz com que a senha especificada com o comando "password" seja solicitada no momento em que se tentar carregar a imagem em questão.
  • pause = Emite uma mensagem na tela e espera uma tecla ser pressionada.
  • makeactive = Torna a partição ativa. Este comando está limitado a partições primárias dos discos.
  • chainloader = Alguns sistemas como o Windows ou Dos armazenam seu próprio gerenciador de boot no início da partição em que ele está instalado. Para efetuar o boot destes sistemas através do GRUB, você precisa pedir para que o gerenciador de boot de tal sistema seja carregado e faça seu trabalho, dando o boot.
  • hide e unhide = Esconde e mostra partição respectivamente. Estas duas opções são necessárias quando houver mais de uma versão do Dos ou Windows na máquina em partições diferentes, já que estes sistemas detectam automaticamente a partição e quase sempre o fazem de modo errado.

Suponha o Windows na primeira partição primária (hd0,0) e o Dos na segunda partição primária (hd0,1). Quando quisermos carregar estes sistemas devemos proceder da seguinte maneira:

title Windows hide (hd0,1) unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive

title Dos hide (hd0,0) unhide (hd0,1) rootnoverify (hd0,1) chainloader +1 makeactive

  • map = Alguns sistemas não permitem ser inicializados quando não estão no primeiro disco (Dos, Win 9x, etc.). Para resolver esta e outras situações o GRUB tem um comando que permite enganar tal sistema mapeando as unidades de disco do modo como lhe for mais conveniente.

Você tenha o primeiro disco (hd0) com o GNU/Linux instalado e em um outro disco (hd1) com o Windows/Dos instalado. O Windows/Dos não permitem serem inicializados desta forma e como solução você poderia usar a seguinte entrada no arquivo de configurações do GRUB:

title Windows unhide (hd1,0) rootnoverify (hd1,0) chainloader +1 map (hd1) (hd0) makeactive

Isso faz com que o disco (hd1), onde esta o Windows/Dos, seja apresentado a este sistema como (hd0) "enganado" o mesmo e possibilitando o boot.

Exemplo de arquivo de configuração (menu.lst)

Arquivo:/boot/grub/menu.lst
     # Exemplo de arquivo de configuração do GRUB.
     # Note que você pode usar o  caracter '#' para fazer comentários.

     # Se após 30 segundos nenhuma tecla for pressionada, carrega a imagem padrão.
     timeout 30

     # Define a primeira imagem como padrão.
     default 0

     # Caso a imagem padrão não funcione carrega a imagem definida aqui.
     fallback 1

     # Define as cores que serão usadas no menu.
     color light-cyan/black white/blue

     # Permite utilizar uma senha.
     password minha-senha-secreta
     password minha-senha (hd0,0)/boot/grub/secret.conf

     # Para boot com o GNU/Linux
     title Linux 2.4.16
     # Pede a senha configurada em "password" antes de carregar esta          imagem.
     lock
     root (hd0,0)
     # Atente as opções passadas diretamente para o kernel (vga, mem, etc.).
     kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 mem=512M ramdisk=0

     # Para boot com FreeBSD
     title FreeBSD 3.4
     root (hd0,2,a)
     kernel /boot/loader

     # Para boot com OS/2
     title OS/2
     root (hd0,1)
     makeactive
     chainloader +1
     chainloader /boot/chain.os2

     # Para instalar o GRUB no disco rígido.
     title = Instala o GRUB no disco rígido
     root = (hd0,0)
     setup = (hd0)

     # Muda as cores.
     title Mudar as cores
     color light-green/brown blink-red/blue

Usando a linha de comando do GRUB

  • cat = Este comando permite verificar o conteúdo de um arquivo qualquer, o qual deve estar gravado em um dispositivo ligado a sua máquina. Embora seja um recurso útil, nenhuma permissão de acesso é verificada e qualquer pessoa que tenha acesso a linha de comandos do GRUB pode listar o conteúdo de arquivos importantes. Para contornar este problema o parâmetro password é utilizado no arquivo menu.lst e faz com que uma senha seja solicitada antes de liberar o acesso a linha de comandos. Não esqueça que ainda é possível utilizar um disquete com o GRUB para dar boot na máquina o que permite usar a linha de comandos pelo disquete.
Ex.:
grub> cat (hd0,0)/etc/passwd
  • cmp = Este comando é utilizado para comparar dois arquivos.
Ex.:
grub> cmp (hd0,0)/arquivo1 (hd0,0)/arquivo2
  • configfile = Carrega um arquivo de configuração do GRUB.
Ex.:
grub> configfile (hd0,0)/boot/grub/menu.lst
  • displayapm = Mostra informações sobre APM.
  • displaymem = Mostra informações sobre a memória RAM.
  • find = Permite encontrar um arquivo. A saída deste comando disponibiliza o nome completo do caminho para o arquivo e a partição onde o mesmo está localizado.
Ex.:
grub> find stage1
  • geometry = Mostra informações sobre a geometria reconhecida de seu drive e permite que você escolha a geometria desejada caso esta esteja sendo reconhecida erroneamente.
  • help = help "comando" para ver a ajuda.
Ex.:
grub> help color
  • install = Instala o GRUB, embora não seja recomendado o uso deste comando diretamente, pois é possível esquecer ou trocar facilmente um parâmetro e sobrescrever a tabela de partições de seu disco.
Ex.:
grub> install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p(fd0)/grub/menu.lst
  • setup = Você pode usar este comando para instalar o GRUB. Note que sua sintaxe é menos complexa do que a usada em install.
Ex.:
grub> root = (hd0,0)
grub> setup = (hd0)
  • quit = Abandona a linha de comandos do GRUB.
  • reboot = Reinicia o computador.
  • boot = Efetua o boot. Suponha o Linux instalado em (hd0,0), podemos passar os seguintes comandos na linha de comandos para efetuar o boot de uma imagem do GNU/Linux:
grub> root (hd0,0)
grub> kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6
grub> boot

Muitos outros comandos estão disponíveis tanto na linha de comandos do GRUB quanto no arquivo de configuração menu.lst.

Referências

  • Site oficial do GRUB
  • Site Debian-br , na parte de suporte, documentação, "Como usar o GRUB: Um guia rápido para usar o GRUB, feito por Vitor Silva Souza e Gustavo Noronha Silva".

Autora: Leidiane Nascimento

Este artigo foi baseado no artigo do Gleydson Mazioli da Silva no Guia Foca GNU/Linux.


Categorias: Gelsol Artigos