Guia de referência do ISOLINUX (parte 1)

O ISOLINUX é provavelmente o gerenciador de boot mais utilizado em LiveCDs, certamente pela grande quantidade de recursos que ele oferece para tornar o boot do LiveCD um processo mais amigável. Nesse artigo você verá como utilizá-lo em seu LiveCD, desde as configurações básicas até alguns recursos interessantes.

[ Hits: 74.053 ]

Por: Antônio Vinícius Menezes Medeiros em 17/03/2010 | Blog: http://www.vinyanalista.com.br/


Criando um LiveCD usando o ISOLINUX como gerenciador de boot



Agora que já terminei a explicação sobre o ISOLINUX, passarei quais as alterações que devem ser feitas no passo-a-passo do artigo Criando um LiveCD a partir de uma instalação do Debian Lenny para que você tenha no final do processo um LiveCD com ISOLINUX como gerenciador de boot.

Um LiveCD que utiliza o ISOLINUX como gerenciador de boot apresenta uma estrutura básica similar a essa:
(Raiz do CD)    
|-------+boot    
|       |-------+isolinux
|       |       |-------isolinux.bin
|       |       |-------isolinux.cfg
|       |    
|       |-------vmlinuz    
|       |-------initrd.gz    
|       |-------memtest86
|    
|-------+live    
|       |-------filesystem.squashfs    
|    
|--------md5sum.txt

A única diferença entre essa estrutura e a apresentada no artigo anterior, onde o GRUB era usado como gerenciador de boot, é a presença da pasta "boot/isolinux" no lugar da pasta "boot/grub". Algumas distribuições preferem colocar a pasta "isolinux" na raiz do CD ao invés de dentro de uma pasta boot, mas isso é questão de organização e fica a critério de quem faz o LiveCD.

Vejamos resumidamente o que são cada um desses arquivos (para informações mais detalhadas, veja o artigo anterior):
  • "boot/isolinux/isolinux.bin": esse arquivo contém o ISOLINUX. Como sabemos, ele é o gerenciador de boot. Logo, é o primeiro componente do LiveCD a ser carregado para a memória. Você vai ler várias vezes nesse artigo o nome ISOLINUX, mas o arquivo que mais nos interessa não é esse, é o "isolinux.cfg".
  • "boot/isolinux/isolinux.cfg": esse é o arquivo de configuração do ISOLINUX e o que mais nos interessa nesse artigo. Ele contém não somente as opções do menu que aparece durante o boot do LiveCD, como também suas personalizações (cor de fundo, layout, textos de ajuda, opções avançadas, etc).
  • "boot/vmlinuz": esse arquivo é o kernel, que durante a inicialização do LiveCD é o segundo componente a ser carregado para a memória. Isso acontece assim que escolhemos uma das opções mostradas no menu de boot.
  • "boot/initrd.gz": esse arquivo é o initramfs, que contém os módulos e scripts necessários para inicializar o LiveCD. Ele é carregado durante a inicialização do LiveCD logo após o kernel.
  • "boot/memtest86": esse arquivo na verdade é opcional, mas está presente na quase totalidade dos LiveCDs. Trata-se de um programa usado para testar a memória RAM do computador.
  • "live/filesystem.squashfs": esta é a imagem compactada SquashFS que contém o sistema operacional em si.
  • "md5sum.txt": esse arquivo também é opcional. Contém o MD5 de cada arquivo do CD e pode ser usado após a gravação do CD (ou o download da imagem ISO) para verificar sua a integridade.

Se você executou o passo-a-passo do artigo anterior, pode copiar o conteúdo do seu LiveCD para o disco rígido e apagar a pasta "boot/grub". Você vai recomeçar o passo-a-passo a partir do final da etapa E (eu direi qual será seu primeiro comando). Os que não o fizeram, se desejarem, podem seguir o passo-a-passo aplicando as mudanças que eu passarei a seguir.

A maior parte das mudanças por conta da troca de gerenciador de boot ocorre na etapa E (Preparar a estrutura de diretórios do LiveCD). As etapas B (Copiar o sistema para a pasta de trabalho) e D (Fazer as modificações necessárias no sistema de trabalho) do passo-a-passo permanecem inalteradas. As demais possuem pequenas alterações em um ou dois comandos que listarei a seguir.

