elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
31 Julio 2010, 07:47  


Temas destacados: Tienda - Productos - Merchandising de elhacker.net



+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: Festor)
| | |-+  PXE Boot Explicado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: PXE Boot Explicado  (Leído 2831 veces)
vertex@Symphony

Desconectado Desconectado

Mensajes: 1.104


PGP Fingerprint : 0DC3 196D 1936 CC74 1BD7 0444 06CA EE64 31FE DA1E


Ver Perfil WWW
PXE Boot Explicado
« en: 15 Noviembre 2009, 21:12 »

PXE Boot Explicado

1.0) Introducción :

Antes de empezar, me gustaría comentar que la distro que elegí es Slackware (por que es lo que uso y lo que me pidieron), pero que todo esto es aplicable de una u otra forma a cualquier distro ....
. sí, esto sería un manual de cómo hacer un PXE boot para instalar slackware ...
Otra cosa que (sería obvia) es tener armada una red, donde A es el servidor PXE y B es el cliente (siendo este por ejemplo, una netbook)

también, me gustaría aclarar que se necesita un mínimo conocimiento de linux y que no es para alguien que está en absoluta desintonía (voy a hacer un esfuerzo para que sea sencillo)

Bien, cuando llega el momento de instalar slackware tenés pocas opciones : DVD y USB
cuando ninguna de estas opciones está (ya sea por que nos falta la unidad o por que no podemos hacer un buen booteo por usb, esto suele suceder en las netbooks, que carecen de unidad óptica y que, no siempre podemos disponer de un usb y hacer una instalación exitosa desde el) tenemos PXE boot


1.2) Explicando PXE Boot

Que significa PXE ? PXE, significa "Preboot Execution Environment" o "Ambiente de ejecución prebooteo", es un entorno para arrancar/instalar un sistema operativo (o para hacer un booteo diskless, como se suele ver en algunas terminales)

PXE es la agrupación de diferentes protocolos : DHCP (o bootp) y TFTP .. también vamos a usar NFS/HTTP/Samba (para obtener los paquetes, o se puede obtener directamente de un mirror de Slackware, aunque esto no entra en PXE)

cuando booteamos en red, descargamos un bootloader, kernel (Kernel de Slackware) y un ramdisk (nuestro sistema de archivos inicial en un comprimido, acá está el soft de instalación y módulos de kernel), vale aclarar que lo que tengamos en la compu no se tocará hasta que no lleguemos a la instalación (al buen estilo LiveCD ;D)

hecho esto, como no booteamos desde esta compu, necesitamos pedir los paquetes a dondesea ... en este caso vamos a tener nuestro server NFS que nos va a servir para esto...

1.3)  Requisitos

Cliente :
  • Tarjeta de red que soporte PXE boot
  • Bios que soporte y que permita elegir PXE boot (o booteo en LAN)

Server :
  • Servicio que entienda protocolo bootp : el firmware broadcastea en busca de un server PXE y este es el encargado de decirle el "hola" y darle código para bootear, slackware trae dos programas con este fin : dhcpd y dnsmasq
  • Servidor TFTP : acá bajamos el bootloader/kernel/ramdisk
  • Instalador Slackware : alguno de estos :  NFS/HTTP/Samba, todos disponibles en slackware
.


2.0) Preparativos

2.1) Preparando el servidor DHCP

Bien, acá podemos tener dos situaciones : ya tenemos un servidor dhcp al cual tenemos acceso para configurarlo para que haga lo que queremos ... o bien, como la mayoría de los usuarios hogareños, no se puede : este es el router (el cual vamos a tener que deshabilitarle el server dhcp para montarnos el nuestro)

como mi caso (así como el de muchos) es el segundos, vamos a por ello :
primero, entramos al setup del router :



y en LAN, deshabilitamos el server DHCP :



hecho esto, podemos pasar a montar uno casero, pero ... toca escribir la config de nuestro dhcpd, vamos a ello :

como base vamos a tomar el ejemplo que viene en el dvd de slackware :



Código
# dhcpd.conf
#
# Configuration file for ISC dhcpd
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;
 
# Allow bootp requests
allow bootp;
 
# Point to the TFTP server:
next-server 192.168.0.1;
 
# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
max-lease-time 2419200;
 
