Mostrando entradas con la etiqueta PXE. Mostrar todas las entradas
Mostrando entradas con la etiqueta PXE. Mostrar todas las entradas

jueves, 25 de septiembre de 2008

Cómo instalar un servidor PXE con clonezilla en Ubuntu: DRBL

Trataré en este documento de explicar cómo instalar y configurar el entorno DRBL que incluye entre otras cosas un servidor PXE y TFTP con clonezilla que nos permitirá clonar equipos en modo unicast o multicast -usando clonezilla- de modo que podamos tener una imagen de nuestro disco almacenada en un servidor y replicarla por ejemplo para instalar los equipos de un aula.

Este artículo es similar al que ya he publicado para cargar seleccionando arranque (boot) mediante PXE sin emplear ningún CD-ROM ni USB de arranque para ghost 4 linux (g4l) sólo que en este caso orientado al uso de clonezilla.

Como requisitos previos a la instalación es necesario apuntar que tenéis que disponer de dos tarjetas de red o emplear alias de ip ya que el servidor drbl empleará una tarjeta para conectarse a la LAN/Internet y la otra para asignar una IP dinámica a los equipos que arranquen por PXE y mandar por tftp la imagen del sistema operativo con clonezilla que permitirá clonar equipos.

Otro factor que se debería tener en cuenta es la versión del núcleo y CPU de los equipos que se van a clonar con clonezilla ya que, por defecto, empleará la misma del sistema (es muy importante si disponéis de máquinas de 32 y de 64 bits, ya que la de 32 no cargará la imagen que envía por defecto una máquina en la que se haya instalado un Ubuntu 64).

En breve colgaré manuales de uso y conguración del programa, con ejemplos de cómo desplegar un aula de equipos.

Seguiré los puntos del manual del proyecto original que, en inglés podéis encontrar en la fuente al final de este manual de instalación. En cualquier caso no es una traducción, ya que he eliminado numerosas cosas y he añadido algunas cuestiones de configuración que os preguntará el proceso de instalación. Es por lo anterior que, para seguir los puntos de dicho proyecto, el manual comienza en el punto 2 : Configuración de los clientes.

Configuración de los clientes:
Paso 2a

(antes de bajar el software mediante el siguiente proceso -puede tardar 4 o 5 horas en descargarse los paquetes- os recomiendo que si tenéis un sistema operativo Ubuntu o Debian de 64 bits, o bien no os importa recompilar el software, accedáis a la siguiente dirección de sourceforge y os bajéis directamente de ahí los paquetes ya que sólo tardaréis unos instantes en hacerlo. Están disponibles el paquete deb para 64 bits y los fuentes.

Si lo hacéis mediante el anterior método podéis pasar directamente al punto 2b)

1.- Agregamos el key del servidor para hacer un apt seguro:
primero lo descargamos y después lo añadimos:
wget http://drbl.nchc.org.tw/GPG-KEY-DRBL
apt-key add GPG-KEY-DRBL
2.- Editamos el fichero /etc/apt/sources.list y añadimos las siguientes
fuentes:
Si su distribución es is Etch (4.0):
----------
deb http://free.nchc.org.tw/debian/ etch main
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si su distribución está basada enSarge (3.1) (i.e. genuine Debian Sarge or other derived version like B2D pureKDE20051011 or others):
----------
deb http://free.nchc.org.tw/debian sarge main
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si su distribución es Woody (3.0):
----------
deb http://free.nchc.org.tw/debian/ woody main
deb http://free.nchc.org.tw/drbl-core drbl stable
deb http://www.backports.org/debian/ woody grep

----------

Si es Ubuntu Jaunty (9.04):
----------
deb http://free.nchc.org.tw/ubuntu jaunty main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

----------
Si es Ubuntu Hardy (8.04):
----------
deb http://free.nchc.org.tw/ubuntu hardy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

----------
----------
Si es Ubuntu Gutsy (7.10):
----------
deb http://free.nchc.org.tw/ubuntu gutsy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si es Ubuntu Feisty (7.04):
----------
deb http://free.nchc.org.tw/ubuntu feisty main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si es Ubuntu Edgy (6.10):
----------
deb http://free.nchc.org.tw/ubuntu edgy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si es Ubuntu Dapper (6.06):
----------
deb http://free.nchc.org.tw/ubuntu dapper main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
----------
Si es Ubuntu Breezy (5.10):
----------
deb http://free.nchc.org.tw/ubuntu breezy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