Antes de tudo, obviamente, você deve ter o ISOLINUX instalado no seu computador. Você pode instala-lo via apt-get ou usando outro método de sua preferência. Isso deve ser feito na etapa A do passo-a-passo (Preparar o ambiente de trabalho), cuja única mudança é a instalação do pacote syslinux no lugar do pacote grub. Evidentemente, não há problema algum se seu sistema já possuir o GRUB instalado.

# apt-get install syslinux

O comando para a instalação de todos os pacotes utilizados no passo-a-passo fica então assim:

# apt-get install rsync squashfs-tools squashfs-modules-$(uname -r) syslinux mkisofs x11-xserver-utils xnest qemu cdrecord dvd+rw-tools

Ainda na etapa A, a pasta "boot/grub" também não será criada. Ao invés dela, criaremos a pasta "boot/isolinux". Assim, para criar todas as pastas que você vai necessitar, execute esses três comandos no terminal (lembre-se de alterar os comandos para adaptá-los ao seu computador):

mkdir -p /home/vinicius/debian-live/cd/live
$ mkdir -p /home/vinicius/debian-live/cd/boot/isolinux
$ mkdir -p /home/vinicius/debian-live/work/rootfs


Durante a etapa C (Fazer as modificações desejadas no sistema de trabalho), que também permanece inalterada, exceto pelas sugestões que vou dar agora, você pode remover o GRUB do sistema que vai para o LiveCD (caso seu sistema já apresentava o GRUB antes da cópia de arquivos na etapa B), uma vez que ele não será útil no LiveCD (a menos que você pretenda usar esse LiveCD para recuperação ou pretenda torna-lo instalável):

# apt-get install grub

Você pode também remover o pacote syslinux e suas dependências, que não terão nenhuma utilidade dentro do LiveCD (isso trará uma economia de uns 2 MB):

# apt-get remove syslinux
# apt-get autoremove


Como a etapa E (Preparar a estrutura de diretórios do LiveCD) sofre muitas alterações, vou preferir reescrever seus passos a seguir.

Comece copiando o kernel, o initrd e o memtest que foram criados na etapa anterior para a pasta temporária que contém os arquivos do LiveCD:

# cp -vp /home/vinicius/debian-live/work/rootfs/boot/vmlinuz-$(uname -r) /home/vinicius/debian-live/cd/boot/vmlinuz
# cp -vp /home/vinicius/debian-live/work/rootfs/boot/initrd.img-$(uname -r) /home/vinicius/debian-live/cd/boot/initrd.gz
# cp -vp /home/vinicius/debian-live/work/rootfs/boot/memtest86+.bin /home/vinicius/debian-live/cd/boot/memtest86


Para finalizar, converta a pasta de trabalho em uma imagem SquashFS:

# mksquashfs /home/vinicius/debian-live/work/rootfs /home/vinicius/debian-live/cd/live/filesystem.squashfs

Se os arquivos da pasta "/home/vinicius/debian-live/cd" cabem no disco (CD ou DVD) no qual você pretende armazenar o sistema, você já pode apagar a pasta de trabalho, uma vez que não precisaremos de mais nenhum arquivo do sistema de trabalho (isso também representa uma boa quantidade de espaço em disco liberado, que poderá ser usado na criação do CD ou DVD):

# rm -rf /home/vinicius/debian-live/work

Agora chegou a parte em que quem aproveitou o LiveCD já pronto também entra na ação.

Copie o gerenciador de boot ISOLINUX, que está no seu sistema, para a pasta temporária:

# find /boot /usr/lib/syslinux/ -iname 'isolinux.bin' -exec cp -v {} /home/vinicius/debian-live/cd/boot/isolinux \;
# find /boot /usr/lib/syslinux/ -iname 'vesamenu.c32' -exec cp -v {} /home/vinicius/debian-live/cd/boot/isolinux \;


Agora vamos criar o arquivo "isolinux.cfg". Para isso, abra-o com o seu editor de texto favorito (no meu caso, escolhi abri-lo com o kedit):

kedit /home/vinicius/debian-live/cd/boot/isolinux/isolinux.cfg

Copie e cole o que vier a seguir no editor de texto, salve o arquivo e saia do editor de texto:

DEFAULT vesamenu.c32
TIMEOUT 300
PROMPT 0

LABEL live
  MENU LABEL ^Start Linux in Graphical Mode
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.gz
  APPEND BOOT=live boot=live nopersistent rw quiet splash