subnet 192.168.0.0 netmask 255.255.255.0 {
   option domain-name "my.lan";
   option broadcast-address 192.168.0.255;
   option subnet-mask 255.255.255.0;
   option domain-name-servers 192.168.0.1;
   option routers 192.168.0.10;
   range dynamic-bootp 192.168.0.50 192.168.0.100;
   use-host-decl-names on;
   if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
     filename "/slackware-13.0/pxelinux.0";
   }
}
 

esto debería ir out-of-the box (sin tocar mucho que digamos)pero .., prestando atención como mucho a lo que está resaltado, especialmente a routers, que es donde declaramos gateways, y domain-name,servers que es donde declaramos el server dns (the router is fine for this), y next-server, que es la ip del server tftp ...

o, con dnsmasq que es más simple : dnsmasq dhcp-boot={pxeboot file}, {hostname of tftp server}, {ip address of tftpserver}

siendo pxebootfile el /slackware-13.0/pxelinux.0 y los datos del tftp server (lo mismo que nuestro server dhcp)

en mi caso :

Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100
(siempre se aconseja que el hostname sea idéntico a la ip, pero depende de la situación de
nuestra red)

nota : no ejecutes el comando todavía, esperá que abajo (ya que estamos) montamos el server tftp

2.2) Preparando el servidor TFTP

En nuestro caso vamos a manejar el tftp con inetd, pero cualquier opción sirve (dnsmasq trae uno, que, lo hace más simple a la hora de poner a correr por que es también nuestro server dhcp... más adelante lo cubro) ..

veamos como sería con in.tftpd :

iniciamos como root (sudo -s o su, yo me atengo al su)

Código
su # ponemos la password root
nano /etc/inetd.conf
 
(o un kdesu kate /etc/inetd.conf como usuario común es suficiente)

bajamos buscamos una linea similar a esta :

Código:
#tftp  dgram  udp  wait  root  /usr/sbin/in.tftpd  in.tftpd -v -s /tftpboot -r blksize

y descomentamos sacando el # ...
notese que el -s /tftpboot es nuestro directorio donde vamos a poner los archivos !
Ctrl+O, Ctrl+X para guardar y salir, respectivamente

listo, ahora veamos como es con dnsmasq :
si volvemos al comando que usamos para levantar el server dhcp (en mi caso :)

Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100
y le agregamos : --enable-tftp --tftp-root=/tftpboot

quedando :

Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100  --enable-tftp --tftp-root=/tftpboot

listo, hecho esto, podemos pasar a armar el directorio, para esto vamos a necesitar nuestro de de Slack, o el ftp (es lo mismo) para armar la estructura de directorios ...
volviendo a nuestra consola root :

Código
export Slack=/media/SlackDVD
export TFTP=/tftpboot/slackware-13.0
 
mkdir -p $TFTP/pxelinux.cfg
cp /usr/lib/syslinux/pxelinux.0 $TFTP
cp $Slack/isolinux/f2.txt $TFTP
cp $Slack/isolinux/message.txt $TFTP
cp $Slack/isolinux/initrd.img $TFTP
cp $Slack/usb-and-pxe-installers/pxelinux.cfg_default $TFTP/pxelinux.cfg/default
cp -a $Slack/kernels $TFTP
/etc/rc.d/rc.inetd restart
 

y después ya tenemos la estructura de directorios ! (junto con los archivos)
ya tenemos un server PXE y slackware está apto para bootear (te invito a prender la otra compu que tenga habilitado ya el PXE/LAN boot en la bios) ...vamos a ello !



como vemos en la imagen, slackware booteó !
esto ya es territorio familiar, excepto por un detalle : placa de red (ouch) / conexión de internet...
entramos con el kernel huge.smp y cuando estemos como root :

Código
network # fjate si sabes el modulo de tu placa, o apretá enter para que se trate de detectar
dhcpcd eth0
 

y ya estamos listos para lanzar los particionadores y demás cosas que gustemos como si de un DVD se slackware se tratase ~

2.3) Levantando el server NFS

Bueno, esto en realidad está de más, pero vale ponerlo ;D
simplemente hay que agregar  esto :

Código:
/media/SlackDVD      192.168.0.0/24(ro,sync,insecure,all_squash,subtree_check)

a nuestro /etc/exports y reiniciar nfs con este comando : (como root)

Código
/etc/rc.d/rc.nfsd restart