3.- Ejecutar: "apt-get update"
4.- Ejectuar: "apt-get install drbl" para instalar el programa


Paso 2b:
Suponiendo que disponemos de conexión a Internet, ejecutamos:
"/opt/drbl/sbin/drblsrv -i"
nos hará bastantes preguntas relativas a la configuración del servidor drbl:

(si necesitamos el linux-image-2.6.24-20-386 o
linux-image-2.6.24-21-386 o similar y no encuentra el paquete deberemos añadir a /etc/apt/sources.list

deb http://us.archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse

deb-src http://us.archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse
)
1.- Si queremos bajarnos los ficheros para posibilitar la instalación mediante pxe y red de algunas distribuciones linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS and OpenSuSE...) si pulsamos y le llevará su tiempo, sino lo necesitamos, dejamos la opción por defecto N. Si tecleamos Y puede darnos el fallo sino hemos añadido las dos líneas de repositorios citadas)


2.- Si queremos usar la consola serie para los clientes dejamos N o nuestros clientes no verán nada en su pantalla.


3.- Qué cliente mandaremos por PXE, es importante si en nuestro entorno tenemos distintos tipos de CPU (por experiencia), en este caso por ejemplo:
0 -> i386 level CPU
1 -> i586 level CPU
2 -> Use the same CPU level with that of this DRBL server
*os recuerdo que si fallan los repositorios deberíais añadir las líneas mencionadas a vuestros repositorios.


4.-Deseas actualizar tu sistema operativo.
*si todo va bien comenzará a bajar unos cuantos paquetes.



PASO 3.
Antes de llevar a cabo el paso 3a hemos de asegurarnos de que nuestro equipo tiene dos tarjetas de red, o en su defecto, al menos 2 ip distintas, ésto se puede conseguir en equipos con una única tarjeta mediante el uso de alias de ip.


Una de las direcciones de red, es la que conectará con nuestra LAN habitual, y la otra/s dirección es la que empleará el servidor de drbl para empleando PXE,dhcp y tftp enviar las imágenes a los equipos que habrán de iniciarse mediante arranque PXE.


3a.- Ejecutamos:
/opt/drbl/sbin/drblpush -i
Pedirá:
a.- Nombre del dominio.
b.- Nombre del dominio NIS/YP
c.- Prefijo que se antepondrá al nombre de los equipos clonados
d.- Selecionamos cuál es la tarjeta que tendrá salida aInternet (la que conecta con la LAN) tecleando eth0, eth1,..
e.- Si queremos que vaya almacenando MAC-IP (nuestro drbl) para asignarle siempre la misma IP a los mismos equipos.
f.- Si queremos permitir a los clientes conectados a nuestro servidor DHCP que se les ofrezca siempre la misma IP (habrá que almacenarlas como en el caso anterior)
g.- Cuál es el número inicial que queremos emplear de las IPs a emplear.
h.- Número de equipos que van a clonarse (por sesión), esto limitará el número de IPs que podrá asignar nuestro servidor de DHCP.
i.- Nos pide confirmación de los últimos datos asignados.
j.- Tipo de servidor: en mi caso Full DRBL mode (cada equipo tiene su propio disco duro, particiones,...) opción "0"
k.- Modo del servidor de clonezilla "Full clonezilla mode" cada equipo tiene sus propios /etc y /var basadas
en NFS
l.- Path absoluto al lugar dónde vamos a guardar las imágenes
m.- Si existe disco duro en el cliente quieres usar una parte para swap. "Y"
n.- De qué tamaño?
ñ.- Qué modo quieres para los clientes: gráfico o texto. Escoged el segundo carga más rápido y tenéis una interfaz gráfica en modo texto (podéis usar cursores,...)
o.- Le ponemos una contraseña al usuario root de los clientes que intenten acceder como tales distinta a la contraseña de root de la máquina para mayor seguridad?
p.- Quieres ponerle una contraseña para que los usuarios que quieran acceder a las opciones de arranque tengan que introducirla.
q.- Quieres ponerles la línea de boot a los clientes (en x segundos se iniciará la opción seleccionada)
r.- De cuánto tiempo?
s.- Si usas modo gráfico puedes cambiar al modo texto en caso de fallo de los clientes.
t.- Quieres dejar habilitado audio, USB,... a los clientes?
v.- Asignar IPs públicas a los clientes?
w.- Quieres permitir a los clientes ejecutar una sesión en modo terminal.
x.- Quieres usar el servidor DRBL como servidor NAT (en otro caso los clientes no podrán salir a Internet).
y.- Quires mantener la configuración de los clientes de DRBL si existe una?
z-. Actualizará las reglas del cortafuegos para permitir nat.

