Na primeira parte do artigo, aprendemos a criar um menu básico, a inserir 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. Finalmente, vimos como criar um LiveCD utilizando o ISOLINUX como gerenciador de boot.
Continuaremos, agora na segunda parte, a trabalhar com menus, vendo como podemos incrementá-los ainda mais. 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. Finalizando o artigo, veremos como criar um menu de ajuda para auxiliar o usuário a escolher entre as opções de boot disponíveis.
Criando submenus
Quando você possui uma grande quantidade de opções de boot disponíveis, pode ser interessante distribui-las através de submenus acessíveis por um menu principal. Nesse tópico veremos com quais tags podemos definir submenus.
MENU BEGIN [tagname]
MENU END
Essas tags indicam o início e término da definição um submenu, respectivamente. Entre elas, podemos utilizar todas as tags que já vimos. Os submenus herdam as propriedades do menu principal, mas podem também apresentar suas próprias propriedades (seu próprio título, seu próprio fundo, sua própria formatação, etc.).
A tag MENU BEGIN aceita um parâmetro, mas não é obrigatório. Esse parâmetro serve para dar um nome do submenu.
MENU EXIT [tagname]
(válido somente depois de uma tag LABEL dentro de um submenu)Define que a opção de menu à qual está associada será usada para sair do submenu e voltar ao menu principal. Aceita um parâmetro, mas não é obrigatório. Se for informado, o retorno será feito não para o menu principal, mas para o menu com o nome passado como parâmetro.
Na primeira parte do artigo, vimos um exemplo de arquivo de configuração básico:
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 -
Vamos colocar todas as opções do menu com exceção da primeira e da última dentro de um submenu e vamos chamar esse submenu de "Opções avançadas":
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 boot=live nopersistent rw quiet splash MENU BEGIN advanced MENU LABEL Opcoes ^avancadas LABEL text_only MENU LABEL Iniciar o Linux em modo ^texto KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND BOOT=live boot=live nopersistent textonly rw quiet LABEL memtest MENU LABEL Testar a ^memoria KERNEL /boot/memtest86 APPEND - LABEL mainmenu MENU LABEL < ^Voltar MENU exit MENU END LABEL hd MENU LABEL Iniciar a partir do ^disco rigido LOCALBOOT 0x80 APPEND -
Se você testar essa configuração (veja como fazer isso na primeira parte do artigo), verá isso:
Outras formas de fazer submenus
Nesse tópico veremos duas outras formas de se fazer um submenu, colocando desta vez os menus em arquivos de configuração separados.
Uma delas é usando a tag CONFIG:
CONFIG filename
(válido somente depois de uma tag LABEL)Carrega o arquivo de configuração passado como parâmetro.
Vejamos como ficaria a mesma estrutura de menus do tópico anterior definida utilizando a tag CONFIG. Para isso, vamos criar dois arquivos:
- isolinux.cfg:
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 boot=live nopersistent rw quiet splash LABEL advanced MENU LABEL Opcoes ^avancadas CONFIG avancadas.cfg LABEL hd MENU LABEL Iniciar a partir do ^disco rigido LOCALBOOT 0x80 APPEND -
- avancadas.cfg:
DEFAULT vesamenu.c32 TIMEOUT 300 PROMPT 0 MENU TITLE Opcoes avancadas LABEL text_only MENU LABEL Iniciar o Linux em modo ^texto KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND BOOT=live boot=live nopersistent textonly rw quiet LABEL memtest MENU LABEL Testar a ^memoria KERNEL /boot/memtest86 APPEND - LABEL mainmenu MENU LABEL < ^Voltar CONFIG isolinux.cfg
O resultado visual e funcional das duas formas já apresentadas de criar submenus é praticamente o mesmo. Abordei a tag CONFIG aqui na verdade mais por ser uma das formas possíveis de se criar submenus, mas veremos um uso mais interessante para essa tag mais adiante, quando tratarmos sobre o menu de ajuda.
No tópico Configuração básica, na primeira parte do artigo, vimos que a tag KERNEL aceita como parâmetro uma extensão do ISOLINUX (um COMBOOT). Se criarmos uma entrada de menu passando como parâmetro à tag KERNEL o arquivo vesamenu.c32 e como parâmetro à tag APPEND um arquivo de configuração, durante a execução, ao escolher essa opção, o usuário terá acesso a outro menu, definido por esse arquivo de configuração.
Em resumo, teríamos, no "isolinux.cfg", algo parecido com isto:
LABEL outro_menu MENU LABEL Outro menu KERNEL vesamenu.c32 APPEND outra_configuracao.conf
Vejamos então como criar submenus dessa forma. Vamos criar um menu principal e dois menus secundários. No menu principal, o usuário escolherá o idioma, e nos menus secundários, ele verá as opções traduzidas para o idioma dele. Para isso, vamos criar três arquivos:
- isolinux.cfg:
DEFAULT vesamenu.c32 TIMEOUT 300 PROMPT 0 LABEL menu_ptbr menu label Portugues brasileiro kernel vesamenu.c32 append menu_ptbr.cfg LABEL menu_en menu label English kernel vesamenu.c32 append menu_en.cfg
- menu_ptbr.cfg:
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 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 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 - LABEL back menu label < ^Voltar kernel vesamenu.c32 append isolinux.cfg
- menu_en.cfg:
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 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 memtest menu label Memory ^Test kernel /boot/memtest86 append - LABEL hd menu label Boot from first ^hard disk localboot 0x80 append - LABEL back menu label < ^Back kernel vesamenu.c32 append isolinux.cfg
Observe que em ambas as formas de se criar submenus mostradas acima é possível a partir de qualquer menu chamar o menu principal, especificando o arquivo "isolinux.cfg". Aliás, como os menus são independentes um do outro (a idéia é a de produzir submenus, mas na verdade estamos criando menus novos), é possível chamar qualquer menu a partir de qualquer menu, bastando para isso especificar o arquivo de configuração que define o menu que desejamos exibir. É possível também definir para cada menu aparências diferentes, visto que são na verdade menus completamente independentes.
Finalmente, convém observar que o resultado visual e funcional de todas as formas mostradas acima é o mesmo. Cabe a você escolher uma das formas apresentadas e montar sua estrutura de menus.
Dividindo o arquivo de configuração em partes
Você pode dividir o arquivo "isolinux.cfg" em arquivos menores para tornar sua configuração do ISOLINUX mais organizada. Isso é útil principalmente se o menu que você pretende criar possui muitas opções ou se você pretende manter em arquivos separados as definições de menus e as definições de formatação.
A tag usada para isso é a tag INCLUDE, cuja sintaxe e descrição encontra-se a seguir.
INCLUDE filename [tagname]
Inclui no local em que está inserida o conteúdo do arquivo especificado como parâmetro. Admite um segundo parâmetro, não obrigatório, que pode ser preenchido com um nome. Se esse parâmetro for passado, então o conteúdo do arquivo é tratado como se fosse um submenu.
Aproveitando o exemplo do submenu visto anteriormente, vamos ver como poderíamos colocar o submenu dentro de um arquivo à parte para reduzir o tamanho do arquivo "isolinux.cfg" (observe que o que faremos a seguir não alterará nem a funcionalidade, nem a visualização dos menus, mas apenas a organização dos arquivos).
Podemos fazer isso usando a tag INCLUDE com apenas um parâmetro:
- isolinux.cfg:
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 boot=live nopersistent rw quiet splash LABEL hd MENU LABEL Iniciar a partir do ^disco-rigido LOCALBOOT 0x80 APPEND - MENU BEGIN advanced INCLUDE avancadas.cfg MENU END
- avancadas.cfg:
MENU LABEL Opcoes ^avancadas LABEL text_only MENU LABEL Iniciar o Linux em modo ^texto KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND BOOT=live boot=live nopersistent textonly rw quiet LABEL memtest MENU LABEL ^Testar a memoria KERNEL /boot/memtest86 APPEND - LABEL mainmenu MENU LABEL ^Voltar MENU exit
Ou usando a tag INCLUDE com dois parâmetros, reduzindo ainda mais o arquivo "isolinux.cfg":
- isolinux.cfg:
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 boot=live nopersistent rw quiet splash LABEL hd MENU LABEL Iniciar a partir do ^disco-rigido LOCALBOOT 0x80 APPEND - INCLUDE advanced.cfg advanced
- advanced.cfg:
MENU LABEL Opcoes ^avancadas LABEL text_only MENU LABEL Iniciar o Linux em modo ^texto KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND BOOT=live boot=live nopersistent textonly rw quiet LABEL memtest MENU LABEL ^Testar a memoria KERNEL /boot/memtest86 APPEND - LABEL mainmenu MENU LABEL ^Voltar MENU exit
Exibindo apenas o prompt "boot: "
Há pessoas que preferem exibir em seu LiveCD apenas o prompt "boot: ", assim como fez o Carlos Morimoto no LiveCD do Kurumin, deixando o usuário livre para digitar as opções de boot que ele deseja ativar ou apenas pressionar ENTER (ou mesmo aguardar) para acionar o boot do LiveCD com as opções padrão.
Nesse caso, o arquivo "isolinux.cfg" apresentará algumas alterações com relação aos arquivos exemplo que estamos vendo até agora.
Vejamos, por exemplo, o arquivo "isolinux.cfg" do LiveCD do Kurumin:
DEFAULT linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=791 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix TIMEOUT 200 PROMPT 1 DISPLAY boot.msg F1 boot.msg F2 f2 F3 f3 LABEL knoppix KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=791 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix LABEL kurumin KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=791 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix LABEL linux KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=normal initrd=minirt.gz nomce apm=power-off BOOT_IMAGE=knoppix LABEL memtest KERNEL memtest APPEND initrd= LABEL expert KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us acpi=off vga=791 initrd=minirt.gz nomce apm=power-off BOOT_IMAGE=expert LABEL fb1024x768 KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=791 xmodule=vesa screen=1024x768 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix LABEL fb800x600 KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=788 xmodule=vesa screen=800x600 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix LABEL fb640x480 KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=785 xmodule=vesa screen=640x480 initrd=minirt.gz nomce quiet apm=power-off BOOT_IMAGE=knoppix LABEL failsafe KERNEL linux26 APPEND ramdisk_size=100000 init=/etc/init lang=us vga=normal atapicd nosound acpi=off noapic noscsi nodma noapm nousb nopcmcia nofirewire noagp nocups noalsa nomce nodhcp xmodule=vesa initrd=minirt.gz BOOT_IMAGE=knoppix LABEL userdef KERNEL linux26 APPEND
Observemos primeiramente que a tag DEFAULT especifica uma das opções de boot, e não mais o arquivo "vesamenu.c32", o que significa dizer que não teremos um menu.
Em segundo lugar, o valor da tag PROMPT foi configurado como 1, dizendo que o prompt "boot: " sempre deve ser exibido. Se fosse definido como 0, como não há um menu de boot, a opção padrão seria acionada assim que o ISOLINUX fosse carregado, não dando tempo ao usuário de escolher outra opção.
Perceba, além disso, que aparecem quatro novas tags antes das definições das opções de boot. Essas são, provavelmente, as únicas personalizações que podemos fazer quando queremos exibir apenas o prompt "boot: ". Vou explicá-las nos tópicos a seguir.
Além dessas, você pode utilizar a tag SAY, quando não quiser exibir o conteúdo de um arquivo de texto inteiro, mas apenas uma mensagem.
SAY message
Exibe na tela a mensagem passada como parâmetro.
Veja a seguir um exemplo de utilização da tag SAY:
DEFAULT live TIMEOUT 300 PROMPT 1 SAY Bem vindo ao Linux. SAY Digite a opcao de boot a seguir ou pressione ENTER para a opcao padrao. LABEL live KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND boot=live nopersistent rw quiet splash LABEL text_only KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND boot=live nopersistent textonly rw quiet LABEL memtest KERNEL /boot/memtest86 APPEND - LABEL hd LOCALBOOT 0x80 APPEND -
A tag DISPLAY
Reservei um tópico somente para essa tag porque ela possui diversas aplicações dentro do ISOLINUX. Sua sintaxe básica é a seguinte:
DISPLAY filename
Exibe na tela o conteúdo do arquivo de texto passado como parâmetro.
É importante observar que este arquivo pode estar tanto no formato DOS quanto no formato UNIX e que alguns caracteres ASCII não-imprimíveis (são caracteres especiais, que não são visualizados na tela) podem ser usados para acrescentar ao conteúdo desse arquivo alguma funcionalidade ou formatação. Esse tópico será dedicado a falar desses caracteres.
Não tratarei todos os caracteres possíveis aqui, mas apenas os que, a julgar pelos exemplos em arquivos de configuração que encontrei, achei mais importantes. Se quiser saber todos os caracteres ASCII que são reconhecidos pelo ISOLINUX, consulte a documentação do ISOLINUX.
Caractere EM
- Código decimal: 25
- Código hexadecimal: 19
- Código octal: 031
- Combinação de teclas para o vim: CTRL + Y
Para inserir no arquivo de texto esse e os outros caracteres ASCII que vierem a seguir, você tem duas opções:
A primeira delas é utilizar um dos comandos a seguir, que insere o caractere ASCII no final do arquivo que é lhe passado como parâmetro:
$ printf "\xNN" >> arquivo $ printf "\NNN" >> arquivo
onde NN é o código hexadecimal e NNN é o código octal do caractere ASCII em questão.
Assim, poderíamos inserir o caractere EM em um arquivo de texto usando um dos comandos:
$ printf "\x19" >> arquivo $ printf "\031" >> arquivo
Uma dica é executar esse comando para inserir o caractere em um arquivo temporário, abrir esse arquivo com o kwrite, abrir o arquivo no qual você deseja inserir o caractere em outra janela do kwrite e finalmente copiar e colar o caractere de um arquivo para o outro.
A segunda opção é utilizar o vi, o vim (editores de texto de linha de comando) ou o gvim (versão do vim para GNOME) para escrever o arquivo de texto. Para quem não tem intimidade com linha de comando, eu recomendo este último (foi o que eu utilizei), que você pode instalar usando o comando a seguir:
# apt-get install vim-gnome
Abra o arquivo utilizando um dos editores acima mencionados (o vi, o vim ou o gvim), pressione a tecla i para entrar no modo de inserção de texto, posicione o cursor na posição onde você deseja inserir o caractere, pressione CTRL + V e, finalmente, pressione a combinação de teclas fornecida para formar aquele caractere (que, no caso do caractere EM, seria CTRL + Y). Observe que isso não funciona em outros editores de texto, como o nano, o kedit ou mesmo o kwrite.
Não entrarei em mais detalhes sobre a utilização desses editores de texto pois não é o foco deste artigo explicar seu funcionamento. Quem desejar obter mais informações, pode acessar esta página.
Não se preocupe se alguns desses caracteres não apresentarem aplicação imediata, como esse que acabamos de ver. Voltaremos a falar deles no próximo tópico.
Caractere FF
- Código decimal: 12
- Código hexadecimal: 0C
- Código octal: 014
- Combinação de teclas para o vim: CTRL + L
Caractere SI
- Código decimal: 15
- Código hexadecimal: 0F
- Código octal: 017
- Combinação de teclas para o vim: CTRL + O
SIbgfg
onde bg e fg são números hexadecimais que definem, respectivamente, a cor de fundo e a cor de frente. Os possíveis números que são aceitos nesses campos estão listados a seguir junto com as cores que determinam:
0 = black 8 = dark grey 1 = dark blue 9 = bright blue 2 = dark green a = bright green 3 = dark cyan b = bright cyan 4 = dark red c = bright red 5 = dark purple d = bright purple 6 = brown e = yellow 7 = light grey f = white
Caractere CAN
- Código decimal: 24
- Código hexadecimal: 18
- Código octal: 030
- Combinação de teclas para o vim: CTRL + X
CANfilenameNOVA_LINHA
Onde filename é o nome do arquivo que contém a imagem a ser exibida, com extensão ".rle".
Para criar uma imagem com essa extensão, você precisará utilizar um script que vem com o ISOLINUX.
Primeiramente, crie uma imagem no GIMP com largura 640 pixels e altura menor que 480 pixels (200 a 300 pixels seria a altura ideal), converta-a para 15 pixels, indexada e salve-a como "splash.bmp". Em seguida, execute os dois comandos a seguir no terminal:
$ bmptoppm splash.bmp > splash.ppm $ ppmtolss16 '#ffffff=7' < splash.ppm > splash.rle
Se você não conseguir executar o primeiro comando, instale o pacote netbpm e tente novamente:
# apt-get install netbpm
Não entrarei em muitos detalhes aqui a respeito disso. Eu já apresentei na primeira parte do artigo uma forma muito mais prática de se colocar uma imagem de fundo (bem verdade, no entanto, que isso requer a exibição de um menu). Quem quiser saber mais informações sobre como exibir uma imagem de fundo por esse método pode consultar uma das seguintes páginas:
- http://syslinux.zytor.com/wiki/index.php/SYSLINUX#Display_graphic_from_filename:
- https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
- http://www.sweb.cz/Frantisek.Rysanek/splash/isolinux-splash-HOWTO.html
Voltando ao arquivo de configuração do ISOLINUX encontrado no LiveCD do Kurumin, que foi exibido no tópico anterior, observe que a tag DISPLAY ordena que seja exibido o conteúdo do arquivo "boot.msg".
Se você tiver acesso ao LiveCD do Kurumin e tiver a curiosidade de abrir esse arquivo, verá que ele contém apenas uma linha (para facilitar a visualização e a compreensão desse artigo, colocarei os caracteres ASCII não-imprimíveis entre sinais de asterisco):
*SI*17*FF**CAN*logo.16
O arquivo "logo.16" provavelmente é a imagem de fundo que vemos na tela de boot do LiveCD. A única utilidade do arquivo "boot.msg" então é exibir essa imagem e definir a cor do prompt "boot: ", já que nenhuma outra coisa é exibida na tela de boot do LiveCD do Kurumin.
No LiveCD do Ubuntu, há um arquivo "isolinux.txt" com o seguinte conteúdo:
*CAN*splash.rle This is the Ubuntu Live CD. Press *DC3*F1*DC4*control and F then 1*ETB* for help and advanced options. For the default live system, press ENTER.
Se você tiver a curiosidade de copiar esse arquivo "isolinux.txt", juntamente com o arquivo "splash.rle" nele referenciado, para a pasta de testes, criar um arquivo "isolinux.cfg" com o conteúdo a seguir, só para fins de teste mesmo, verá a imagem a seguir na tela da sua máquina virtual.
DEFAULT live TIMEOUT 0 PROMPT 1 DISPLAY isolinux.txt LABEL live KERNEL /boot/vmlinuz INITRD /boot/initrd.gz APPEND BOOT=live boot=live nopersistent rw quiet splash
Vale observar que eu só consegui identificar os caracteres nos arquivos citados nesse tópico porque eu utilizei o gvim. Se você tentar abri-los utilizando qualquer outro editor de texto, como o kwrite, por exemplo, verá no lugar dos caracteres ASCII símbolos estranhos.
Exibindo textos na tela, uso das teclas F1 a F12
As teclas F1 a F12 no ISOLINUX possuem a função de exibir textos na tela. Configurando seu uso, nós podemos implementar em nosso LiveCD um sistema de ajuda de boot. A maioria dos LiveCDs costuma associar a essas teclas textos que informam ao usuário as opções de boot e os parâmetros que podem ser passados para o kernel.
No arquivo de configuração do ISOLINUX, as tags responsáveis pela configuração das teclas F1 a F12 apresentam a seguinte sintaxe básica:
F[1-12] filename
Exibe na tela o conteúdo do arquivo passado como parâmetro toda vez que a tecla em questão for pressionada. Tem funcionamento semelhante à tag DISPLAY.
Vejamos como podemos montar um menu de ajuda bastante interessante, como o que encontramos no DVD de instalação do Debian. Para isso, na pasta de teste, crie os arquivos que mostrarei a seguir (explicações serão dadas mais adiante):
- isolinux.cfg:
DEFAULT vesamenu.c32 TIMEOUT 300 PROMPT 0 INCLUDE menu.cfg
- menu.cfg:
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 - LABEL help MENU LABEL ^Ajuda CONFIG ajuda.cfg
- ajuda.cfg:
PROMPT 1 DISPLAY f1.txt TIMEOUT 0 INCLUDE menu.cfg LABEL menu CONFIG isolinux.cfg F1 f1.txt F2 f2.txt F3 f3.txt
Nos arquivos a seguir são utilizados os caracteres ASCII não-imprimíveis explicados no tópico anterior. Ao gerar esses arquivos, você deve gerar esses caracteres por um dos métodos já explicados.
- f1.txt:
*EM**FF**SI*0fAJUDA DE BOOT *SI*07Este e o menu de ajuda. Abaixo, voce ve a lista de topicos tratados nesta ajuda. Para acessar um dos topicos, pressione a tecla de funcao correspondente. A qualquer momento voce pode iniciar o sistema, digitando no prompt "boot: " as opcoes de boot e pressionando ENTER. Se desejar retornar ao menu principal, digite menu e pressione ENTER. *SI*0fIndice Tecla Topico *SI*09F1*SI*07 Esta pagina, o indice da ajuda *SI*09F2*SI*07 Pre-requisitos para executar o LiveCD *SI*09F3*SI*07 Opcoes de boot para utilizar este LiveCD
- f2.txt:
*EM**FF**SI*0fPRE-REQUISITOS PARA EXECUTAR O LIVECD Configuracao minima: *SI*07Processador Intel Pentium II 266 MHz ou equivalente Memoria RAM de 196 MB *SI*0fConfiguracao recomendada: *SI*07Processador AMD Athlon 1.0 GHz ou equivalente Memoria RAM de 512 MB *SI*0fPressione *SI*09F1*SI*0f para voltar ao indice da ajuda ou digite a opcao de boot desejada epressione ENTER para inicia-la.
- f3.txt:
*EM**FF**SI*0fOPCOES DE BOOT PARA UTILIZAR ESTE LIVECD live *SI*07Inicia o Linux normalmente, em modo grafico. Essa e a melhor forma de utilizar o Linux e tambem a opcao padrao deste LiveCD. *SI*0ftext_only *SI*07Inicia o Linux em modo texto. Escolhendo essa opcao, voce pode entrar diretamente no console do Linux, sem ter que passar pelo ambiente grafico. Para iniciar o ambiente grafico a partir do console, basta executar o comando startx. *SI*0fmemtest *SI*07Nao inicia o Linux. Ao inves disso, inicia o MEMTEST86, um utilitario de teste de memoria que diagnosticara erros na memoria do seu computador. *SI*0fhd *SI*07Nao inicia o Linux. Ao inves disso, inicia o sistema operacional instalado no primeiro disco-rigido do seu computador. *SI*0fPara usar uma dessas opcoes de boot, digite-a no prompt "boot: " e pressione ENTER, como no exemplo a seguir. *SI*07boot: text_only *SI*0fPressione *SI*09F1*SI*0f para voltar ao indice da ajuda ou digite a opcao de boot desejada epressione ENTER para inicia-la.
Vou explicar agora o que fizemos com esses arquivos.
Em primeiro lugar, separamos as opções de boot em um arquivo a parte ("menu.cfg") para que pudéssemos reutiliza-las. Observe que a linha "INCLUDE menu.cfg" aparece tanto no arquivo "isolinux.cfg" quanto no arquivo "ajuda.cfg". Com isso, o usuário pode, do menu de ajuda, acionar qualquer uma das opções definidas para o menu principal.
No arquivo "ajuda.cfg" definimos o menu de ajuda. Nele não aparecem as opções do menu principal, apenas textos de ajuda e o prompt "boot: ", como você verá nas figuras a seguir. Então, se o usuário quiser acionar uma das opções definidas para o menu principal, deverá digitar o nome da opção no prompt "boot: " e apertar ENTER.
Observe que nesse arquivo foi definida uma nova opção de boot, "menu", que permite ao usuário, se acionada, voltar ao menu principal. Ela utiliza o mesmo mecanismo de submenus, explicado em um dos tópicos anteriores.
Observe também que a tag PROMPT está definida como 1, indicando que o prompt "boot: " deve ser sempre mostrado, e que a tag TIMEOUT está definida como 0, desabilitando a contagem regressiva para a execução da ação padrão.
Há, finalmente, a tag DISPLAY, indicando que deve ser exibido o conteúdo do arquivo "f1.txt" assim que for exibido o menu e as tags F1, F2 e F3, informando que devem ser exibidos os conteúdos dos arquivos "f1.txt", "f2.txt" e "f3.txt", quando forem pressionadas as teclas F1, F2 e F3, respectivamente.
Para entender melhor o funcionamento desse modelo de menu de ajuda que apresentei aqui, recomendo que você crie esses arquivos e teste o menu em uma máquina virtual. O resultado deve ser este:
Como eu havia dito em um artigo anterior, no qual expliquei os passos gerais para a criação de um LiveCD, a criação de LiveCDs é um assunto muito vasto. Nos artigos seguintes, focarei individualmente em cada aspecto da criação de um LiveCD. Nesse artigo, que foi dividido em duas partes, dada a sua extensão, vimos de quantas maneiras podemos personalizar o gerenciador de boot. Espero que tenham gostado e que possam tirar proveito desse artigo na construção de seus próprios LiveCDs.
Ainda não decidi o tema do próximo artigo, mas assim que decidir colocarei a mão na massa.
Um abraço a todos e até a próxima.
Fontes
http://syslinux.zytor.com/wiki/index.php/ISOLINUX
http://syslinux.zytor.com/wiki/index.php/SYSLINUX
http://syslinux.zytor.com/wiki/index.php/Menu
http://syslinux.zytor.com/wiki/index.php/Comboot/menu.c32
http://syslinux.zytor.com/wiki/index.php/Common_Problems
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
http://www.vivaolinux.com.br/artigo/Fundamentos-do-sistema-Linux-comandos-do-Linux/?pagina=4
1 comentários:
Artigo publicado no Viva o Linux:
http://www.vivaolinux.com.br/artigo/Guia-de-referencia-do-ISOLINUX-(parte-2)/
Postar um comentário