Arranque de Linux Mint 13 mediante PXE (instalación y configuración)

Una de las cosas que más me llamaron la atención durante mis estudios de informática fueron los clientes ligeros. Equipos con hardware muy básico que cargaban un sistema operativo al vuelo proporcionado por un servidor de la red, en el cuál recaía toda la carga. Técnica que reduce el gasto en hardware y licencias de software ya que sólo sería necesario invertir en un buen servidor que se encargaría de responder a las solicitudes de los equipos cliente y enviarle los datos necesarios para reproducir un sistema operativo precargado.

Es una tecnología 100% escalable y que permitiría al administrador de sistemas llevar un control sumamente eficiente de los equipos de la red, ya que sólo tendría que encargarse de gestionar un único equipo (el servidor) “olvidándose” de todos los demás, con todas las ventajas que ello conlleva. Teniendo también una serie de inconvenientes como no podía ser menos.

Por eso desde los inicios de este blog he querido crear una entrada explicando el proceso de la forma más fiel y sencilla posible, para que “cualquiera” pueda crear un servidor PXE que dote de las características de un cliente ligero a todos los equipos de su red.

¿Qué es PXE?

Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados. (Según la Wikipedia)

Y al fin ha llegado el momento, vamos a ver cómo instalar y configurar un servidor PXE en un sistema operativo Debian Squeeze (que actuará como servidor). Este servidor enviará un Linux Mint 13 (con MATE como entorno de escritorio) a los clientes de la red que lo soliciten.

El proceso de instalación y configuración de todas las herramientas necesarias es un poco largo, que no quiere decir complicado, por ello trataré de explicarlo de la mejor forma que pueda y con la mayor cantidad de información posible.

A partir de ahora sería bueno iniciar sesión como root en nuestro servidor Debian. Los datos del ejemplo son los siguientes:

  • IP del servidor (Debian): 192.168.1.5
  • Dirección de red: 192.168.1.0
  • Dirección broadcast: 192.168.1.255
  • Máscara de red: 255.255.255.0

He de decir antes de empezar que no voy a explicar cosas básicas de otros servicios, como por ejemplo qué es cada sentencia en el fichero de configuración del servicio DHCP, ni las sentencias propias de NFS, ni los comandos de Linux, etc. Evitando así descentrarnos del tema y mezclar conceptos innecesariamente.

1.- Instalar las herramientas requeridas (DHCP, TFTP, Syslinux, NFS):

apt-get install isc-dhcp-server tftpd-hpa syslinux nfs-kernel-server

La instalación del paquete tftpd-hpa nos preguntará qué directorio utilizaremos como directorio raíz, lo dejaremos tal cuál está (/srv/tftp).

DHCP es un protocolo encargado de proporcionar configuraciones de red a los equipos de la misma, dotando de acceso a la red a los equipos cliente que lo soliciten; TFTP es un protocolo con una funcionalidad semejante a la de FTP sólo que mucho más sencillo, de ahí su nombre (Trivial File Transfer Protocol) , se encargará de descargar los ficheros requeridos por PXE; Syslinux nos proporciona los cargadores de arranque que se servirán cuando se solicite, mientras que NFS enviará los ficheros del sistema operativo al cliente.

2.- Configurar el servicio DHCP:

Para configurar el servicio DHCP hay que añadir lo siguiente al final del fichero /etc/dhcp/dhcpd.conf:

subnet 192.168.1.0 netmask 255.255.255.0{

range 192.168.1.10 192.168.1.255;

option broadcast-address 192.168.1.255;

filename “pxelinux.0”;

}

La sentencia filename indicará a los clientes cuál es el fichero ejecutable que deberá ser cargado por el protocolo PXE. En la imagen siguiente puede verse cómo quedaría la configuración en el propio fichero, puede verse una sentencia a mayores next-server, esta sólo es necesario añadirla en caso de que el servicio TFTP no se encuentre en el mismo servidor que el servicio DHCP, siendo así habría que poner mediante la cláusula next-server la dirección del servidor TFTP

Para terminar con la configuración del servicio DHCP hay que indicarle cuál será la interfaz encargada de escuchar las peticiones de los clientes, para ello editamos el fichero /etc/default/isc-dhcp-server dejándolo así (en caso de que la interfaz sea eth0):

INTERFACES=”eth0″

Reiniciamos el servicio con:

service isc-dhcp-server restart

3.- Configurar TFTP:

Lo primero es crear el directorio pxelinux.cfg dentro de /srv/tftp para ello:

mkdir /srv/tftp/pxelinux.cfg

Después tenemos que crear el fichero default dentro de la carpeta creada en el paso anterior, el fichero default digamos que será el encargado de crear el menú de arranque que se mostrará una vez cargado PXE.

