PXE y un cable de red bastan para arrancar tu ordenador sin disquetera, CD ni USB


En esto del reciclaje tecnológico hay veces que cae en tus manos un ordenador que es como un niño sordo y ciego con el que te tienes que comunicar, un ordenador sin lector de CD y sin disquetera en el que quieres arrancar un sistema operativo e incluso instalárselo. Por otro lado, hay veces que necesitas instalar el mismo sistema operativo masivamente por la razón que sea, en nuestro caso para preparar los equipos con los que damos los talleres. En este caso, aunque los equipos tengan lector de CD, el método tradicional se revela lento e incómodo: preparar tantas copias del instalador en CD como equipos quieras instalar, copias que al cabo de unos meses se quedan desactualizadas por lo que son, prácticamente, de un solo uso.

Si te enfrentas a uno de estos dos casos puedes intentar comunicarte con el ordenador vía LAN, desde otro equipo de la red local, independientemente del sistema operativo que tenga instalado o de que no tenga ninguno. Mediante la red local puedes iniciar un ordenador e instalar un sistema operativo completo después. Para ello necesitamos un equipo que actúe como servidor PXE, al que se conectará el cliente cuando lo encendamos y del que obtendrá los archivos necesarios para arrancar e instalar el sistema operativo completo.

¿Está claro, no?
¿Está claro, no?

Bueno, si el gráfico no ha sido suficiente para ti, sigue leyendo, que en realidad es más fácil de lo que parece.

Cuestiones previas

  • En este caso, asumiremos que el servidor está corriendo sobre un Debian GNU/Linux o una distribución basada en Debian, y que en los clientes queremos instalar Debian Lenny.
  • Asumiremos también que estamos trabajando con una red local del tipo 192.168.1.0, que son la mayoría de ellas.
  • Por último decir, que la instalación, configuración y demás operaciones las haremos desde una consola con permisos de usuario administrador. En las líneas de este pequeño manual indicamos esto con la notación root@server:~#, antes de cada orden que hay que ejecutar como administrador o root.

Requisitos y configuración del equipo cliente

Para poder realizar este tipo de instalación el cliente deberá disponer de la opción de arranque mediante LAN en la BIOS (Basic Input/Output System), y tenerla activada. La BIOS es un software que viene instalado en la placa base de cualquier ordenador y que controla el arranque y detecta todo el hardware de la máquina. Normalmente se accede a él nada más encender el ordenador pulsando la tecla adecuada, «Supr» en casi todos los casos. En la secuencia de arranque (Boot sequence) de la BIOS se listan en orden de prioridad los dispositivos desde los que se puede iniciar un sistema operativo: unidades de CD, disquetes, discos duros… Además, algunas BIOS dan la posibilidad de iniciar el ordenador desde un dispositivo alojado en otro ordenador, a través de una red local. Esta opción es la que activaremos y vamos a usar para arrancar nuestro equipo cliente.

Requisitos y configuración del equipo servidor

Este equipo le proporcionará al ciente una dirección en la red local, y posteriormente los archivos necesarios para arrancar. Estos archivos pueden ser un programa para instalar un sistema operativo completo, o directamente un sistema operativo tipo live. Para proporcionar estos dos servicios nuestro servidor tendrá que tener instalado un Pre-boot eXecution Enviroment (PXE) que se compone de un servidor DHCP, para integrar en la red local al cliente, respondiendo a su solicitud dándole una dirección IP; y un servidor TFTP, que pone a disposición de los clientes un sistema mínimo de arranque, un kernel para descargar en definitiva.

Para poner en funcionamiento ambos servicios, DHCP y TFTP los pasos a seguir son tres: instalar los paquetes necesarios, configurar el servicio e iniciarlo.

Servidor DHCP

Hay varios paquetes para que un ordenador actúe como servidor DHCP. Nosotros utilizaremos dnsmasq.

Instalación.

root@server:~# apt-get install dnsmasq

Configuración. El archivo de configuración (/etc/dnsmasq.conf) trae toda la documentación incrustada en forma de comentarios antes de cada orden. Por defecto todas las órdenes vienen comentadas también, para activarlas borraremos la almohadilla de principio de línea. Las líneas que deben estar activas son las siguientes:

dhcp-range=192.168.1.223,192.168.1.254,12h
dhcp-no-override
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/lib/tftpboot

dhcp-range indica a dnsmasq el rango de IPs que podrán ser asignadas a clientes por nuestro servidor DHCP, y el tiempo que estas direcciones tardan en renovarse. A la hora de elegir un rango hay que tener en cuenta cuántos equipos van a obtener una dirección del servidor, para que no se acaben, y que el máximo es de 1 a 254.
dhcp-no-override es una medida de seguridad para el PXE. Para los curiosos, hay más información en la wiki de etherboot.
dhcp-boot indica el archivo que contendrá la información de arranque. Por convenio se suele llamar simepre pxelinux.0.
enable-tftp le dice a dnsmasq que active sus funciones relacionadas con el servidor TFTP.
tftp-root por último establece la ubicación accesible para los clientes vía TFTP. Por tanto, es aquí donde tendremos que alojar los archivos que necesiten los clientes para arrancar o iniciar un sistema operativo. Podemos designar cualquier ruta, pero de nuevo por convenio se suele indicar /var/lib/tftpboot.

