Configuración de un sistema de instalación remota usando PXE

Imagen de pepo

HOla...

Nos vemos (seamos imaginativos) a los tiempos, en realidad he estado súper ocupado y tengo algunos documentos más que espero poder publicarlos pronto... ya saben el gusto que tengo por las redes y lo relacionado a ellas. En esta ocasión nos hemos estado preparando para el II Festival de Instalación de Software Libre -FLISOL- y para evitar el problema que se da cuando instalamos usando medios físico e implementado un sistema de instalación usando Pre-Boot Execution Environment – PXE (Conocido en los bajos mundos como arranque desde la tarjeta de red)

Cabe señalar que no todas las tarjetas tienen esta funcionalidad, algunas deben ser modificadas, sin embargo, esto no es factible en esta ocasión así que una solución sería el usar un disquete para el arranque y luego pasar el control a la tarjeta de red, esto es fácil con aplicaciones como Etherboot, pero debo señalar que si esto sucede caería nuevamente en el problema de deambular con dispositivos en el festival de instalación, pero no hay vuelta que dar: Así es el futbol ;)

Agradecimientos

Sin duda debo agradecer a BitFrost ya que hicimos de su casa no solo nuestro centro de computo, además por equivocación eliminé su disco duro ]:) ... que vivan los respaldos!

De igual manera agradezco a la empresa ETAPA ya que será ETAPA NET quienes nos den acceso a Internet.

[img_assist|fid=11744|thumb=0|alt=Logo Etapa|caption=ETAPA - Empresa Pública Municipal de Telecomunicaciones, Agua Potable, Alcantarillado y Saneamiento de Cuenca]

Descripción

Por segundo año fui el coordinador del Install-Fest para la ciudad de Cuenca en Ecuador, pero la experiencia me hizo actuar para no tener nuevamente los problemas al momento de realizar las instalaciones.

El problema.

Debíamos esperar hasta que los discos de instalación estuvieran desocupados o sacar copias de varios discos, estos se estropeaban además la instalación en si era lenta ya que se trata del acceso físico a un dispositivo de baja velocidad.

La solución.

Pre-Boot Execution Environment – PXE

¿Por qué?

El arrancar usando la red:
1.No debemos estar encargados de varios dispositivos de instalación.
2.El desempeño de la instalación es sumamente rápido ya que utiliza la velocidad de la red, que en nuestro caso es Ethernet.
3.Implementé un menú para que nosotros podamos elegir que opcíon vamos a llevar a cabo:
a)Ejecutar Knoppix 4.0.2 para usar QtParted, una excelente herramienta de redimensionamiento, creación y mantenimiento de particiones, incluso el odioso NTFS está soportado.
b)Instalación de Guadalinex V3. Esta distribución fue elegida ya que tenía muchos paquetes y estaba muy bien traducida, lo que sin duda sería bien visto por muchos de nuestros invitados.
c)Instalación de Debian Etch. Todo el equipo coincide en lo mismo: es la mejor distribución que hemos probado y debe estar allí.
4.Las modificaciones que hice sobre los instaladores son LEGALES al tratarse de Software Libre.

NetInstall de Etch

Guadalinex2 y Etch tienen sus módulos que permiten una instalación desde discos mínimos usando paquetes que descargan desde las réplicas en Internet. Pero:

Qué pasa si no tenemos el ancho de banda adecuado para este tipo de instalación.
Si lo tenemos pero se pierde.
Continuamos usando dispositivos.

Como funciona

Ahora les voy a explicar como va la instalación, debo señalar que el servidor está usando Debian Etch, pero sin duda con pequeños cambios servirá perfectamente para otras distribuciones.

Descargo los paquetes que voy a necesitar:

apt-get install dhcp3-server nfs-kernel-server tftp-hpa

Configuremos cada uno.

Interfaz de red

Puden modificar directamente /etc/network/interfaces sin embargo eso está fuera de este documento, el caso es que la interfaz eth0 quearía con el IP 192.168.13.1

DHCP

Edito el archivo /etc/dhcp3/dhcpd.conf

########################################
# Archvio para el uso de DHCP
#
ddns-update-style none;
# Un nombre para nuestro dominio.
option domain-name “ecualug.org”;
# Como estamos usando NAT pongo el DNS para no configurar nada de bind9
option domain-name-servers 192.168.1.177;
#
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
# A continuación la red que usaremos en el Install-Fest
subnet 192.168.13.0 netmask 255.255.255.0 {
# El servidor tftp, por supuesto eso varía según su configuración y topología.
next-server 192.168.13.1;
# El archivo que manda enseguida para no tener que esperar tanto tiempo.
filename=”pxelinux.0”;
# Rango de direcciones que atenderé con este servidor
range 192.168.13.2 192.168.13.50;
# Como estoy usando NAT mando la ruta por defecto.
option routers 192.168.13.1;
}
########################################

