PDF de programación - Creando un CDROM autoejecutable con ISOLINUX

Imágen de pdf Creando un CDROM autoejecutable con ISOLINUX

Creando un CDROM autoejecutable con ISOLINUXgráfica de visualizaciones

Publicado el 3 de Mayo del 2017
365 visualizaciones desde el 3 de Mayo del 2017
334,9 KB
61 paginas
Creado hace 13a (18/02/2006)
Creando un CDROM autoejecutable

con ISOLINUX

Sergio González González

HispaLinux, España

sergio.gonzalez@hispalinux.es

Antes de pasar el control al proceso INIT, hay que realizar una serie de tareas. Este documento
trata de explicarlas.

Introducción

Normalmente, las distribuciones creadas a partir del proyecto Metadistros
(http://metadistros.hispalinux.es/) arrancarán desde un CDROM. El proceso de arranque tiene varias
etapas para su consecución, siendo el objetivo de este documento aquella que va desde que la BIOS da el
control al CDROM hasta que el “CDROM” da el control al proceso INIT1. Para ello deberemos crear un
CD capaz de arrancar un sistema (utilizaremos ISOLINUX (http://syslinux.zytor.com/iso.php)) y que
pase el control al proceso INIT en un determinado momento.

Importante: Tanto el desarrollo como el presente documento sólo ha tenido en cuenta las
necesidades (en cuanto a archivos) para lograr pasar el control al proceso INIT en un determinado
momento. Las necesidades particulares de cada metadistribución han de ser cubiertas por el autor
de la misma, esto se refleja en la adicción de nuevos archivos, scripts, etc.

Nota: KNOPPIX (http://www.knoppix.org) y Gentoo (http://www.gentoo.org) han sido dos de las
distribuciones en las cuales se ha basado este desarrollo.

ISOLINUX

Para poder crear un CDROM autoejecutable, en metadistros hacemos uso de ISOLINUX
(http://syslinux.zytor.com/iso.php). Veamos un ejemplo de como crear un CD de estas características con
esta aplicación. Las siguientes secciones mostrarán los archivos y configuraciones utilizadas en
metadistros para crear un CD autoejecutable con ISOLINUX.

1

Creando un CDROM autoejecutable con ISOLINUX

En el ejemplo trabajaremos bajo un directorio vacío: /mnt/metadistros/master. Este será la raíz de
nuestro CD. Antes de proceder, creamos el directorio isolinux, que almacenará los archivos necesarios
para que ISOLINUX cumpla con su misión. Los archivos que hemos de incluir en el directorio
isolinux se listan en las siguientes secciones:

isolinux.bin

Imagen de arranque para los CDs autoejecutables que utilizan “El Torito”. Este archivo lo provee
syslinux (http://syslinux.zytor.com/) 2, copielo al directorio isolinux del CDROM.

isolinux.cat

Este archivo se crea a la hora de hacer la imagen ISO con mkisofs, por lo que no ha de preocuparnos.
Únicamente hemos de tener cuidado de no utilizar ningún archivo con ese nombre bajo el directorio
/mnt/metadistros/master/isolinux. Este archivo se utiliza a la hora de crear un CD
autoejecutable "El Torito", como es nuestro caso.

isolinux.cfg

Archivo de configuración de ISOLINUX. Toda la información necesaria para configurar ISOLINUX está
disponible en su página (http://syslinux.zytor.com/faq.php#config), por lo que no me extenderé mucho
en su explicación.

El cuadro siguiente muestra el archivo de configuración utilizado en metadistros:

default sbm-usuario

timeout 300
prompt 1
kbdmap spanish.kbd
display isolinux.msg
f1 isolinux.msg
f2 f2.msg
f3 f3.msg

label sbm-usuario

kernel vmlinuz.usuario
append lang=es init=/linuxrc apm=power-off hda=scsi hdb=scsi \

hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi \
vga=785 initrd=initrd.gz quiet nomce

label sbm-servidor

kernel vmlinuz.servidor
append lang=es init=/linuxrc verbose apm=power-off hda=scsi \

hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi \
hdh=scsi vga=normal initrd=initrd.gz quiet nomce

label memtest

kernel memtest

2

Creando un CDROM autoejecutable con ISOLINUX

Las opciones listadas en el cuadro anterior serán brevemente explicadas a continuación:

• “default”: opciones por defecto para el arranque por defecto, si no se pasa ningún parámetro en el

arranque, se aplicarán las opciones aquí listadas.

• “timeout”: tiempo de espera antes de comenzar el arranque desde el CD (en unidades de 1/10 s).

• “prompt”: si el valor está a 1, el arranque mostrará un prompt (boot: ). Si el valor está a 0, el arranque

sólo mostrará el prompt si se pulsan las teclas Alt o Shift.

• “kbdmap”: carga el mapa de teclado indicado.

• “display”: muestra el archivo indicado antes del prompt.

• “f1, f2 y f3”: muestra los archivos indicados al pulsar las teclas de función en el prompt.

• “label”: etiqueta que identifica una determinada imagen y sus opciones asociadas (sobreescribirán la

opciones por defecto).

• “kernel”: imagen a utilizar para el arranque.

• “append”: opciones pasadas a la imagen definida en la etiqueta de la que cuelga.

isolinux.msg

En nuestro caso, este archivo contiene el “saludo” inicial de la metadistribución3, y tiene un aspecto
similar a:

^O17^L^Xlogo.16

Sistema Base Metadistros 0.1
Presione las teclas F2 y F3 para ver la ayuda.

http://metadistros.hispalinux.es/

Si se fija, al comienzo del archivo, hay una serie de códigos especiales que ISOLINUX se encarga de
interpretar4. Veamos que hacen estos códigos:

• ^O17 (Ctrl+o17): Establece como color de fondo (primer número) un azul oscuro y de primer plano

(segundo número) un gris claro.

• ^L (Ctrl+l): Borra la pantalla y establece los colores definidos anteriormente.

• ^Xlogo.16 (Ctrl+xlogo.16): muestra el gráfico incluido en el archivo logo.16.

Nota: Si utiliza vi(m) como editor, para teclear los caracteres de control anteriormente listados, ha
de teclearlos en modo visual. De forma que, si queremos añadir el código ^L (Ctrl+L) hemos de
hacer lo siguiente: entramos en modo inserción, si no lo estábamos ya. Pulsamos Ctrl+v para entrar
en modo visual y seguidamente pulsamos Ctrl+l. Una vez realizado esto, ya tendremos
correctamente tecleado el código de control.

3

Creando un CDROM autoejecutable con ISOLINUX

logo.16

Imagen en formato LSS16. Syslinux provee un script (ppmtolss16) en perl para producir este tipo de
imágenes. Estas imágenes se muestran en una resolución de 640x480 pixels y 16 bits de profundidad de
color.

Cuando se entra en modo gráfico, los colores definidos con los códigos antes comentados (por ejemplo:
^014) se tratan de forma distinta: el color de fondo se ignora, y los colores de primer plano se especifican
en la imagen (16 en total). Esto se especifica a la hora de crear la imagen en formato LSS16 con
ppmtolss16.

Veamos como se crea una imagen de este tipo con ppmtolss16, pero antes echemos un vistazo a la
cabecera del script en cuestión:

... if N is != previous pixel, one pixel of color N

... if M > 0 then run length is M+1

littleendian, +17

; magic (littleendian)
; littleendian
; littleendian
; color map, in 6-bit format (each byte is 0..63)

##
## ppmtolss16
##
## Convert a "raw" PPM file with max 16 colors to a simple RLE-based format:
##
## uint32 0x1413f33d
## uint16 xsize
## uint16 ysize
## 16 x uint8 r,g,b
##
## Then, a sequence of nybbles:
##
## N
## ... otherwise run sequence follows ...
## M
## ... otherwise run sequence is encoded in two nybbles,
##
##
## The nybble sequences are on a per-row basis; runs may not extend
## across rows and odd-nybble rows are zero-padded.
##
## At the start of row, the "previous pixel" is assumed to be zero.
##
## BUG: This program does not handle comments in the header, nor
## "plain" ppm format.
##
## Usage:
##
##
##
## Command line options of the form #rrggbb=i indicate that
## the color #rrggbb (hex) should be assigned index i (decimal)
##

ppmtorle16 [#rrggbb=i ...] < input.ppm > output.rle

Como podemos observar, esta breve explicación nos da una idea de como funciona este script.

Antes de poder obtener la imagen en formato LSS16, hemos de seleccionar la imagen a utilizar, esta ha
de estar en formato PPM, con un máximo de 16 colores. Puedes utilizar The Gimp!
(http://www.gimp.org/) para obtenerlo a partir de una imagen, o ImageMagick
(http://www.imagemagick.org/) de la siguiente forma:

4

Creando un CDROM autoejecutable con ISOLINUX

$ convert -depth 8 imagen.png imagen.ppm

Una vez tenemos la imagen en formato PPM, procedemos a transformarla a formato LSS16, para ello,
tecleamos:

$ ppmtolss16 < imagen.ppm > logo.16

Hecho esto, copiamos el archivo logo.16 al directorio isolinux.

Nota: En este apartado es necesario profundizar más, por favor añada lo que crea conveniente.

f2.msg y f3.msg
Los archivos de esta sección son los encargados de mostrar la ayuda al usuario en el arranque.
Normalmente tienen las distintas opciones que se le pueden pasar al prompt en el arranque. Como se ha
definido en el archivo de configuración (la sección de nombre isolinux.cfg), a estos archivos se
accede pulsando las teclas F2 y F3. Su contenido es el siguiente:

Archivo f2.msg

^Y^O0f^L

-

Basic boot options -

||
||
||
||

test or just hit enter if no options are needed.

At the prompt type "sbm-usuario option", "memtest" for RAM

||
||
||
[ F1 to redisplay boot graphic || F3 for additional options ] ||

-

- -

- -

- -

- -

- -

- -

- -

- -

- -

- - -

- - - - - - - - - - - - -

| lang|keymap=es|de|be|bg
=ch|cn|cs|cz
|
|
=da|dk|fi|fr
=it|ja|nl|pl
|
=ru|sk|tr|tw
|
|
=uk

|
|

|
|

- - - - - - - - - - - - -

\
/ (default settings: lang=es and keymap=es )

specify language and/or keymap

-->

Interactive setup for experts

interactive
verbose
showdebug
vga=normal -->

---->

--->

Show information at boot up progress

Show debug information

No-framebuffer mode

install

-->

Install mode (no live CD)

Archivo f3.msg

^Y^O0f^L

- Additional boot options -

||
||

At the prompt type "sbm-usuario option", "memtest" for RAM

test or just hit enter if no options are needed.

||
||

5

||

[ F1 to redisplay boot graphic || F2 for basic options ]

||

Creando un CDROM autoejecutable con ISOLINUX

- - - - - - - - - - - -

| ip=192.168.1.1
| broadcast=192.168.1.255
| netmask=255.255.255.0
| gateway=192.168.1.1

|

|

- - - - - - - - - - - -

\
/ (Set this variables for personal configuration)

Network configuration

ramsize=1000000 >>>

Default maximum size of dynamic ramdisk in kilobytes

-----------

>>>>>>>>>>> not scan for scsi devices

| noscsi
| dofirewire > modprobes firewire modules in initrd (for firew
  • Links de descarga
http://lwp-l.com/pdf3320

Comentarios de: Creando un CDROM autoejecutable con ISOLINUX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad