.. _pxe-sys-conf:
Configuración de :program:`syslinux`
====================================
Para escribir la configuración es necesario tener presentes tres cosas:
* Al establecer la estructura de ficheros, se decidió que todo lo necesario
para la configuración de :program:`syslinux` se encuentra dentro del
subdirectorio :file:`/srv/tftp/cfg`.
* Los ficheros de arranque de los sistemas operativos se encuentran dentro de
:file:`/srv/tftp/ssoo`.
* El directorio de trabajo, sin embargo, es :file:`/srv/tftp/bios/`\ [#]_\ [#]_.
Esto determina cuál será la ruta relativa que deberemos usar con los distintos
ficheros que refiramos en la configuración:
* Los módulos podemos citarlos sin más::
KERNEL reboot.c32 -w
* La referencia a ficheros de configuración, imágenes, etc. que se encuentren
bajo :file:`/srv/tftp/cfg` deberemos hacerla con :file:`../cfg`. Por ejemplo::
MENU BACKGROUND ../cfg/images/fondo.png
* La referencia a ficheros de los sistemas operativos arrancables deberá hacerse
con :file:`../ssoo`. Por ejemplo::
KERNEL ../ssoo/slitaz/bzImage
Desarrollemos una configuración de ejemplo que ilustre cómo escribirlas.
¿Qué hace nuestra configuración?
--------------------------------
En realidad, nada del otro mundo:
#. Ofrece una primera interfaz sin menú para seleccionar el sistema escribiendo
su etiqueta, a menos que escribamos "*menu*".
#. En tal caso, vuelve a permitir la selección de los mismas sistemas de
arranque, pero a través de un menú no gráfico.
#. Las opciones de arranque son:
- Comprobar la memoria.
- Arrancar `SliTaZ `_.
- Proseguir la secuencia de arranque.
- Reiniciar el ordenador.
- Apagar el ordenador.
.. note:: ¿Y no se puede mostrar directamente el menú no gráfico? Por supuesto,
pero obrar de esta forma da un poco más de juego y permite hacer la
configuración un poco más completa.
Requisitos
----------
Aparte de :program:`memtest` y *SliTaZ*, necesitamos incluir dentro del
subdirectorio :file:`bios/syslinux` los siguientes módulos:
* :file:`ldlinux.c32`.
* :file:`libcom32.c32`
* :file:`libutil.c32`
* `menu.c32 `_
* :file:`poweroff.c32`
* `reboot.c32 `_
Ficheros
--------
Observando estos principios, hagamos una configuración bastante simple que sirva
de modelo:
:file:`cfg/boot.php`
Es el *script* inicial. Se limita a recoger los datos que recibe del cliente
(|MAC| y arquitectura) y pasárselos a su versión de menú. Usa la interfaz más
sencilla de selección.
Los sistemas arrancables están enumerados en :file:`items.cfg`:
.. literalinclude:: files/boot.php.txt
:language: php
:file:`cfg/items.cfg`
Nos vale para ilustrar cómo enumerar algunos sistemas arrancables\ [#]_:
.. literalinclude:: files/items.cfg
:file:`cfg/menu.php`
Es la versión *medio bonita* (la bonita usaría el módulo *vesamenu.c32*) de
la configuración que también proporciona :file:`boot.php`:
.. literalinclude:: files/menu.php.txt
:language: php
El título del menú muestra la arquitectura, el tipo de máquina (los tres
primeros pares de la |MAC|) y la ip del cliente como demostración de que
podemos hacer uso de esos datos para personalizar la configuración
dependiendo del cliente:
.. image:: files/menu-pxe.png
.. rubric:: Notas al pie
.. [#] O su equivalente para arquitecturas *efi32* y *efi64*.
.. [#] Habría que decir más bien :file:`http://192.168.255.1/boos/bios/` o
:file:`tftp://192.168.255.1/bios/`, pero, como usaremos rutas relativas
en la configuración, no debe preocuparnos demasiado la imprecisión.
.. [#] Uno de ellos es `SliTaz `_ que es un linux
mínimo, útil en algunos casos. Sus dos ficheros citados, se extraen de su
imagen *iso* y los parámetros para cargarlo se han copiado de los que
muestra el :program:`syslinux` de arranque de la propia distribución.
.. |MAC| replace:: :abbr:`MAC (Media Access Control)`