Vejamos um exemplo de arquivo de configuração do
ISOLINUX no qual são utilizadas somente as configurações básicas:
DEFAULT vesamenu.c32
TIMEOUT 300
PROMPT 0
LABEL live
MENU LABEL ^Iniciar o
Linux em modo grafico
KERNEL /boot/vmlinuz
INITRD /boot/initrd.gz
APPEND boot=live nopersistent rw quiet splash
LABEL text_only
MENU LABEL Iniciar o Linux em modo ^texto
KERNEL /boot/vmlinuz
INITRD /boot/initrd.gz
APPEND boot=live nopersistent textonly rw quiet
LABEL memtest
MENU LABEL Testar a ^memoria
KERNEL /boot/memtest86
APPEND -
LABEL hd
MENU LABEL Iniciar a partir do ^disco rigido
LOCALBOOT 0x80
APPEND -
As palavras em caixa alta no início de cada linha são utilizadas para definir opções ou seções do arquivo de configuração. Vou chamá-las de
tags, assim como está na
documentação do ISOLINUX, para facilitar minha explicação. O que vem logo após elas são os valores associados a elas, ou seja, seus
parâmetros.
As tags se dividem em dois grupos: as gerais e as de menu. As
tags gerais (
global tags) configuram o menu do ISOLINUX como um todo, enquanto as
tags de menu (
per-menu tags) configuram uma entrada do menu específica.
Nesse exemplo então, as tags gerais são DEFAULT, TIMEOUT e PROMPT. As tags de menu são LABEL, MENU LABEL, KERNEL, APPEND e LOCALBOOT. Vejamos a sintaxe de cada uma delas.
Antes de começar, quero ressaltar que estou usando caixa alta nesse artigo para diferenciar as tags de seus parâmetros, mas o ISOLINUX não diferencia maiúsculas de minúsculas, ou seja, ele não é caso sensitivo. Assim, não é necessário que as tags no arquivo de configuração sejam escritas com todas as letras maiúsculas, como estou fazendo aqui.
Além disso, vale observar que, assim como qualquer outro arquivo de configuração, o do ISOLINUX pode ser comentado. Para isso, insira um caractere de jogo da velha (#) no início da linha em que deseja comentar. O conteúdo dessa linha será ignorado pelo ISOLINUX na hora em que ele for ler o arquivo de configuração.
DEFAULT command
Define a ação padrão a ser executada durante o boot. Possui um único parâmetro, que pode ser uma das opções de boot definidas no próprio arquivo de configuração, um kernel ou ainda uma das extensões do ISOLINUX, chamadas de
COMBOOTs (nesses dois últimos casos, o arquivo deve ser referenciado pelo seu caminho relativo, se estiver na mesma pasta que o arquivo de configuração, ou pelo seu caminho absoluto a partir da raiz do CD, se estiver em outra pasta). Se o usuário não optar por nenhuma ação durante o boot (ou se você configurar o ISOLINUX de modo a fazer um boot automático) essa será a ação tomada.
Nesse arquivo de configuração do exemplo, como queremos exibir um menu gráfico através do qual o usuário possa interagir com o ISOLINUX, definimos seu valor como "vesamenu.c32". Pela observação que fiz acima, o LiveCD que possuir esse arquivo de configuração deve apresentar um arquivo "vesamenu.c32" na mesma pasta do arquivo "isolinux.cfg".
Obs.: nessa primeira parte do artigo trabalharemos com menus (tais como os dos LiveCDs do
Debian, do
Ubuntu e do
Slax) ao invés de deixar apenas o prompt "boot: " para que o usuário digite as opções de boot (como no LiveCD do
Kurumin).
TIMEOUT timeout
Define quanto tempo o gerenciador de boot deve esperar por um decisão do usuário antes de iniciar o boot. A contagem regressiva pode ser cancelada se o usuário apertar qualquer tecla. Se isso não acontecer, a ação especificada em DEFAULT ou no primeiro item do menu será executada.
Essa tag admite como parâmetro um número inteiro, que representa o tempo de espera em décimos de segundos. Se for especificado zero, a contagem regressiva é desabilitada e o menu de opções ficará na tela por tempo indeterminado até que o usuário escolha alguma opção (essa é, aliás, a configuração
default, ou seja, a configuração que é adotada se seu arquivo de configuração não apresentar essa tag). O valor máximo possível é 35996, que corresponde a pouco menos de uma hora.
Nesse exemplo, adotamos um tempo limite de 30 segundos (por isso escrevemos 300 no arquivo de configuração).
PROMPT flag_val
Define se o prompt "boot: " deve ser exibido ou não. Admite como parâmetro os valores 0 ou 1. Se você definir 0, o prompt "boot: " será exibido apenas se o usuário pressionar as teclas Shift ou Alt ou se Caps Lock ou Scroll Lock estiverem ativadas (opção default). Se você definir 1, o prompt "boot: " será sempre exibido.
LABEL command
Define uma opção de boot, exigindo como parâmetro um nome para a mesma. Se um menu não for exibido (ou ainda que o menu tenha sido exibido e o usuário tenha optado por digitar a opção que ele deseja), o usuário deverá digitar esse nome no prompt "boot: " para que essa opção seja iniciada. Cada opção de boot deve conter um nome único e recomenda-se que não tenha pontos ou outros caracteres especiais.
Assim, nesse exemplo, para iniciar o LiveCD o usuário deve digitar "live" (sem as aspas, claro) no prompt "boot: ".
MENU LABEL label
(válido somente depois de uma tag LABEL)
Define o texto que será exibido no menu referente à opção de boot que se encontra associada. Equivale à tag TITLE do arquivo de configuração do GRUB. Se nenhum texto for definido aqui, o nome da opção (definido pela tag LABEL) será exibido no menu. Diferente das tags LABEL, não precisa ter valores únicos, mas ainda assim não reconhece caracteres especiais.
No menu definido pelo arquivo de configuração acima, ao invés de digitar "live" no prompt "boot: ", o usuário pode escolher a opção "Iniciar o Linux em modo gráfico" no menu.
O acento circunflexo (^) é usado para definir como tecla de atalho para aquela opção do menu o caractere que vier logo em seguida. As teclas de atalho também devem ser únicas dentro de um menu. No menu, as teclas de atalho costumam vir destacadas de alguma forma (sublinhadas, em negrito etc).
KERNEL file
Define qual arquivo será lido pelo ISOLINUX se a opção de boot correspondente for solicitada pelo usuário. Não precisa ser necessariamente um kernel Linux, pode ser também um setor de boot ou uma extensão do ISOLINUX (um COMBOOT, veremos adiante uma das formas de se utilizar isso). Novamente, cuidado com os caminhos relativos e absolutos.
As seguintes extensões são reconhecidas pelo ISOLINUX (retirado da
documentação do ISOLINUX):
none or other Linux kernel image
.0 PXE bootstrap program (NBP) [PXELINUX only]
.bin "CD boot sector" [ISOLINUX only]
.bs Boot sector [SYSLINUX only]
.bss Boot sector, DOS superblock will be patched in [SYSLINUX only]
.c32 COM32 image (32-bit COMBOOT)
.cbt COMBOOT image (not runnable from DOS)
.com COMBOOT image (runnable from DOS)
.img Disk image [ISOLINUX only]
É importante observar que o ISOLINUX distingue os arquivos pela sua extensão, não importando seu conteúdo. Assim, muito cuidado ao nomear o kernel do seu CD (evite, por exemplo "redhat-9.0"). É preferível que o kernel Linux tenha um nome curto e não tenha extensão (como no exemplo que estamos estudando).
A tag KERNEL do arquivo de configuração do ISOLINUX não equivale à tag KERNEL do arquivo de configuração do GRUB porque essa recebe o caminho do kernel e os parâmetros a serem passados para ele, enquanto aquela recebe apenas o caminho do kernel como parâmetro. No arquivo de configuração do ISOLINUX, os parâmetros a serem passados para o kernel são escritos na tag APPEND, que será vista adiante.
INITRD initrd_file
Define qual arquivo initramfs deve ser carregado para a memória juntamente com o kernel. É equivalente à tag INITRD do arquivo de configuração do GRUB e tem o mesmo efeito que passar o parâmetro "initrd=initrd_file" na tag APPEND, que será vista a seguir. O parâmetro deve conter o caminho relativo para o arquivo, se este estiver na mesma pasta que o "isolinux.cfg", ou o caminho absoluto a partir da raiz do CD, se estiver em outra pasta.
APPEND options
Define quais parâmetros são passados para o kernel durante o boot. Se você não quiser passar nenhum parâmetro, você pode passar como parâmetro para essa tag um hífen apenas (-) ou simplesmente suprimi-la.
LOCALBOOT type
Usar essa tag em uma opção de boot no lugar da tag KERNEL define que o boot deve ser feito a partir de um disco local ao invés de um kernel presente no LiveCD. O parâmetro dessa tag especificará a partir de qual disco deve ser dado o boot: 0x00 equivale ao primeiro disquete, enquanto 0x80 equivale ao primeiro disco rígido. Também pode ser especificado o valor -1, que indica ao ISOLINUX que ele deve retornar um erro para a BIOS. Ela então procurará pelo sistema operacional no próximo dispositivo na sequência de boot. Isso não é recomendado pois somente algumas BIOS reagem dessa maneira a uma mensagem de erro enviada pelo gerenciador de boot.
Obs.: se quisermos especificar uma opção padrão de menu, devemos usar uma tag diferente de DEFAULT:
MENU DEFAULT
(válido somente depois de uma tag LABEL)
Indica que a opção de boot à qual está associada é a opção padrão do menu. Se você não utilizar essa tag em nenhuma das opções do menu, a opção padrão será a primeira.
Veja o que poderia ser um exemplo de utilização dessa tag, supondo que você preferisse que a opção de boot padrão do seu LiveCD fosse iniciar em modo texto:
LABEL live
MENU LABEL ^Start Linux in Graphical Mode
KERNEL /boot/vmlinuz
INITRD /boot/initrd.gz
APPEND boot=live nopersistent rw quiet splash
LABEL text_only
MENU LABEL Start Linux in ^Text Mode
MENU DEFAULT
KERNEL /boot/vmlinuz
INITRD /boot/initrd.gz
APPEND boot=live nopersistent textonly rw quiet