touch /srv/tftp/pxelinux.cfg/default

Más adelante rellenaremos el fichero default, ahora vamos a obtener los cargadores de arranque que se entregarán por PXE a los clientes. Estos cargadores de arranque nos los proporciona syslinux y sólo tenemos que copiarlos de su carpeta a la raíz del servidor TFTP:

cp /usr/lib/syslinux/vesamenu.c32 /srv/tftp
cp /usr/lib/syslinux/menu.c32 /srv/tftp
cp /usr/lib/syslinux/chain.c32 /srv/tftp
cp /usr/lib/syslinux/mboot.c32 /srv/tftp
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp

4.- Descargar Linux Mint:

Dentro de /srv/tftp creamos un directorio llamado “linuxmint” para meter ahí todo lo de este sistema operativo y tener un poco organizada la carpeta del servidor TFTP:

mkdir /srv/tftp/linuxmint

cd /srv/tftp/linuxmint

wget http://mint-mirror.gwendallebihan.net/isos/stable/13/linuxmint-13-mate-dvd-32bit.iso

Una vez descargada la imagen la montamos en una carpeta del equipo y copiamos todos los ficheros dentro de la carpeta “linuxmint”:

mkdir /mnt/mint

mount -o loop /srv/tftp/linuxmint/linuxmint-13-mate-dvd-32bit.iso /mnt/mint