y todo hecho (o con la interface gráfica, da igual)

3.0) Despedida

Bueno, eso fue todo, el como instalar Slackware via PXE boot, espero que alguno que tenga por ej una netbook (y haya tenido mala suerte con el usb) le haya servido !

cualquier duda, posteen =D

Saludos n_n

P.S : deter, disculpame la demora !  :-(
En línea
h0oke

Desconectado Desconectado

Mensajes: 2.060


Coder ~


Ver Perfil WWW
Re: PXE Boot Explicado
« Respuesta #1 en: 15 Noviembre 2009, 22:39 »

Agradezco tu post, seguro que otros también lo harán, supongo que se gana chincheta.

Un saludo!
En línea
baronobus

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: PXE Boot Explicado
« Respuesta #2 en: 30 Noviembre 2009, 16:51 »

hola amigos
Llevo unos dias atascado en esto del pxe y no consigo ver en que parte tengo el error de configuracion pq aun no consigo que arranque centosnetinstall ...asi que explicare como lo e montado por si alguien tuvo el mismo problema , y si es viable la instalacion ...

telgo una red:
..router telsey(wifi):192.168.1.1

..de el cuelgan 2 routers dlink504 (sin dhcp ni firewall) a modo de switch y que llegan al fondo de casa (por cable utp):
192.168.1.2
192.168.1.3(wifi)

..del router.2 cuelgan 2 pc:
K7 - 192.168.1.8 Linux version 2.6.28-13-generic Ubuntu 4.3.3-5ubuntu4(lo uso de server http)
DEBI - 192.168.1.13 (el servidor pxe..una makina vieja con 160 mb de ram ..centrino o asi) ..Linux version 2.6.18-164.6.1.el5.centos.plus

...del router1 cuelga mi portatil(packardbell easynote 3321D) con un cable de red ..y el dhcp del pc 192.168.1.13 me da la ip 192.168.1.80 a la hora de arrancarlo (con exito) por LAN/PXE.

Este portatil tiene el lector cd/dvd roto con lo que no puedo instalar nada desde el y por eso necesito el server pxe .Le quiero instalar el mismo centos que lleva el pc 192.168.1.13 ..esto es:
CentOS-5.4-i386-netinstall.iso (el pc 192.168.1.13 no tiene espacio para la iso dvd de centos por eso la version netinstall)

...para ello descargo la iso y la monto en el server pxe(192.168.1.13):
mount -o loop /home/CentOS-5.4-i386-netinstall.iso /tftpboot/iso/centosnet/

..y me queda tal que asi:
[root@debi debi]# tree /tftpboot/iso/centosnet/
/tftpboot/iso/centosnet/
|-- TRANS.TBL
`-- isolinux
|-- TRANS.TBL
|-- boot.cat
|-- boot.msg
|-- general.msg
|-- initrd.img
|-- isolinux.bin
|-- isolinux.cfg
|-- memtest
|-- options.msg
|-- param.msg
|-- rescue.msg
|-- splash.lss
`-- vmlinuz
..Este es la entrada de /tftpboot/pxelinux.cfg/default:

# CentOS 5.2 x86
label 2
kernel iso/centosnet/isolinux/vmlinuz
append ks initrd=iso/centosnet/isolinux/initrd.img
ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url
http://ftp.cica.es/CentOS/5.4/isos/i386/
# ks=http://192.168.1.13/ks/ks.cfg

He comentado la linea de ks pq no se de donde sacar este archivo.(He probado con el anaconda-ks.cfg que trae el centos 192.168.1.13:/root pero nada.)..De donde lo saco??
El problema es que arranca bien pero cuando lee el vmlinuz se bloquea al momento y no carga nada.Tambien da un error de "ramdisk_size=100000 "..
Alguien tuvo el mismo problema..?..Alguna idea?
gracias
En línea
vertex@Symphony

Desconectado Desconectado

Mensajes: 1.104


PGP Fingerprint : 0DC3 196D 1936 CC74 1BD7 0444 06CA EE64 31FE DA1E


Ver Perfil WWW
Re: PXE Boot Explicado
« Respuesta #3 en: 30 Noviembre 2009, 23:29 »

Te vas a hacer un netinstall (instalación via interner) pero booteando por PXE ? nice
fijate de instalar el paquete "syslinux" o fijate esos archivos en el CD, pero con tener un server DHCP como marca arriba y uno TFTP funcionando... (ahora ando en un openSUSE, pero instale el paquete tftp y dhcp-server, igual config, solo que el tftp lo inicie a mano con -v -s /tftpboot porque el configurador de yast del xinetd andaba caprichoso)

te escribí este script para el server, solo basta modificar los exports y vas a tener un PXE boot de un CentOS 5.4 tranquilamente (ya lo probé en la laptop de mi hermana teniendo un boot exitoso y el acceso a la instalación ;D)

Código
#Parametros básicos
export TFTP=/tftpboot
export CentOSNetInst=/media/mount
export SysLinuxDir=/usr/share/syslinux
 
#Copiamos los Archivos a la raiz ..
cp $SysLinuxDir/pxelinux.0 $TFTP
cp $SysLinuxDir/menu.c32 $TFTP
cp $SysLinuxDir/memdisk $TFTP
cp $SysLinuxDir/mboot.c32 $TFTP
cp $SysLinuxDir/chain.c32 $TFTP
 
# Copiamos kernel & ramdisk
# instala el paquete syslinux y curralo de ahi, o buscalo en el CD
mkdir $TFTP/pxelinux.cfg
cp $CentOSNetInst/isolinux/* $TFTP
mv $TFTP/isolinux.cfg $TFTP/pxelinux.cfg/default
 
#Recordar tener el el DHCPd con el bootp habilitado, tambien el Server TFTP !
 

Saludos ~
« Última modificación: 30 Noviembre 2009, 23:34 por Vertex.Symphony » En línea
baronobus

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: PXE Boot Explicado
« Respuesta #4 en: 02 Diciembre 2009, 23:00 »

Muchas gracias Vertex.Symphony..eres un mago..

Te cuento:
Este script me ha funcionado perfectamente y ya me arranca centosnetinstall en mi portatil(easynote3321D) :))
otra vez gracias..


Ahora me enfrento al metodo de instalacion por http ya que no hay driver lan (uliM5263) disponible para este portatil en dicha instalacion..(no me pilla ninguno de los que vienen por defecto..)...pero esto es otra historia

mi segunda opcion seria montar los archivos de la iso/dvd en el pc 192.168.1.8 que si tiene espacio suficiente..y hacer asi la instalacion pxe ..osea usar nfs.

salu2
En línea
vertex@Symphony

Desconectado Desconectado

Mensajes: 1.104


PGP Fingerprint : 0DC3 196D 1936 CC74 1BD7 0444 06CA EE64 31FE DA1E


Ver Perfil WWW
Re: PXE Boot Explicado
« Respuesta #5 en: 04 Diciembre 2009, 00:23 »

Que raro que no te detecte la ethernet, normalmente eso es out-of-the-box .... (no traerá los drivers ? meh ~)
NFS no te sirve si no te funciona la ethernet, por que requiere que esta funcione para conectarse a una PC en LAN, y si esta funciona y te es molestia lo del DVD, podés usar un ifconfig + dhcpcd tranquilamente para lograr tener conexión ... (ya que hay acceso a la red)

¿podrías ejecutar estos comandos para ver cual es la situación de la ethernet ?

Código
lspci
ifconfig
 
fijate la linea de ethernet del lspci y que dice el ifconfig del ethernet ...

si no tenés algún módulo útil y compilado para la ethernet, then se complica ^^"

Saludos ~
« Última modificación: 04 Diciembre 2009, 00:25 por Vertex.Symphony » En línea
baronobus

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: PXE Boot Explicado
« Respuesta #6 en: 04 Diciembre 2009, 16:12 »

hola
He conseguido instalar CENTOS en en el portatil de mi compañera (un Asus A6B00OL con 40gb , 20 para xp,20 para centos) mediante http.
Para ello descargue la iso-dvd y la monte en mi server web 192.168.1.8.
No ha habido ningun problema de drivers y la instalacion a sido super rapida..
Este fin de semana volvere a intentar de instalar sobre mi portatil easynote3321d..
salu2
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Yashira.org    Videojuegos    indetectables.net    Seguridad Informatica Colombia    Indejuegos    Internet móvil    Juegos de Mario

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec    Seguridad Wireless    Underground México    Biblioteca de Seguridad

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC