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/
http://www.ibm.com/developerworks/br/library/l-lpic1-v3-102-2/