cp -R /mnt/mint/* /srv/tftp/linuxmint

Ahora podemos desmontar la imagen y eliminarla para reducir el tamaño de espacio ocupado:

umount /mnt/mint

rm /srv/tftp/linuxmint/linuxmint-13-mate-dvd-32bit.iso

Y para finalizar le damos permisos de escritura, lectura y ejecución para todos a la carpeta “linuxmint”:

chmod -R 777 /srv/tftp/linuxmint

5.- Configurar el fichero default de PXE:

Ahora que tenemos cada cosa en su sitio podemos proceder con la configuración del fichero default que deberá contener lo siguiente:

default vesamenu.c32
prompt 0
timeout 300
ONTIMEOUT LinuxMint

menu rows        5
menu vshift        6
menu color border    0 #ffffffff #ee000000 std
menu color title    0 #ffffffff #ee000000 std
menu color sel        0 #ffff0000 #85000000 std
menu color unsel    0 #ffffffff #ee000000 std
menu color pwdheader    0 #ff000000 #99ffffff rev
menu color pwdborder    0 #ff000000 #99ffffff rev
menu color pwdentry    0 #ff000000 #99ffffff rev
menu color hotkey    0 #ff00ff00 #ee000000 std
menu color hotsel    0 #ffffffff #85000000 std
menu resolution        800 600

LABEL LinuxMint
MENU LABEL ^1) Arrancar Linux Mint 13 (MATE) Live
KERNEL linuxmint/casper/vmlinuz
APPEND boot=casper netboot=nfs nfsroot=192.168.1.5:/srv/tftp/linuxmint initrd=linuxmint/casper/initrd.lz splash —

6.- Por último sólo nos queda configurar NFS:

La configuración del sistema NFS es muy sencilla, sólo debemos añadir la siguiente linea al final del fichero /etc/exports:

/srv/tftp/linuxmint

Esto hará que dicha carpeta sea compartida mediante NFS por la red, por tanto será accesible para PXE y de ahí es de donde cargará todo lo necesario. Ponemos la carpeta a compartir con el comando:

exportfs -av

Y ya habremos terminado con la configuración del servidor PXE y todo lo requerido para empezar a distribuir el sistema operativo Linux MInt 13 por nuestra red, de forma que sea accesible para todos y cada uno de los equipos que en ella se encuentren y tengan una tarjeta de red compatible con PXE (todas hoy en día).

Sólo faltaría configurar el arranque del cliente para que se realice por red utilizando PXE, normalmente suele haber un botón que sirve para seleccionar el dispositivo desde el que hacer el arranque en el cuál se puede seleccionar la tarjeta de red. Hay que tener en cuenta que puede que esta opción esté desactivada en la BIOS por lo que habría que activarla. En VMWare la opción mencionada sería la siguiente (ESC for Boot Menu):

Si tienes algún tipo de comentario no dudes en hacerlo.

Relacionado:

By | 2017-09-26T22:09:50+00:00 septiembre 2nd, 2012|Administrador de sistemas, Informática, Linux|7 Comments

About the Author:

Desarrollador de software de profesión, apasionado de la informática y todo lo relacionado con la tecnología

7 Comments

  1. Javi marzo 20, 2014 at 10:55 pm - Reply

    Hola, me parece bastante interesante tanto el video como la explicacion escrita pero tengo unas dudas. En mi lugar he realizado el proceso en un unico servidor, es decir, todo os servicios los tengo en el mismo servidor, no se si esto puede provocar cambios en el proceso… y la iso que yo he usado de prueba es ubuntu 12.04. Digamos que todo me funciona correctamente, me aparece el menu con la opcion de arrancar el sistema operativo, pero cuando la selecciono no realiza ninguna accion, sencillamente me salte este mensaje: APPEND boot=casper netboot=nfs nfsroot=192.168.1.5:/srv/tftp/linuxmint initrd=linuxmint/casper/initrd.lz splash –

    Espero su respuesta, un saludo.

    • dolphin marzo 20, 2014 at 11:22 pm - Reply

      Hola Javi, El proceso que se muestra en este tutorial está  hecho también en un único servidor, así que si lo has seguido debería estar más o menos bien, el problema que veo según lo que me comentas es que dependiendo del sistema operativo que se utilice cambian las opciones de configuración, es diferente la configuración para un Linux Mint, que para un Ubuntu, que para un instalador de Windows, etc.

      El “problema” estaría en el fichero “default” que debes adaptarlo a los ficheros del disco de Ubuntu, por eso no te arranca porque probablemente los ficheros estén en diferentes ubicaciones que si se usa un Linux Mint y no los encuentra. Puedes realizar una búsqueda por internet de cómo arrancar Ubuntu por PXE, yo lo tenía hecho con Ubuntu pero estaba en un disco que he formateado y ya no tengo las configuraciones, por lo que no puedo decirte exactamente como era, puedo decirte que si no me equivoco deberías localizar el fichero “initrd.lz” y adaptar la ruta a dónde se encuentre (puede que cambie el nombre en Ubuntu, por ejemplo “initrd.gz”) para ponerla en el “initrd”, puede también que tengas que cambiar el “boot” ya que puede que Ubuntu no utilice el “casper”. o utilice otra cosa

      Por lo demás en un principio, si te lo detecta y te lo muestra en el menú lo tienes todo bien, el problema cómo te digo está en la configuración de arranque de la “iso” de Ubuntu, que cambian los ficheros y configuración.

      Esto es algo que no se hace a menudo, por eso no puedo decirte exactamente cómo es, pero cualquier duda que tengas trataré de ayudarte en todo lo que pueda. Échale un vistazo a lo que te digo y si no consigues solucionarlo me cuentas y miramos entre los dos a ver cómo puede hacerse. Aun así te recomiendo seguir este paso a paso con un Linux Mint ya que te ayudará a comprender cómo funciona y luego lo adaptas a un Ubuntu.

      Lo dicho, aquí estoy para lo que necesites.

      Saludos

      • Javi marzo 22, 2014 at 6:36 pm - Reply

        Muchas gracias por la respuesta anterior.

        Me voy a dedicar por completo a la idea real que quiero realizar. Es preparar un servidor con sistema operativo fedora con todo lo necesario para que proporcione arranque por PXE y con el servicio de instalacion desatendida kickstart. La iso con la que realizare las instalaciones desatendida de futuros cliente sera la de ubuntu 12.04. Si puedes darme alguna indicacion u opinion no me vendria mal.

        Un saludo.

        • dolphin marzo 22, 2014 at 7:01 pm - Reply

          Hola de nuevo Javi, pues la verdad no conozco Kickstart y nunca lo he probado, así que no puedo ayudarte mucho sobre este tema. Lo siento.

          Saludos.

  2. vysvik noviembre 9, 2014 at 1:35 am - Reply

    Hola Soy Victor y quiero agradecerte por el tuto,

    ya que me fue de una gran utilidad y de hecho por el fue que lo logré.

    Es el mejor de todos los que vi en foros.

    Por último una duda:

    yo quiero vitrualizar win 7 en clientes.

    Esto lo lograria con el comando ltsp-build-client, para hacer copia del servidor con las maquinas virtuales ya creadas, en ves de cargar el iso de mint13, y sin cambiar el proceso restante?

    Mil gracias.

  3. Lenny Garcia noviembre 11, 2017 at 11:12 pm - Reply

    Hola
    Si yo quiero es trabajar con ubuntu 16.04 ¿cuales serian los cambios que debo hacer?

    • Alberto Méndez noviembre 14, 2017 at 7:29 pm - Reply

      Hola Lenny, pues la verdad que hace mucho que no implemento una instalación por PXE por lo que no podría decirte. En un principio bastaría con utilizar la ISO de Ubuntu en vez de la de Linux Mint y adaptar los comandos cuya sintáxis haya podido cambiar después de tanto tiempo, pero la diferencia no debería ser mucha.
      Saludos

Leave A Comment