Configuración pxe boot para instalar GNU/Linux

Este tutorial muestra como configurar un servidor pxe boot para instalar varias distribuciones de GNU/Linux.
Por el momento incluiré opciones para Ubuntu y CentOS después iré añadiendo más.

La instalación da por entendido que el servidor se configurará en un equipo con Ubuntu o con Debian.

Tags:

Instalación de servidor tftp en Debian GNU/Linux

Lo primero que tenemos que hacer es instalar el paquete tftpd-hpa para esto ejecutamos como el usuario root:
root@~:# apt-get install tftpd-hpa
Al momento de instalar el paquete preguntara la ubicación por defecto de los archivos servirá desde tftp.
Instalación de servidor tftp en Debian
Podemos dejar la ruta por defecto ya que esta configuración se puede modificar en el archivo
/etc/default/tftpd-hpa

Si realiza un cambio a la configuración deberá reiniciar el servidor tftpd con el comando
root@~:# /etc/init.d/tftpd-hpa restart.

Puede comprobar que el servidor tftp esta escuchando ejecutando el comando
root@~:# netstat -atunp | grep tftp
Con esto queda configurado tftpd y esta listo para ser usado.

Si dejamos las opciones por defecto debería cargar los archivos para servirlos por tftp en el directorio /srv/tftp .

Imagen: 
Instalación de servidor tftp en Debian

Instalación de servidor dhcp en Debian GNU/Linux

Lo primero que tenemos que hacer es instalar el paquete dhcp3-server:
root@~:# apt-get install dhcp3-server
al intentar iniciar nos va a salir un mensaje de "failed", esto es por que aun no hemos creado el archivo de configuración así que vamos primero a hacer un backup del archivo original que nos puede servir luego para consultar opciones:
root@~:# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
y empezamos con un archivo vacío de configuración ejecutando el siguiente comando:
root@~:# rm -f /etc/dhcp/dhcpd.conf && nano /etc/dhcp/dhcpd.conf
(en el comando anterior podemos usar nuestro editor de textos favorito)

como ejemplo he puesto la red local a 192.168.3.0/24, suponiendo que nuestro ruteador tenga la ip 192.168.3.254, nuestro servidor de nombres (DNS) es 8.8.8.8 y que el rango de ips que queremos que asigne nuestro servidor es desde la 192.168.3.50 hasta la 192.168.3.99.
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.3.0 netmask 255.255.255.0 {
next-server 192.168.3.254;
filename "pxelinux.0";
option routers 192.168.3.254;
option subnet-mask 255.255.255.0;
# option domain-name "example.com";
option domain-name-servers 8.8.8.8;
option time-offset -18000;
option ntp-servers pool.ntp.org;
range dynamic-bootp 192.168.3.50 192.168.3.99;
}

Una ves puestos nuestros datos de red, guardamos el archivo (en "nano" con Crtl+X) y ejecutamos:
root@~:# /etc/init.d/isc-dhcp-server restart
Si no nos sale el mensaje de error, todo estará configurado bien. Podemos verificar que el servicio haya arrancado con el comando:
root@~:# ps fax|grep dhcp
debería salir una linea así:
1620 ? Ss 0:00 /usr/sbin/dhcpd -q

Instalación de servidor nfs en Debian GNU/Linux

Lo primero que tenemos que hacer es instalar el paquete nfs-kernel-server:
root@~:# apt-get install nfs-kernel-server

Luego definimos las carpetas que queremos exportar en el archivo /etc/exports, de forma básica y simple podemos compartir archivos en toda nuestra red (o cualquier red).
Por ejemplo supongamos que queremos compartir nuestra carpeta /home/usuario en nuestra red 192.168.3.0/24, así añadiríamos la siguiente linea al final del archivo /etc/exports:
/home/usuario 192.168.3.0/255.255.255.0(no_root_squash,no_subtree_check,rw)
Para aplicar los cambios ejecutamos:
root@~:# /etc/init.d/nfs-kernel-server reload

Si queremos crear una compartición para cualquier red pondríamos en la parte de la red/mascara algo así: 0.0.0.0/0.0.0.0
Al final de la linea de configuración están las letras "rw", si queremos que solo se pueda visualizar los archivos solo hay que quitar la w.

Ya podemos revisar la capeta que compartimos montándola desde otra computadora de la red con el comando:
sudo mount -t nfs 192.168.3.254:/home/usuario /mnt/
Asumiendo que nuestro servidor NFS tiene la ip 192.168.3.254 y que queremos montarla en la ubicación /mnt/.

Tags:

Instalación de servidor web apache en Debian GNU/Linux

Instalar apache se ha vuelto bastante fácil de instalar en estos días.
Lo primero que tenemos que hacer es instalar el paquete apache2:
root@~:# apt-get install apache2

No hay mas que configurar para una instalación básica.
La carpeta que usa apache por defecto en Debian es /var/www, mas conocido como "documet root"; en esta debemos copiar todo archivo que queramos publicar en el servidor web.
Como dato adicional el usuario con el que corre apache es www-data; si necesitamos que apache sea capaz de escribir archivos en un directorio o modificar archivos debemos cambiar de dueño los archivos que pongamos en "document root".
Por ejemplo:
root@~:# chown -R www-data:www-data /var/www carpeta-de-archivos

