twitter
    Seja Livre você Também!! :)

sexta-feira, 14 de setembro de 2012

LILO


LILO, ou LInux LOader, é um dos loader de boot Linux mais comuns. O LILO pode ser instalado no MBR da unidade de disco rígido inicializável ou no registro de boot de partição de uma partição. Também é possível instalá-lo em dispositivos removíveis, como disquetes, CDs ou chaves USB. Será uma boa ideia praticar em um disco flexível ou chave USB se ainda não estiver familiarizado com LILO, como em nossos exemplos.
Durante a instalação do Linux, normalmente você especificará LILO ou GRUB como gerenciador de boot. Se escolher GRUB, LILO não poderá estar instalado. Caso ainda não tenha instalado o pacote, será preciso instalá-lo. Também é recomendável instalar o pacote lilo-doc para obter a documentação adicional e mais exemplos. Daqui em diante, consideraremos que você já tenha o pacote LILO instalado.
Configure o LILO usando um arquivo de configuração, que geralmente é /etc/lilo.conf. É possível usar o comando liloconfig(normalmente disponível em /usr/sbin) para gerar um arquivo de configuração inicial e, em seguida, editá-lo conforme necessário. O arquivo de configuração na Listagem 1 foi gerado dessa forma. O arquivo é razoavelmente bem anotado, e as man pages para lilo e lilo.conf fornecerão ajuda adicional. Este é um típico arquivo de configuração LILO que pode ser usado em um sistema de boot duplo com Windows e um ou mais sistemas Linux.

Listagem 1. Exemplo de /etc/lilo.conf

# Originally generated by liloconfig - modified by Ian Shields

# This allows booting from any partition on disks with more than 1024
# cylinders.
lba32

# Specifies the boot device (floppy)
boot=/dev/fd0

# Specifies the device that should be mounted as root.
# If the special name CURRENT is used, the root device is set to the
# device on which the root file system is currently mounted. If the root
# has been changed with  -r , the respective device is used. If the
# variable ROOT is omitted, the root device setting contained in the
# kernel image is used. It can be changed with the rdev program.
root=/dev/sda7

# Bitmap configuration for /boot/coffee.bmp
bitmap=/boot/coffee.bmp
bmp-colors=12,,11,15,,8
bmp-table=385p,100p,1,10
bmp-timer=38,2,13,1

# Enables map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the map
# smaller. Using COMPACT is especially recommended when booting from a
# floppy disk.
compact

# Install the specified file as the new boot sector.
# LILO supports built in boot sectors, you only need
# to specify the type, choose one from 'text', 'menu' or 'bitmap'.
# new: install=bmp      old: install=/boot/boot-bmp.b
# new: install=text     old: install=/boot/boot-text.b
# new: install=menu     old: install=/boot/boot-menu.b or boot.b
# default: 'menu' is default, unless you have a bitmap= line
# Note: install=bmp must be used to see the bitmap menu.
# install=menu
install=bmp

# Specifies the number of _tenths_ of a second LILO should
# wait before booting the first image.  LILO
# doesn't wait if DELAY is omitted or if DELAY is set to zero.
# delay=20

# Prompt to use certain image. If prompt is specified without timeout,
# boot will not take place unless you hit RETURN. Timeout is in tenths of
# a second.
prompt
timeout=200

# Enable large memory mode.
large-memory

# Specifies the location of the map file. If MAP is
# omitted, a file /boot/map is used.
map=/boot/map

# Specifies the VGA text mode that should be selected when
# booting. The following values are recognized (case is ignored):
#   NORMAL  select normal 80x25 text mode.
#   EXTENDED  select 80x50 text mode. The word EXTENDED can be
#     abbreviated to EXT.
#   ASK  stop and ask for user input (at boot time).
#     use the corresponding text mode. A list of available modes
#     can be obtained by booting with  vga=ask  and pressing [Enter].
vga=normal

# Defines non-standard parameters for the specified disk.
#disk=/dev/sda
# bios=0x80

# If you are using removable USB drivers (with mass-storage)
# you will need to tell LILO to not use these devices even
# if defined in /etc/fstab and referenced in /proc/partitions.
# Adjust these lines to your devices:
#
# disk=/dev/sda inaccessible
# disk=/dev/sdb inaccessible

# These images were automagically added. You may need to edit something.

image=/boot/vmlinuz-2.6.31-14-generic
 label="Lin 2.6.31-14"
 initrd=/boot/initrd.img-2.6.31-14-generic
 read-only