TFTP

Por defecto tftp-hpa3 quiere arrancar con inetd, sin embargo como nosotros somos chéveres y nos gusta que todo sea demonios lo configuramos así:

dpkg-reconfigure tftp-hpa

Y escogemos la opción para que arranque como servidor, pero para que este completo hay que modificar el archivo/etc/default/tftpd-hpa:

##########################
# Queremos que funcione como demonio.
RUN_DAEMON=”yes”
# La ruta donde descansan nuestros archivos
OPTIONS=”-l -s /var/lib/tftpboot”
##########################

NFS

Los clientes acceden al servicio de instalación usando NFS y para el acceso remoto modifico el archivo /etc/exports

####################
#
# Ruta donde montare la imagen del disco de Guadalinex
# mount -o loop guadalinex.iso /opt/remoto
/opt/remoto 192.168.13.0/255.255.255.0(ro,no_root_squash,sync)
# Ruta donde montare la imagen del disco de Knoppix 4.0.2
# mount -o loop knoppix.iso /opt/remoto
/opt/remotoK 192.168.13.0/255.255.255.0(ro,no_root_squash,sync)
# Ruta donde montare la imagen del disco de Debian Etch.
# mount -o loop debianEtch.iso /opt/remoto
/opt/remotoD 192.168.13.0/255.255.255.0(ro,no_root_squash,sync)
#
####################

Configuraciones

Si han descargado el archivo adjunto entonces debemos hacer:

tar xjf pepoPXE.tar.bz2 -C /var/lib/tftpboot

El archivo donde se encuentran las configuraciones está en pxelinux.cfg/default, ojo que las rutas se vuelven absolutas ya que la opción -s de tftp-hpa hace que se enjaule4 el directorio que ha sido especificado en la configuración. Si revisan ese archivo se darán cuenta que es muy similar al archivo que viene en su disco duro... esto es porque la instalación se ejecuta de la misma manera que si estuviera el disco solo que ahora en lugar de montar el CD se monta un directorio con NFS.

pxelinux.cfg/default

default 1
prompt 1
timeout 600
display /textos/pxes.msg
F0 /textos/pxes.msg
F1 /textos/helpses.msg
F2 /textos/helpopt.msg

label 1
kernel /deKnoppix/vmlinuz
append nfsdir=192.168.13.1:/opt/remotoK dhcp lang=es ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 initrd=/deKnoppix/miniroot.gz quiet BOOT_IMAGE=/deKnoppix/knoppix

label 2
kernel /deGuadalinex/vmlinuz
append preseed/file=/cdrom/preseed/uda.seed languagechooser/language-name=Spanish countrychooser/shortlist=ES kbd-chooser/method=EspaA±ol vga=normal initrd=/deGuadalinex/initrd.pepo.gz ramdisk_size=31000 root=/dev/rd/0 rw --

label 3
kernel /deEtch/vmlinuz
append vga=normal initrd=/deEtch/initrd.gz ramdisk_size=500000 root=/dev/ram rw --
#append vga=normal initrd=/deEtch/initrd.gz ramdisk_size=500000 root=/dev/rd/0 rw --

Más cambios

Por supuesto que muchos desearán hacer sus propios cambios, la guía para eso viene lo más pronto posible, el caso es que me han pedido muchos este documento ya que cumple con sus necesidades. Sin embargo para modificar las distribuciones deben:

En el caso de Knoppix está implementado con la opción de ser ejecutado como una terminal así que como habrán visto en el archivo de configuración no hay más ciencia que poner nfsdir= y listo

En el caso de Debian Etch y Guadalinex, la idea es modificar el sistema de archivos que va a memoria cuando el sistema arranca, esto es modificar los initrd de tal forma que contengan los módulos para las tarjetas, un cliente dhcp, y un cliente nfs; cuando todo esto funcione adecuadamente5 se deberá modificar el archivo /var/lib/dpkg/info/cdrom-detect.postinst y en lugar de montar el disco con:

mount -t iso9660 -o ro,exec $device /cdrom;

Lo haremos con:

mount -t nfs $device /cdrom;

Y listo.