LABEL safe
  MENU LABEL Start Linux in Safe ^Graphical Mode
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.gz
  APPEND BOOT=live boot=live xforcevesa rw quiet splash

LABEL text_only
  MENU LABEL Start Linux in ^Text Mode
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.gz
  APPEND BOOT=live boot=live nopersistent textonly rw quiet

LABEL persistent
  MENU LABEL Start ^Persistent Live CD
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.gz
  APPEND BOOT=live boot=live persistent rw quiet splash

LABEL from_ram
  MENU LABEL Start Linux Graphical Mode from ^RAM
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.gz
  APPEND BOOT=live boot=live toram nopersistent rw quiet splash

LABEL memtest
  MENU LABEL ^Memory test
  KERNEL /boot/memtest86
  APPEND -

LABEL hd
  MENU LABEL Boot from first ^hard disk
  LOCALBOOT 0x80
  APPEND -

O comando a seguir não é necessário para a criação do LiveCD, mas usualmente é executado. Ele calcula o MD5, que permite verificar posteriormente a integridade dos arquivos contidos no LiveCD.

# cd /home/vinicius/debian-live/cd && find . -type f -print0 | xargs -0 md5sum | tee /home/vinicius/debian-live/cd/md5sum.txt

Pronto, encerrada a etapa E, podemos prosseguir à Etapa F (Criar o LiveCD), cuja única alteração consiste no primeiro comando, onde devemos passar os caminhos referentes aos arquivos do ISOLINUX:

# mkisofs -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "DEBIAN" -cache-inodes -r -J -l -o /home/vinicius/live-cd.iso /home/vinicius/debian-live/cd

Encerrada a lista de alterações, o restante do passo-a-passo pode ser seguido sem problemas.

Nessa primeira parte do artigo, aprendemos a criar um menu básico, a colocar uma imagem de fundo, a organizar, definir as posições, os tamanhos e as cores dos itens do menu, aprendemos também a traduzir as mensagens que são exibidas na tela e a adicionar descrições a cada item do menu. Na segunda parte, que virá em breve, continuaremos a trabalhar com menus, vendo como podemos incrementá-los ainda mais, e aprenderemos também a fazer uma tela de boot igual à do LiveCD do Kurumin, deixando apenas o prompt "boot: ", para que o usuário selecione manualmente as opções de boot.

Um abraço a todos e até a próxima.

Fontes


Esse artigo foi publicado originalmente no meu blog:
Antônio Vinícius

Página anterior    

Páginas do artigo
   1. Introdução
   2. Configuração básica
   3. Testando o ISOLINUX
   4. Inserindo uma imagem de fundo
   5. Organizando os elementos do menu
   6. Definindo as posições e tamanhos dos elementos do menu
   7. Aplicando cores aos elementos do menu
   8. Alterando as mensagens de boot automático e de prompt
   9. Inserindo textos de descrição
   10. Criando um LiveCD usando o ISOLINUX como gerenciador de boot
Outros artigos deste autor

Conheça o OpenOffice.org e o BrOffice.org

Instalação do MediaWiki em uma Project web do SourceForge

Criando um LiveCD a partir de uma instalação do Debian Lenny

Exibindo um splash durante o boot com Splashy

Guia de referência do ISOLINUX (parte 2)

Leitura recomendada

WebCDWrite: O incrível serviço de gravação de CD-R sob demanda via HTTP

Como se comunicar com outros usuários da rede

XFree86 - Um pouco da história deste poderoso ambiente gráfico para UNIX

Entendento o comando chmod

Santos Dumont - Pioneiro do Opensource no Brasil

  
Comentários
[1] Comentário enviado por xirux em 27/03/2010 - 17:44h

Muito bom o artigo, vou tirar um tempo pra praticar!

[2] Comentário enviado por zebento.cpd em 07/08/2010 - 12:07h

Parabéns por mais esse artigo!

Dentre as vantagens de cada gerenciador GRUB e ISOLINUX, existe alguma(s) que façam que um gerenciador sobressaia o outro? Resumindo, qual é o melhor e porque?

[3] Comentário enviado por edutaquary em 17/02/2011 - 13:10h

como faço para gerar uma iso do meu hd usando partimage e depois instalar pelo dvd

[4] Comentário enviado por sboorbou em 13/07/2011 - 12:33h

cara tem como usar o ISOLINUX para iniciar uma iso direto do HD?
Tipo uma iso de um live cd iniciar direto no hd?


Contribuir com comentário