Está en: » Artículos »

Instalación de openSuse por red mediante tftp-pxe

Instalación de openSuse por red mediante tftp-pxe

Inicio PXE para Suse Linux 10

Hay varias maneras de instalar un equipo por red:

  • Iniciar con el disco de instalación y escoger la opción de instalación por red.
  • Instalar remótamente mediante vnc o ssh (muy útil para servidores dedicados externos).
  • Iniciar por red el disco de instalación

Seguramente se me habrá pasado alguna. En esta guía nos vamos a centrar en «Iniciar por red el disco de instalación».

¿Qué ventajas nos reporta?

  • No necesitamos ningún dispositivo extra (usb, dvd, cdrom…).
  • Una vez configurado, instalamos muy fácilmente los clientes.
  • Podemos tener todas las versiones/distribuciones que deseemos/configuremos para dicha instalación.

Lógicamente tiene contras, como el proceso de elaboración del sistema, o la necesidad de otro equipo funcionando para entregar «arranques» por red.

La parte de servidor de esta guía la basaré sobre openSuse 11.1 (en 32 bits), pero es válida desde la versión 10.1 hasta la fecha del artículo (también para 64 bit). Ya que no es un servicio que vaya a estar demandado a diario, por facilidad en migraciones y comodidad, lo he implantado sobre una máquina virtual (que es lo que os recomiendo).

Para los clientes, sólo es requerido que puedan iniciar desde red.

Para empezar, lógicamente necesitamos ya el equipo servidor instalado (cualquier tipo de instalación). Una vez cumplido este requisito, nos ponemos manos a la obra:

Lo primero será instalar un servidor DHCP. Si ya tenemos un servidor funcionando en algún equipo de la red y podemos cambiar su configuración, recomiendo hagáis las modificaciones sobre el mismo.

La mayoría de servidores DHCP incluidos en los routers que nos entregan las compañías ISP no nos permite especificar un archivo para el inicio por red, por lo que no son válidos pero podemos establecer una configuración para que funcione con los mismos.

En todos los casos excepto en el que podemos actualizar la configuración del servidor DHCP y este nos permite establecer el archivo de inicio, deberemos:

Instalar el servidor DHCP:

zypper install dhcp-server

El archivo de configuración es /etc/dhcpd.conf. Viene bien comentado cada apartado, pero como es bastante lioso ir explicando que modificar y que nó, recomiendo cambiarle el nombre y establecer uno nuevo con lo básico especificado en cada escenario.

mv /etc/dhcpd.conf /etc/dhcpd.conf.original

Así pues, separamos este apartado en 2 opciones:

Si no tenemos ningún servidor DHCP funcionando en la red (o no podemos modificar sus parámetros):

El contenido que deberemos insertar en el archivo /etc/dhcpd.conf es:

authoritative;
ddns-update-style none;
allow booting;
subnet 192.168.1.0 netmask 255.255.255.0
{
        option subnet-mask 255.255.255.0;
        option routers 192.168.1.1;
        option domain-name-servers 80.58.61.250, 8.8.8.8;
        range dynamic-bootp 192.168.1.100 192.168.1.199;
        default-lease-time 3600;
        max-lease-time 7200;
        filename "pxelinux.0";
        next-server 192.168.1.8;
}

Explicandolo un poco:

  • subnet => Indicamos nuestra red para la configuración. Deberemos establecer la ip de nuestra red (el último número debe ser un 0 «cero» en la mayoría de los casos -depende de la máscara de red-)
  • netmask => Indicamos nuestra máscara de red.
  • option subnet-mask => Nuestra máscara de red (la misma que antes).
  • option routers => La ip de nuestra puerta de enlace (suele ser la ip del router).
  • option domain-name-servers => Las ip de los servidores DNS separadas por comas.
  • range => Rango de ips para cuando se soliciten. Osease, cuando un cliente se conecte y solicite una ip, se la concederá dentro de ese rango.
  • default-lease-time => Tiempo (en segundos) por defecto que durará la asignación de ip al cliente. Llegados a este tiempo, el cliente deberá renovar dicha dirección.
  • mas-lease-time => Tiempo (en segundos) máximo que durará la asignación de ip al cliente. Llegados a este tiempo, si el cliente no renueva, se libera dicha ip para asignarla de nuevo.
  • filename => Indica a los clientes el nombre del archivo a obtener si inician mediante red.
  • next-server => Indica la dirección del servidor tftp para iniciar el «arranque» por red. En este caso, pondremos la dirección del equipo que estamos configurando

Si tenemos otro servidor DHCP funcionando en la red el cual no podemos modificar:

El contenido que deberemos insertar en el archivo /etc/dhcpd.conf es:

authoritative;
allow booting;
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0
{
        option routers 192.168.1.1;
        option domain-name-servers 80.58.61.250, 8.8.8.8;
        broadcast-address 192.168.1.255;
        pool {
              default-lease-time 180;
              max-lease-time 360;
              next-server 192.168.1.8;
              filename "pxelinux.0";
              allow members of "pxe";
              allow members of "etherboot";
              filename "pxelinux.0";
              range 192.168.1.100 192.168.1.199;
     }

}

class "pxe" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
}
class "etherboot" {
    match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
}

En el apartado anterior se explica cada sección, por lo que no lo repetiremos. Es importante actualizar los datos de ip a los vuestros.