image=/boot/vmlinuz-2.6.31-20-generic
 label="Lin 2.6.31-20"
 initrd=/boot/initrd.img-2.6.31-20-generic
 read-only

image=/boot/memtest86+.bin
 label="Memory Test+"
 read-only

# If you have another OS on this machine (say DOS),
# you can boot if by uncommenting the following lines
# (Of course, change /dev/sda1 to wherever your DOS partition is.)
other=/dev/sda6
        label="Fedora 8"

 other=/dev/sda1
   label="Windows XP"


Testaremos nossa configuração criando um disquete de boot, então especificamos boot=/dev/fd0, ao lado da parte superior do arquivo. Também aumentamos o tempo limite de prompt para 20 segundos (200 incrementos de um décimo de segundo) e acrescentamos uma segunda "outra" entrada ao carregamento em cadeia do loader de boot na partição Fedora 8 (/dev/sda6). O LILO permite apenas um comando root em um arquivo de configuração, por isso pode inicializar várias imagens a partir da partição root, mas precisa fazer o carregamento em cadeia para outro loader de boot a fim de inicializar uma imagem de uma instalação diferente, como Fedora 8 (/dev/sda6) ou Windows XP (/dev/sda1) em nosso exemplo.
Use o comando lilo, localizado em /sbin/lilo, para escrever um registro de boot de estágio 1 e criar um arquivo de mapa (/boot/map) usando informações de configuração, como no exemplo acima, normalmente localizadas em /etc/lilo.conf. Existem alguns usos auxiliares que mencionaremos depois.
Agora, se formatarmos um disco flexível com um sistema de arquivos Linux como ext2, podemos executar o comando lilo (/sbin/lilo) para criar um disco flexível inicializável. Nossa saída é mostrada na Listagem 2. Observe que o comando lilo tem cinco níveis de detalhamento. Especifique um -v extra para cada nível. Esse exemplo foi criado usando lilo -v -v.

Listagem 2. Criando um disco flexível inicializável com lilo
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007, and compiled at 10:52:38 on Aug 25 2009
Running Linux kernel 2.6.31-14-generic on i686
Ubuntu

raid_setup returns offset = 00000000  ndisk = 0
 BIOS   VolumeID   Device
Reading boot sector from /dev/fd0
pf_hard_disk_scan: ndevs=1
  0800  54085408  /dev/sda
device codes (user assigned pf) = 0
device codes (user assigned) = 0
device codes (BIOS assigned) = 1
device codes (canonical) = 1
mode = 0x03,  columns = 80,  rows = 25,  page = 0
Using BITMAP secondary loader
Calling map_insert_data
Secondary loader: 19 sectors (0x3800 dataend).
Warning: The boot sector and map file are on different disks.
bios_boot = 0x00  bios_map = 0x80  map==boot = 0  map S/N: 54085408
Mapping bitmap file /boot/coffee.bmp
Calling map_insert_file
Compaction removed 592 BIOS calls.
Bitmap: 603 sectors.
BIOS data check was okay on the last boot

Boot image: /boot/vmlinuz-2.6.31-14-generic
Setup length is 26 sectors.
Compaction removed 7452 BIOS calls.
Mapped 7601 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-14-generic
Compaction removed 14696 BIOS calls.
RAM disk: 14930 sectors.
Added Lin_2.6.31-14 *

Boot image: /boot/vmlinuz-2.6.31-20-generic
Setup length is 26 sectors.
Compaction removed 7468 BIOS calls.
Mapped 7617 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-20-generic
Compaction removed 14704 BIOS calls.
RAM disk: 14938 sectors.
Added Lin_2.6.31-20

Boot image: /boot/memtest86+.bin
Setup length is 4 sectors.
Compaction removed 243 BIOS calls.
Mapped 254 sectors.
Added Memory_Test+

Boot other: /dev/sda6, loader CHAIN
Pseudo partition start: 43198848
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Fedora_8

Boot other: /dev/sda1, on /dev/sda, loader CHAIN
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Windows_XP

 BIOS   VolumeID   Device
  80    54085408    0800
Writing boot sector.
/boot/boot.0200 exists - no boot sector backup copy made.
Map file size: 336896 bytes.
RAID device mask 0x0000
One warning was issued.