Algunos paquetes recomendados si queremos alojar un CMS o alguna aplicación web que use LAMP(Linux, Apache, Mysql y PHP) serian:

  • mysql-server
  • php5
  • php5-imap
  • php5-mysql
  • php5-xmlrpc
  • php5-gd
  • php5-mcrypt (este es para phpmysql)

Estos se pueden instalar fácilmente con el comando root@~:# apt-get install nombre-de-paquete

Imagen syslinux para pxe boot (archivos de ejemplo)

Primero debemos descomprimir el contenido del archivo que adjunto a este post (abajo esta el enlace).
root@~:# tar xjvf syslinux-pxe.tar.bz2
El contenido de la capeta extraída debemos copiarlo a la carpeta raíz del servidor tftp, P. EJ:
root@~:# cp -r syslinux-pxe/* /srv/tftp/

Una vez hecho esto, ya podemos realizar una prueba de booteo; aparecerá un menú desde el cual vamos a poder escoger que sistema operativo instalar o ejecutar en modo live siempre y cuando hayamos instalado el servidor tftpboot y el dhcp.

En la carpeta raíz del servidor tftp:

  • pxelinux.0 - Cargador de arranque:
    Este archivo contiene la imagen syslinux para pxe (Pre-Execution Environment), en palabras simples, el cargador de arranque.
  • pxelinux.cfg/default - Configuración del cargador de arranque:
    Este archivo contiene las opciones del cargador de arranque (usa la misma sintaxis de isolinux.cfg). Aquí definimos las opciones de arranque que va a tener. Este archivo contiene algunos ejemplos para bootear Ubuntu 10.04, CentOS 5.2 y Fedora 9. Cada sistema operativo que desea que arrancar debe tener una entrada aquí.
  • pxeboot.msg - Archivo de texto con las opciones del menú:
    Aquí esta el menú que aparece cuando una computadora bootea por red; debemos tener aquí instrucciones de como bootear cada sistema operativo que se ha configurado en el archivo pxelinux.cfg/default. El archivo contiene un esquema de ejemplo que conserva 80 columnas por 24 filas de texto. Podemos personalizar este menú a gusto.
  • help.msg - Archivo de texto con las opciones de ayuda:
    Este archivo contiene el menú que aparecerá cuando se presiona la tecla "F1" en el menú principal. Podemos personalizar este menú a gusto.
  • options.msg - Archivo de texto con las opciones:
    Este archivo contiene el menú que aparecerá cuando se presiona la tecla "F2" en el menú principal. Podemos personalizar este menú a gusto.

Todos los archivos contienen ejemplos de configuración y comentarios en español para personalizarlos completamente.

Configuracion pxe boot para instalar ubuntu

Lo primero que tenemos que hacer es definir como configuraremos el medio de instalación.
Para esto tenemos dos opciones:

  1. Copiar directamente los archivos del cd a una ubicación en el servidor.
  2. Tener una imagen iso del cd y montarla.

Primero crearemos una carpeta para los archivos:
sudo mkdir -p /var/lib/tftpboot/ubuntu

Para la primera opción copiamos los archivos del cd:
sudo cp -rf /media/rutahaciaelcd /var/lib/tftpboot/ubuntu
Si optamos por la segunda alternativa, en ves de copiar los archivos, creamos la imagen iso (o usamos la que descargamos) y montamos la imagen en la carpeta que creamos (reemplazamos los con la información de la ruta hacia la imagen):
sudo mount -o loop /rutaalaimagen/archivo.iso /var/lib/tftpboot/ubuntu/
Podemos crear también una entrada en el archivo /etc/fstab para que monte la imagen cada que se inicie el equipo:
sudo gedit /etc/fstab
y añadimos la siguiente ruta, llenado con los datos correctos la ruta hacia la imagen:
/rutaalaimagen/archivo.iso /var/lib/tftpboot/ubuntu iso9660 user,ro,loop 0 0

Luego debemos editar el archivo /var/lib/tftpboot/pxelinux.cfg/default:
sudo gedit /var/lib/tftpboot/pxelinux.cfg/default
Y añadir la opción de pxe boot:

# Ubuntu
label 1
kernel ubuntu/casper/vmlinuz
append file=/cdrom/preseed/ubuntu.seed initrd=ubuntu/casper/initrd.gz boot=casper netboot=nfs ip=dhcp nfsroot=0.0.0.0:/var/lib/tftpboot/ubuntu804-x86 quiet splash -- debian-installer/language=es console-setup/layoutcode=es

NOTA: Podemos simplemente editar en el archivo de ejemplo que viene con el paquete en la parte de la ip del punto de montaje NFS. P.Ej: cambiar 0.0.0.0 por 192.168.0.254.

Luego debemos compartir el directorio /var/lib/tftpboot/ubuntu vía NFS, para esto añadimos la siguiente linea en el archivo /etc/exports; reemplazando los datos con la ip y mascara de nuestra red:
/var/lib/tftpboot/ubuntu 0.0.0.0/0.0.0.0(no_root_squash,no_subtree_check,rw)

y listo, ya podemos ejecutar ubuntu desde nuestra red e instalarlo si deseamos.