TFTP + PXE + syslinux + G4L
Cuando se realizan clonaciones de múltiples equipos, habitualmente debemos generar un CD con el que arrancar el PC que queremos clonar, para que el sistema operativo que cargamos en el CD nos permita acceder a las imágenes que queremos instalar en nuestros equipos. Uno de los programas que nos permite generar imágenes como ya he comentado en anteriores artículos es el g4l y funciona de este modo.
Lo que trato en este artículo es de cómo instalar un servidor PXE que nos permita arrancar nuestros equipos mediante Red – siempre que
Este documento es una adaptación del escrito Paul Matthews incorporando algunas ideas de David Sudjiman y de revartm.wordpress.com y de Jesús Antonio Alvarez Cedillo (Tognu) entre otros, adaptado a las últimas versiones de los paquetes usados y empleando una distribución Debian, Ubuntu o basada en Debian para generar un servidor PXE que nos permita cargar g4l a través de la red.
Agradezco, asímismo, las aportaciones realizadas como comentario de hbto que ya he incorporado al documento original y que completaban un poco más este manual y solventaban ciertamente algunas carencias del mismo.
Name: syslinux
Homepage: http://syslinux.zytor.com/
Function: The SYSLINUX Project covers lightweight bootloaders for floppy media, network booting and bootable "El Torito" CD-ROMs.
Name: Ghost 4 Linux
Homepage: http://freshmeat.net/projects/g4l/
Function: Ghost for Linux is a hard disk and partition imaging and cloning tool similar to "Norton Ghost"(c) and (tm) by Symantec
Para este ejemplo el servidor de dhcp sirve direcciones entre 172.16.0.10 y el 172.16.0.200. La dirección de red es la 172.16.0.0/16 y la del enrutador 172.16.10.100. Muy importante con respecto a este punto es que el rango de direcciones en la que pongamos a servir ip´s a nuestro servidor esté en la misma red que una de las ip de nuestro servidor
- En primer lugar necesitamos tener el servidor dhcp trabajando. En caso contrario:
apt-get install dhcp3-server
nano /etc/dhcp3/dhcpd.conf
o bien emplear webmin.
dhcpd.conf:
ddns-update-style interim; |
2. Después necesitamos configurar el boot PXE, para lo que bajamos syslinux
apt-get install syslinux
si no lo encuentra o queremos instalar la última versión:
wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.63.tar.gz
tar -xvzf syslinux-3.63.tar.gz -C /usr/local/src
mkdir /tftpboot
a.- Si hemos usado apt-get para el paquete syslinux:
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
cp /usr/lib/syslinux/memdisk /tftpboot
b.-si hemos usado wget estarán en el siguiente directorio:
cp /usr/local/src/syslinux-3.63/pxelinux.0 /tftpboot
cp /usr/local/src/syslinux-3.63/memdisk/memdisk /tftpboot
5. Nos aseguramos de tener el servidor tftpd-hpa instalado (el servidor tftp “básico” no nos sirve, ha de ser el tftpd-hpa, porque hay algunas opciones necesarias para arrancar mediante PXE que el otro no incluye, en concreto tsize).
apt-get install tftpd-hpa tftp-hpa
6. Configuramos el servidor de tftpd.
nano /etc/default/tftpd-hpa
Una vez abierto pondremos las dos opciones con los valores que indico a continuación.
RUN_DAEMON=”yes” OPTIONS=”-l -s /tftpboot” |
Las opciones indican lo siguiente:
-l : es para que el servidor se ejecute como daemon.
-c : está opción nos permitirá poder escribir/enviar datos al servidor tftp. Como no voy a subir ficheros no habilito esta opción
-s
Una vez modificado dicho fichero, procedemos a lanzar el servidor, para ello ejecutamos:
# /etc/init.d/tftpd-hpa start
Para que al reiniciar siga funcionando el servidor de TFTP deberemos cambiar la sección del archivo /etc/inetd.conf que habla del TFTP por:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
en lugar de la sugerida. Si ya se ha reiniciado y no has actualizado la línea, hacerlo y ejecutar:
sudo update-inetd --enable BOOT
Y ya tendriamos listo el servidor.
Cliente
Para conectarnos al servidor debemos instalar un cliente -si todavía no lo hemos hecho-, como siempre utilizaremos la herramienta apt, esta vez será:
# apt-get install tftp-hpa
Y comprueba que realmente funciona (creamos un fichero en el servidor de tftp y lo bajamos mediante el cliente de tftp), yo suelo usar las opciones verbose y trace para que me vaya mostrando datos de lo que está haciendo:
# ls –l > /tftpboot/listado.txt
# tftp 172.16.16.131
#get listado.txt
# quit
# ls -l
7. Una vez hecho esto reiniciamos los siguientes servicios
/etc/init.d/dhcp3-server restart
8. Vamos a la carpeta tftpboot y creamos el directorio de configuración PXE.
cd /tftpboot/
mkdir pxelinux.cfg/
9. Accedemos al directorio pxelinux.cfg
cd pxelinux.cfg
10. Creamos el fichero de configuración por defecto
nano /tftpboot/pxelinux.cfg/default
default:
LABEL bzImage6
|
11. Descargamos
wget http://optusnet.dl.sourceforge.net/sourceforge/g4l/g4l-v0.26.iso
12. Montamos la ISO
mount -o loop -t iso9660 /tmp/g4l-v0.26.iso /media/cdrom/
14. Una vez
mkdir /tftpboot/g4l
cp -rf /media/cdrom/* /tftpboot/g4l
15. Ahora, simplemente, necesitamos configurar los clientes para que arranquen a través de red.
Enlaces relacionados:
Manual de uso de clonezilla desde live cd: http://tecnoloxiaxa.blogspot.com/2008/12/manual-de-clonezilla-creacin-de-imgenes.html
Si te ha interesado este artículo es posible que te interesen los manuales de funcionamiento de g4l que he elaborado:
También podrás encontrar un manual de instalación de un servidor (DRBL) de PXE en Ubuntu pero en este caso para emplear clonezilla que presenta ventajas de velocidad y compresión con respecto a g4l. Además no es necesario instalar un servidor ftp (con samba o ssh ya funcionaría en modo unicast)
Servidor PXE con clonezilla en Ubuntu
6 comentarios:
Sugerencias / Ajustes
En Ubuntu 8.04, no se el resto
*) En la sección uno (1):
Usar
apt-get install dhcp3-server
en lugar del comando original
*) En la sección cuatro (4):
usar
/usr/lib/syslinux/pxelinux.0
/usr/lib/syslinux/memdisk
si descargas por apt-get el paquete de syslinux
*) En la sección cinco (5):
se debe cambiar la sección del archivo
/etc/inetd.conf
que habla del TFTP
la linea deberá corresponder con
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
en lugar de la sugerida, esto para que al momento de reiniciar siga funcionando.
Si has reiniciado y no actualizaste la linea, hazlo y luego ejecuta
sudo update-inetd --enable BOOT
Te darás cuenta que la prueba de Cliente de la Sección seis (6) volverá a funcionar, y por lo tanto tu TFTP.
Agradezco mucho a nuestro amigo, habia implementado algo similar en Ubuntu, a partir de una guia para PXE + TFTP + G4L + FEDORA
Pero esta guía mas estos ajustes, pretendo ir agregando nuevas utilidades a mi PXE,
Hola a Todos, primero que todo muchas gracias por este interesante Articulo, he seguido con cuidado los pasos para instalar el PXE, y despues de algunos ajustes he logrado arrancar G4l y AsteriskNow desde la red implementando ademas un servidor FTP, pero tengo dos problemas....el primero al restaurar una imagen de un disco hecha previamente con el g4l la cual se almacena en el servidor FTP , al hacer el restore desde el FTP me aparece el siguiente mensaje:
gunzip :short read
y no restaura la imagen.
y el segundo problema es como hacer para iniciar una imagen ISO desde la red con el PXE para poder bootear liveCDs, instaladores de Linux, Windows etc...
les agradezco sus respuestas y su atencion.
todo lo hice como manda la ley pero cuando intento hace cualquier backup me dice que la conexion fue rechazada, como hago para que pueda aceptar conexiones anonimas en ubuntu 8.4?
Gracias
yo en tu lugar crearía un usuario -supongo que estás hablando del servidor ftp- con su contraseña; en cualquier otro caso ¿has probado usando de nombre de usuario "anonymous" y contraseña en blanco?
hablo del servidor tftp no hay forma de poder conectarme y lo hise poniendo anonymous y el pass en blanco y nada
en principio, si tienes el servidor de tftp funcionando, lo único que tienes que hacer es entrar desde el equipo en el que tengas instalado el servidor y abrir una consola con privilegios de root.
tecleas tftp "ip_de tu equipo" y debería conectarte sin problemas.
Si necesitas ayuda con los comandos teclea "?" y pulsa enter. creo recordar que para conectar es connect y (si tecleas "verbose" y "trace" previamente te dará información de qué está haciendo).
Te hablo de memoria porque no lo tengo delante, pero también podrías comprobar en qué puertos está escuchando el equipo y qué demonios están corriendo.
Probablemente has reiniciado el equipo sin modificar las líneas del fichero inetd.conf. Repasa el punto 4 del manual.
En breve colgaré un manual para hacer lo mismo pero con clonezilla que tiene algunas/bastantes ventajas.
saludos y espero haberte ayudado
Publicar un comentario