Este documento lo depuraré pero ha sido publicado directamente para satisfacer las necesidades de aquellos que tienen las mismas características en el Install-Fest.

Comentarios

No es viable

Imagen de pepo

Si la máquina no arranca con PXE entonces se puede probar opciones como ehterboot para arrancarla desde un disquete/disco y que entre a la red para allí comenzar la instalación, si eso no puede darse entonces nada: toca darle disco a disco.

Pero debemos recordar que la intención es instalar una distribución en una máquina 100% güin2 en este InstallFest, es decir sin espacio ya particionado y que la conexión para Internet puede estar siendo usada para cosas más necesarias como exposicones de VoIP, VPN y otros (que es lo que tenemos planificado), además de que no necesita una réplica. Por otro lado tenemos la posibilidad de usar un archivo "seed" que automatizaría la bola de cosas.

Linux User Registered #232544
Jabber : pepo@jabberes.org
ICQ : 337889406
GnuPG-key : www.keyserver.net

------------------------------------------------
Linux User Registered #232544
Jabber : pepo@jabberes.org
Ekiga : pepo@ekiga.net
GnuPG-key : www.keyserver.net

1- montar un servidor apache

Imagen de Epe

1- montar un servidor apache web local
2- poner los paquetes de la distribución de preferencia dentro de un directorio de ese servidor web local
3- arrancar la máquina en cuestión e indicarle que bajará los paquetes de 192.168.1.1 (la máquina web local)
4- instalar

el proceso es totalmente idéntico sólo que se bootea con un disquete, con una flash o con un micro CD... super cómodo y alternativo.

Es viable, te sugiero lo estudies, lo uso mucho para instalar máquinas en masa, 15, 20, 30 y no afecta para nada el performance de una red. Se siente cómodo y se acaban las instalaciones rápidas.

Definitivamente una alternativa al pxe.

trataré de publicar un peque howto sobre cómo hacerlo para instalar redhat/centos vía web. Es algo super probado y seguro que si la máquina no bootea por pxe, booteará por cd, flash o floppy, ponle el sellito de que lo hará por una de esas vías.

saludos!
epe
--
EcuaLinux.com
Ecuador: (02)3412402 - (09)9246504
USA: + 1 404 795 0321

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Aquí un peque artículo

Imagen de Epe

Aquí un peque artículo funcional sobre cómo instalar linux centos desde un servidor web local:
[url]http://www.ecualug.org/?q=como_instalar_linux_centos_via_web_sin_necesidad_de_cds[/url]

Con estas dos variantes, muchos problemas se resolverán.

saludos!
epe
--
EcuaLinux.com
Ecuador: (02)3412402 - (09)9246504
USA: + 1 404 795 0321

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Alternativa FAI

Imagen de pepo

Leí el documento, me parece bueno; para ese número de instalaciones sobre todo en Debian-like mejora con FAI pero creo que si hay "ports" para otras distros. Sin embargo no cumple las necesidades del Install-Fest

El caso es que sigue habiendo el problema con los dispositivos por más pequeños que sean; además: ¿como poder instalar más de una distribución con un menú de elección? (creo que no sería la opción el tener un dispositivo de arranque por opción), pero como decía es solución cuando NO ESTA DISPONIBLE PXE.

Saludos.

Linux User Registered #232544
Jabber : pepo@jabberes.org
ICQ : 337889406
GnuPG-key : www.keyserver.net

------------------------------------------------
Linux User Registered #232544
Jabber : pepo@jabberes.org
Ekiga : pepo@ekiga.net
GnuPG-key : www.keyserver.net

cierto

Imagen de Epe

tu eres el experto.

saludos y felicidades, buen artículo!
epe
--
EcuaLinux.com
Ecuador: (02)3412402 - (09)9246504
USA: + 1 404 795 0321

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

problemas

Hola
Tengo debian sarge con kernell 2.6 estoy intentando en mi red local instalar el PXE,y me he topado con varios problemas
1.- No tengo servidor de DNS entonces192.168.1.77 sería mi servidor local?
2.- El Tftp no me muestra en esa dirección el archivo tftp-hpa.-
De antemano gracias.-

Cita: 1.- No tengo servidor

Imagen de RazaMetaL

[quote]1.- No tengo servidor de DNS entonces192.168.1.77 sería mi servidor local?[/quote]


aptitude install bind

[quote]2.- El Tftp no me muestra en esa dirección el archivo tftp-hpa.-[/quote]

No entiendo, puedes ser mas explícito?

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

Antes de preguntar visita el [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

 

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]