Puesta en marcha.

root@server:~# /etc/init.d/dnsmasq restart

Servidor TFTP

Instalación.

root@server:~# apt-get install tftpd-hpa

Configuración. El fichero de configuración (/etc/default/tftpd-hpa) sólo tiene dos líneas:

RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

RUN_DAEMON viene con la opción «no», por defecto; la cambiamos a «yes». En OPTIONS tenemos que asegurarnos que la ruta que figura sea la misma que en el archivo de configuración de dnsmasq.

Puesta en marcha.

root@server:~# /etc/init.d/tftp-hpa start

Servidor PXE

Pues ya deberías tener listo un servidor PXE para tu red local. Ahora solo te queda descargarte un instalador de la distribución que prefieras, en su versión net-install y colocarla en la ubicación del servidor que hemos definido como accesible a los clientes. En nuestro caso, Debian Lenny. Debian ofrece una versión para instalar por red completamente preparada en un archivo comprimido, así que lo único que hay que hacer es descargarla y descomprimirla:

root@server:~# cd /var/lib/tftpboot
root@server:/var/lib/tftpboot# wget http://ftp.es.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz
root@server:
/var/lib/tftpboot# tar -zxvf netboot.tar.gz

Ya está. Si ahora encendemos nuestro ordenador cliente, tras hacer el recuento de memoria y las demás comprobaciones de hardware, se conectará al servidor PXE e iniciará el instalador de Debian Lenny.

Más sobre el tema

Setting up a server for PXE network booting, en Debian Administrator.
Manual para configurar un servidor PXE, muy completo. Explica la organización que tienen que tener los archivos del servidor a trasferir mediante TFTP, y un resumen de la sintaxis para generar menús para mostrar opciones en el arranque.

Dnsmasq Setup, en la Página oficial de dnsmasq.
Aquí se puede encontrar la manera de configurar dnsmasq no sólo como servidor DHCP, también como servidor DNS.
Ejemplo de archivo de configuración de dnsmasq (/etc/dnsmasq.conf): http://edoceo.com/liber/network-dhcp

PXELinux, en The Syslinux Project. Información exhaustiva para configurar un PXE, incluyendo la puesta en marcha de un servidor DHCP y TFTP.

Imagen: os3. System and networking engineering.

,

8 respuestas a “PXE y un cable de red bastan para arrancar tu ordenador sin disquetera, CD ni USB”

  1. Y en el caso de querer Windows XP en una PC «en blanco»(disco duro vacio) desde Windows server 2003 (Servidor) ??
    Podrias hacer un tutorial de como hacerlo ?
    Gracias

  2. Mi caso es este quiero instalar en unas pc`s no tienen Cd Rom y puedo instalar por medio de pendrive USB, pero en este caso tambien no funcionan los medios extraibles, me podrias ayudar o si tienes una nocion de ver si se puede instalar por medio de la red osea por medio del internet, que puedas entrar a la bios y que empieces a bootear por medio de la red y asi puedas instalar, las maquinas esan en blanco.
    gracias de antemano

  3. Andrea, mira el apartado «Requisitos y configuración del equipo cliente» de esta entrada. Allí se explica cómo configurar la BIOS del ordenador para que pueda arrancar desde red, y si puede hacerse, que no en todos los ordenadores es posible.

  4. Estoy planteandome inciar con network device mi portatil hecho polvo para instalarle un windows.No tengo disquetera.no hay booteo por usb,y encima creo que se ha fastidiado el inicio de sistema (bootmgr not found).Un desastre.He sacado el disco duro,lo he conectado a mi pc de sobremesa y he probado con el WinSetupfromUSB…nada No soy un entendido de esto ¿Crreis que tengo posibilidades de solucionarlo?

  5. Muy bueno, claro y sencillo… nomas una preguntota, como le hago para poder realizar tareas de instalaciones de windows bajo el servidor PXE de Linux???? de veras que me salvarias la vida si pudieras ayudarme por que sinceramente llevo como proyecto personal tener un servidor exclusivamente para las instalaciones en red, pero desafortunadamente nomas no puedo hacerlo u,u y ya llevo una semana haciendome pelotas :/

    saludos!

  6. Estimado, hasta el final de tu documento todo bien, logro arrancar la instalación hasta el punto donde me pide que igrese el servidor desde donde continuará la instalación (por default: http://ftp.us.debian.org), mi duda es si puedo hacer que apunte a la ip de mi servidor web local (en mi lan) donde tengo la imagen del DVD-1 de debian montado, Lo he hecho pero no puedo continuar la instalación.
    Esto lo hago porque intento instalar 5 pcs con debian y creo que sería la forma más rápida…

  7. cuando no hay disquetera yo he instalado asi: abro la compu y conecto una disquetera en la correa del disco duro( esclavo) y ahí se va…seria bueno disponer de una correa para portatiles. y para manu .creo que sin bios en buen estado no hay boot.