A partir de este momento, cada vez que hagamos alguna instalación de nuevos paquetes deberemos ejecutar "/opt/drbl/sbin/drblpush -i" o "/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf" esta última si queremos mantener la configuración que teníamos previamente de DRBL. Es recomendable por este motivo desactivar las actualizaciones automáticas ya que podrían tener como consecuencia que los clientes no pudieran cargar el nuevo sistema.

Para instalar los sistemas en equipos que no dispongan en BIOS de arranque por PXE podremos emplear etherboot

1) La imagen está localizada en /opt/drbl-etherboot/etherboot-net.iso
2) quemar el ISO en un CD:
cdrecord -v speed=12 fs=16m dev=0,0,0 -data etherboot-net.iso
(si es necesario, modificamos "dev=0,0,0", ejecutar"cdrecord -scanbus" para obtener nuestro grabador de CD)
3) Asegurarse de que el PC está configurado para arrancar desde CDROM, ponemos el CD en el lector y reiniciamos


Para configurar el servidor drbl tenemos varios scripts en /opt/drbl/bin y /opt/drbl/sbin, el más útil, sin duda, es /opt/drbl/sbin/dcs


Para desinstalar drbl y los paquetes dependientes /opt/drbl/sbin/drblsrv -u , del mismo modo, si lo que queremos es actualizar, podemos desinstalar y volver a ejecutar los pasos de la instalación.

Fuentes:
http://ubuntuforums.org/showthread.php?p=5816950

http://sourceforge.net/projects/drbl/

http://drbl.sourceforge.net/one4all/

http://clonezilla.org/ Página del proyecto

http://sourceforge.net/project/showfiles.php?group_id=73280 (descarga de los paquetes)

miércoles, 14 de mayo de 2008

Servidor PXE con g4l en Ubuntu

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 la BIOS del equipo lo permita, que en la actualidad son el 99.9999% - y cargar directamente nuestro g4l sin necesidad de insertar ningún CD.

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

  1. 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;
ignore client-updates;
allow bootp;
allow booting;

subnet 172.16.0.0 netmask 255.255.0.0 {

range 172.16.0.10 172.16.0.200;
option routers 172.16.10.100;
option subnet-mask 255.255.0.0;
option domain-name "home.net";
option domain-name-servers 172.16.10.100;
default-lease-time 21600;
max-lease-time 43200;
option root-path "/tftpboot/";
filename "pxelinux.0";

}



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

3. Creamos el directorio para el servicio tftpd en el directorio raíz '/'.

mkdir /tftpboot

4. Ahora, necesitamos copiar los dos ficheros desde syslinux a nuestro recién creado directorio 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 : está opción indica el directorio que utilizaremos para bajarnos y subir cosas. En mi caso he utilizado el directorio /tftpboot, que previamente he creado, pero se puede optar por cualquier otro.

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:


Display images
SAY DEFAULT is now bzImageb


DEFAULT bzImageb

LABEL bzImage6
KERNEL g4l/bzImage6
APPEND initrd=g4l/ramdisk.gz ramdisk_size=65536 root=/dev/ram0
LABEL bzImagea
KERNEL g4l/bzImagea
APPEND initrd=g4l/ramdisk.gz ramdisk_size=65536 root=/dev/ram0
LABEL bzImageb
KERNEL g4l/bzImageb
APPEND initrd=g4l/ramdisk.gz ramdisk_size=65536 root=/dev/ram0
LABEL bzImagec
KERNEL g4l/bzImagec
APPEND initrd=g4l/ramdisk.gz ramdisk_size=65536 root=/dev/ram0

PROMPT 1
TIMEOUT 600
ONTIMEOUT bzImageb


F1 images
F2 preimage
F3 startup
F4 disclaim


11. Descargamos la ISO de g4l de la página del proyecto http://sourceforge.net/projects/g4l o directamente de (también funciona con la anterior versión 0.24):

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 la ISO está montada necesitamos crear el directorio g4l y copiar los ficheros a ella:

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:

Manuales de g4l


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