Agora, temos nosso disquete LILO inicializável. Se LILO encontrar um erro, talvez você veja uma mensagem de erro, e o setor de boot não será gravado. A mensagem dará uma ideia sobre o que precisa ser corrigido.
Se usarmos o disquete que acabamos de criar e reinicializarmos a máquina, veremos um prompt semelhante ao da Figura 1. Observe o cronômetro de contagem regressiva na parte superior da tela, que está fazendo uma contagem regressiva iniciada em 20 segundos (200 décimos de segundo). Se nenhuma opção for feita dentro de 20 segundos, a opção destacada (a primeira, ou Lin_2.6.31-14 neste caso) é automaticamente inicializada.

Figura 1. Tela de boot do LILO
É possível usar as teclas de seta para mover-se para cima e para baixo na lista de seleção. A Figura 2 mostra como selecionar o kernel Lin_2.6.31-20 mais recente, que é a segunda entrada. Observe que o valor do cronômetro não é mais exibido. Pressione Enter para fazer o boot deste kernel.

Figura 2. Selecionando outro destino de boot com LILO
Quando tiver testado seu disquete de boot, altere a entrada boot=/dev/fd0 no seu arquivo lilo.conf para instalar o LILO no MBR ou em um registro de boot de partição. Por exemplo, boot=/dev/sda instalará o LILO no registro de boot mestre de sua primeira unidade de disco rígido.
Agora, você já teve uma introdução ao LILO e ao seu arquivo de configuração. É possível substituir algumas opções de configuração da linha de comando lilo. Você encontrará mais informações na man page do lilo usando o comando man liloouman lilo.conf. Você encontrará informações ainda mais abrangentes no guia do usuário PostScript instalado com o pacote lilo ou lilo-doc. Isso deve ser instalado no seu diretório de documentação, mas o local exato pode variar de acordo com o sistema. A única forma de localizar o arquivo é filtrar a lista de pacotes por meio de grep. A Listagem 3 mostra isso para o sistema Ubuntu 9.10 baseado em Debian que estamos usando neste exemplo.

Listagem 3. Localizando o guia do usuário LILO com dpkg

ian@pinguino:~$ dpkg -L lilo-doc | grep "ps"
/usr/share/doc/lilo-doc/user.ps.gz
/usr/share/doc/lilo-doc/tech.ps.gz


O comando correspondente em um sistema baseado em RPM como o Fedora seria: rpm -ql lilo-doc | grep "ps"
Comandos auxiliares LILO
O LILO possui vários comandos auxiliares:
lilo -q
Exibe informações do arquivo de mapa.
lilo -R
Define o lilo para fazer boot automaticamente o sistema especificado somente no próximo reboot. Isso é muito conveniente para o reboot automático de sistemas remotos.
lilo -I
Exibe informações sobre o caminho de um kernel.
lilo -u
Desinstala o lilo e restaura o registro de boot anterior.
Quando LILO inicializar um sistema Linux, você poderá fornecer parâmetros adicionais no momento do boot. Por exemplo, se a inicialização gráfica não estiver funcionando, você poderá fazer o boot no modo 3 ou no modo de usuário único para recuperação. Se você selecionar uma entrada e pressionar a tecla TAB, verá uma janela de terminal que foi pré-preenchida com o nome da sua etiqueta, como mostra a Figura 3. Qualquer texto que você digitar depois do nome da etiqueta será passado ao kernel. Por exemplo, em nosso exemplo, você selecionaria o sistema Ubuntu mais recente simplesmente movendo-se uma linha para baixo e, em seguida, pressionando TAB. Se você não selecionar um nome primeiro, pode ser necessário digitar o nome completo especificado na etiqueta. É possível ver por que as etiquetas que são mais sucintas que nossos exemplos podem ser uma boa ideia: digitar Lin_2.6.31.20 não é fácil.

Figura 3. Adicionando parâmetros de kernel com LILO


Na Figura 3, adicionamos "single" aos parâmetros de boot para indicar que queremos inicializar no modo de usuário único para fazer algum tipo de recuperação do sistema. Consulte a seção Recuperação para obter mais informações sobre como usar parâmetros de boot.
Lembre-se também de que com o LILO, é necessário executar o comando lilo sempre que você atualizar o arquivo de configuração (/etc/lilo.conf). Execute também o comando lilo se adicionar, mover ou remover partições ou efetuar qualquer outra alteração que possa invalidar o loader de boot gerado.

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

Visão geral do processo de boot


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/