En openSuse, también deberemos editar el archivo /etc/sysconfig/dhcpd y establecer en DHCPD_INTERFACE la interface de red conectada normalmente eth0). Podemos comprobrarla con un simple ifconfig.

Reciniciamos el demonio dhcpd:

rcdhcpd restart

Con esto ya tenemos el servidor dhcp funcionando. Este demonio simplemente lo que hace es asignar una ip a una determinada máquina para evitar el tener que configurarla manualmente.

El siguiente paso será instalar y configurar el servidor tftp. Recomiendo utilizar atftp por ser libre y estar en los repositorios:

zypper install atftp

Editamos /etc/sysconfig/atftpd y establecemos la ruta que vamos a utilizar de forma que quede así:

ATFTPD_OPTIONS="--daemon --user tftp -v"
ATFTPD_USE_INETD="no"
ATFTPD_DIRECTORY="/srv/tftp/tftpboot"

Comprobamos si existe el usuario tftp

cat /etc/passwd | grep tftp

Si no existe, lo creamos

useradd -d /srv/tftp/ tftp

Reiniciamos el servicio:

rcatftpd restart

Si deseamos que inicie automáticamente, haremos:

chkconfig tftp on

Ya por último, nos queda crear el entorno de inicio PXE.

Creamos la estructura en el sistema de ficheros:

mkdir -p /srv/tftp/tftpboot/pxelinux.cfg

Necesitamos el archivo pxelinux.0 el cual se encuentra en el paquete syslinux:

zypper install syslinux
cp /usr/share/syslinux/pxelinux.0 /srv/tftp/tftpboot

Creamos el archivo de configuración de PXE en /srv/tftp/tftpboot/pxelinux.cfg/default con el contenido:

DISPLAY f1.txt
F1 f1.txt

default OS11.2
prompt   1
timeout  30

# openSuse 11.2 32bits
label OS11.2
  kernel openSuse_11.2_32
  append initrd=initrd_openSuse_11.2_32 splash=silent vga=0x314 showopts install=http://download.opensuse.org/distribution/11.2/repo/oss/

# openSuse 11.2 32bits
label OS11.264
  kernel openSuse_11.2_64
  append initrd=initrd_openSuse_11.2_64 splash=silent vga=0x314 showopts install=http://download.opensuse.org/distribution/11.2/repo/oss/

Descargamos los archivos kernel e initrd para openSuse 11.2:

cd /srv/tftp/tftpboot
wget -O openSuse_11.2_32 http://download.opensuse.org/distribution/11.2/repo/oss/boot/i386/loader/linux
wget -O initrd_openSuse_11.2_32 http://download.opensuse.org/distribution/11.2/repo/oss/boot/i386/loader/initrd
wget -O openSuse_11.2_64 http://download.opensuse.org/distribution/11.2/repo/oss/boot/x86_64/loader/linux
wget -O initrd_openSuse_11.2_64 http://download.opensuse.org/distribution/11.2/repo/oss/boot/x86_64/loader/initrd

Creamos el archivo de configuración para mostrar en el inicio a los clientes. Este archivo será /srv/tftp/tftpboot/f1.txt y contendrá:

boot options:
  OS11.2      - Instalación en 32 bit para openSuse 11.2
  OS11.264   - Instalación en 64 bit para openSuse 11.2

Y esto es todo. En verdad, aunque sea largo el artículo, el proceso es bastante rápido.

Si tenemos descargado el dvd o alguna copia del repositorio en nuestra red, podemos cambiar las rutas del archivo /srv/tftp/tftpboot/pxelinux.cfg/default

Comentarios

  1. Angel dice:

    El manual me parece magnifico. Lo he montado creando la estructura del dvd en un NAS que uso como servidor web y funciona perfectamente.

    Hay una cosa que no se como hacer. Cuando dices:
    «Si tenemos descargado el dvd o alguna copia del repositorio en nuestra red, podemos cambiar las rutas del archivo /srv/tftp/tftpboot/pxelinux.cfg/default»
    ¿Como se indican esas rutas teniendo la estructura en el ordenador en el que lo tengo montado todo pero sin usar un servidor web?

    Un saludo.

  2. Angel dice:

    A eso me referia. A usar un servidor ftp, pero desconozco como decirle a la maquina que arranca que busque ahí la distribucion. No se la sintaxis de esas rutas en el archivo default.

    Un saludo

    • Hombre, eso es tan fácil como cambiar http por ftp y poner el nombre DNS del equipo o su ip. Ej:

      # openSuse 11.2 32bits
      label OS11.264
      kernel openSuse_11.2_64
      append initrd=initrd_openSuse_11.2_64 splash=silent vga=0x314 showopts install=ftp://mi.maquina.ftp.interna/11.2/

      Eso sí, acceso anónimo al ftp para evitar problemas. No sé si se podrá autentificado pero es más cómodo un acceso anónimo y sin escritura.

  3. Angel dice:

    Muchas gracias. Lo probare.

  4. Angel dice:

    He probado con tftp y nfs y no doy con la manera de hacerlo funcionar. Al final por ftp funciona asi como por http. Comentarte que tambien funciona por ftp autenticado.

    Muchas gracias y sobre todo por tu rapidez.

    Un saludo

Deje su comentario

Previsualización de comentario
  1. Anónimo dice:





Pings para esta entrada