Cintillo Institucional

Arranque por red sin disco mediante iSCSI - Red Local: VLAN - Sistema Operativo: Debian Jessie

Este procedimiento está basado en el que se encuentra publicado en infra_red/iscsi_vlan_wheezy.

A continuación se describe una manera de instalar el sistema operativo Debian Jessie en un servidor sin disco que cargue su sistema operativo desde una red de datos, conectando un dispositivo de almacenamiento SCSI (target) utilizando el protocolo iSCSI en el escenario donde el sistema de redes utiliza VLANs y el servidor debe usar las etiquetas apropiadas en sus conexiones.

Requerimientos:

  1. Servidor con servicio iSCSI target (Maquina Virtual Xen 1).
  2. Servidor con servicio TFTP y DHCP (Maquina Virtual Xen 2).
  3. Servidor sin disco.
  4. Dispositivo USB conectado al servidor sin disco, con los firmware que puedan ser necesarios para la interfaz de red del mismo.

Preparación del servidor con servicio iSCSI target

iSCSI es un protocolo de la capa de transporte. iSCSI permite a un computador utilizar un iniciador iSCSI (initiator) para conectar a un dispositivo SCSI (target) como puede ser un disco duro en una red. [4] [5]

  1. Preparar los dispositivos de almacenamiento que constituirán los LUN (volúmenes lógicos, particiones, etc.).
    1. Crea un volumen lógico (nombre y tamaño según sus requerimientos), no es necesario crear particiones:
      • lvcreate --name [LogicalVolumeName] --size [LogicalVolumeSize] [VolumeGroupName]
        # por ejemplo: lvcreate --name lvm3 --size 3G vg1
  2. Instalar los siguientes paquetes:
    1. linux-headers-uname -r

    2. iscsitarget

    3. iscsitarget-dkms

  3. Establecer la IP en la que escuchará el target (IP del servidor) y habilitar el inicio del duende en el archivo /etc/default/iscsitarget:

    • ISCSITARGET_ENABLE=true
      
      # ietd options
      # See ietd(8) for details
      ISCSITARGET_OPTIONS="--address X.X.X.X"
  4. Editar el archivo de configuración /etc/iet/ietd.conf (Descomentar las siguientes lineas y agregar la informacón correspondiente):

    • # Authentication for discovery sessions.
      IncomingUser [username] [password]
      OutgoingUser [username] [password]
      
      # Targets definitions start with "Target" and the target name.
      Target iqn.2012-07.com.prueba:disk1                #Referencia http://www.ietf.org/rfc/rfc3720.txt 
      
      # Authentication for Target.
      IncomingUser [username] [password]
      OutgoingUser [username] [password]
      
      # Logical Unit definition.
      Lun 0 Path=/dev/vg1/lvm3,Type=fileio
  5. Establecer la configuración para el control de acceso al Target en los archivos /etc/iet/initiators.allow /etc/iet/targets.allow

    • iqn.2012-07.com.prueba:disk1 [Direccion de red / Mascara]

  6. Iniciar/Reiniciar el servicio:
    • /etc/init.d/iscsitarget start

Preparación de arranque por red (iPXE Booting)

Preparación del servidor TFTP

TFTP son las siglas de Trivial file transfer Protocol (Protocolo de transferencia de archivos trivial). Es un protocolo de transferencia muy simple semejante a una versión básica de FTP. TFTP a menudo se utiliza para transferir pequeños archivos entre ordenadores en una red [6]. Existen varios servidores TFTP como atftpd y tftpd-hpa, se recomienda trabajar con el primero, ya que el segundo presentó problemas de estabilidad. El directorio de trabajo predeterminado para ambos duendes es: /var/lib/tftpboot, este se puede cambiar.

El servicio TFTP se encargará de exportar la imagen de arranque PXE, en este caso pxelinux.0 como se define en la configuración del DCHP.

  1. Instalar el paquete atftpd

  2. Crear el directorio que contendrá los archivos a transferir para la instalación y darle los permisos, usuarios y grupos oportunos:
    • mkdir -P /srv/tftp/installer-jessie

      mkdir -P /srv/tftp/iPXE

      chmod -R 777 /srv/tftp

  3. Editar el archivo /etc/default/atftpd y especificar las opciones para el arranque del servicio, como: directorio, dirección IP, etc.:

    • USE_INETD=false
      OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 --bind-address [x.x.x.x] /srv/tftp"
    • En dicho archivo de configuración se ha desactivado el uso por inetd; se ha activado el servicio atftpd con su propio guión de inicio donde se definió la subred de trabajo, la dirección IP donde escuchará las peticiones y finalmente el directorio de trabajo del servidor TFPT.
  4. Descargar el paquete que proporciona los archivos necesarios para la instalación del sistema operativo por red:
    1. Instalar debian-installer-8-netboot-amd64 desde el repositorio:
      • aptitude update

        aptitude install debian-installer-8-netboot-amd64

    2. Los archivos están en /usr/lib/debian-installer/images/8/amd64/text/debian-installer

    3. Crear un enlace simbólico desde el directorio creado para tftp para los archivos de instalación hacia /usr/lib/debian-installer/images/8/amd64/text/debian-installer:

      • ln -s /usr/lib/debian-installer/images/8/amd64/text/*  /srv/tftp/installer-jessie/

  5. Clonar el repositorio el código fuente de iPXE (Es un gestor de arranque que puede ser utilizado para permitir que los equipos puedan arrancar desde la red, o extender una aplicación PXE existente con soporte para protocolos adicionales):
    • git clone git://git.ipxe.org/ipxe.git

      cd ipxe/src

  6. Activar el soporte a VLAN en el código fuente de iPXE (ipxe/src/config/general.h):

    • #define VLAN_CMD                /* VLAN commands */ 
  7. Compilar el código undionly.kpxe:
    • make bin/undionly.kpxe

  8. Mover el archivo compilado al directorio de publicación del servidor TFTP:
    • mv undionly.kpxe /srv/tftp/iPXE

  9. Reiniciar el servicio atftpd:
    • /etc/init.d/atftpd restart

Preparación del servidor DHCP

DHCP (siglas en inglés de Dynamic Host Configuration Protocol, en castellano «protocolo de configuración dinámica de host») es un protocolo de red que permite a los clientes de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van quedando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después. [7]

El servidor DHCP se encargará de asignar una dirección IP estática correspondiente a la MAC de servidor, por la cual se exportará el archivo necesario para cargar el instalador del sistema operativo Debian.

  1. Instalar el paquete isc-dhcp-server

  2. Modificar el archivo de configuración /etc/dhcp/dhcpd.conf descomentando y agregando las siguientes lineas:

    • #Opciones para ipxe
      
        option space ipxe;
        option ipxe-encap-opts code 175 = encapsulate ipxe;
        option ipxe.priority code 1 = signed integer 8;
        option ipxe.keep-san code 8 = unsigned integer 8;
        option ipxe.skip-san-boot code 9 = unsigned integer 8;
        option ipxe.scriptlet code 81 = string;
        option ipxe.syslogs code 85 = string;
        option ipxe.cert code 91 = string;
        option ipxe.privkey code 92 = string;
        option ipxe.crosscert code 93 = string;
        option ipxe.no-pxedhcp code 176 = unsigned integer 8;
        option ipxe.bus-id code 177 = string;
        option ipxe.bios-drive code 189 = unsigned integer 8;
        option ipxe.username code 190 = string;
        option ipxe.password code 191 = string;
        option ipxe.reverse-username code 192 = string;
        option ipxe.reverse-password code 193 = string;
        option ipxe.version code 235 = string;
        option iscsi-initiator-iqn code 203 = string;
        # Feature indicators
        option ipxe.pxeext code 16 = unsigned integer 8;
        option ipxe.iscsi code 17 = unsigned integer 8;
        option ipxe.aoe code 18 = unsigned integer 8;
        option ipxe.http code 19 = unsigned integer 8;
        option ipxe.https code 20 = unsigned integer 8;
        option ipxe.tftp code 21 = unsigned integer 8;
        option ipxe.ftp code 22 = unsigned integer 8;
        option ipxe.dns code 23 = unsigned integer 8;
        option ipxe.bzimage code 24 = unsigned integer 8;
        option ipxe.multiboot code 25 = unsigned integer 8;
        option ipxe.slam code 26 = unsigned integer 8;
        option ipxe.srp code 27 = unsigned integer 8;
        option ipxe.nbi code 32 = unsigned integer 8;
        option ipxe.pxe code 33 = unsigned integer 8;
        option ipxe.elf code 34 = unsigned integer 8;
        option ipxe.comboot code 35 = unsigned integer 8;
        option ipxe.efi code 36 = unsigned integer 8;
        option ipxe.fcoe code 37 = unsigned integer 8;
        option ipxe.vlan code 38 = unsigned integer 8;
        option ipxe.menu code 39 = unsigned integer 8;
        option ipxe.sdi  code 40 = unsigned integer 8;
       
      
      # option definitions common to all supported networks...
      option domain-name "nombre_server";
      option domain-name-servers x.x.x.x;
      
      default-lease-time 600;
      max-lease-time 7200;
      
      log-facility local7;
      
      subnet x.x.x.0 netmask 255.255.255.0 {
      }
      
      group {
              host  [HostName] {
                      hardware ethernet xx:xx:xx:xx:xx:xx;
                      fixed-address X.X.X.X;
                      option routers x.x.x.x;
                      if exists user-class and option user-class = "iPXE" {
                          next-server x.x.x.x;
                          filename "/srv/tftp/installer-jessie/pxelinux.0";
                          option iscsi-initiator-iqn "iqn.2010-04.org.ipxe:client123"; # Se debe colocar el mismo iqn que quedó en el sistema instalado,
                                                                                       # para facilitar la configuración del control de acceso al target.
                          option root-path "iscsi:X.X.X.X::::iqn.2012-07.com.prueba:disk1";  #X.X.X.X es IP del servidor que publica el Target
                          option ipxe.username "[username]";
                          option ipxe.password "[password]";
                          option ipxe.reverse-username "[username]";
                          option ipxe.reverse-password "[password]";
                      } else {
                          next-server X.X.X.X;
                          filename "/srv/tftp/ipxe/undionly.kpxe";
                          option ipxe.scriptlet "set keep-san 1; set skip-san-boot 1; vcreate --tag 0233 net0 && autoboot net0-0233 || vcreate --tag 0233 net1 && autoboot net1-0233";
                      }
              }
      }
  3. Reiniciar el servicio DHCP:
    • systemctl restart isc-dhcp-server

Instalación del sistema operativo en el servidor sin disco

  1. Configurar el servidor sin disco para que arranque por red (PXE):
    1. Iniciar el servidor.
    2. Presionar F12 para "PXE Boot":
      • Seleccionar la tarjeta de red deseada para el arranque por red.
  2. En virtualbox es necesario instalar el "VirtualBox Extension Pack" para el PXE, listado https://www.virtualbox.org/wiki/Downloads:

    • # Por ejemplo para la versión 4.3.34:
      wget http://download.virtualbox.org/virtualbox/4.3.34/Oracle_VM_VirtualBox_Extension_Pack-4.3.34-104062.vbox-extpack
  3. Al cargar el instalador de Debian se presenta un menú de instalación, donde se despliega las diferentes forma de realizar la misma: En modo gráfico (Graphical Install) se realiza la instalación de una manera vistosa, en modo texto (Install) se realiza la instalación utilizando menos recursos y de manera más simple. Para este caso se utilizará el modo experto (Expert Install) ya que permite realizar más configuraciones durante la instalación:
    1. Seleccionar "opciones avanzadas" (Advanced options). Se puede observar diferentes opciones entre ellas el modo de rescate (Rescue mode) que es de mucha ayuda para recuperar el funcionamiento del sistema en el caso que ocurra un error grave.
    2. Seleccionar la opción "Instalación experta" (Expert install), y comenzará a cargar el instalador, al finalizar la carga de este, nos presentará el menú principal.
  4. Cambiar lenguaje del instalador (Choose language):
    1. Seleccionar "Spanish"
  5. Seleccionar su ubicación geográfica:
    1. Seleccionar Venezuela (Opcional)
  6. Configurar la localización:
    1. Seleccionar "Venezuela es_VE.UTF-8"
  7. Localizaciones adicionales:
    1. Seleccionar ninguna (Opcional).
  8. Configurar el teclado (Mapa de teclado a usar):
    1. Seleccionar el que sea apropiado para la consola del servidor, por ejemplo "Latinoamericano", "Español", etc.
  9. Detección del hardware de red:
    1. Si fuera necesario, previamente a este paso se debe preparar una memoria USB con los firmware que requiera la tarjeta de red del servidor, ejemplo: firmware bnx2, desde repositorio firmware-nonfree (debian). Para ello se debe colocar el archivo .deb en la raíz del sistema de archivos de la memoria; es conveniente que ella esté conectada al servidor antes de seleccionar la detección del hardware de red en el menú.
    2. En caso que faltara algún firmware, el instalador le preguntará si desea cargar los controladores que faltan de un medio extraíble:
      • Seleccionar la opción "Si".
      • En caso de que el instalador no pueda montar la memoria USB, se debe montar desde la consola de BusyBox. por ejemplo:

        mount /dev/sdz1 /media
        Nota: Para el ejemplo se asume que el dispositivo USB fue reconocido por el sistema como sdz.
      • Regresar a la instalación y seleccionar la opción "Si". Nota: Repetir el montaje del dispositivo cada vez que solicite un firmware hasta finalizar el proceso.
    3. Luego que se complete la detección del hardware de red se deben retirar las memorias USB que se haya necesitado conectar, previa verificación que están desmontadas (por ejemplo usando el comando mount en BusyBox). De esta manera la denominación del disco iSCSI no se verá influenciada por la presencia de las memorias USB.

  10. Paso previo a configurar la red, debemos crear y activar la VLAN, para que sea detectada como una interfaz en el paso siguiente:
    1. Desde la consola de BusyBox crear y activar la interfaz para VLAN:

      • ip link add link eth0 name eth0.233 type vlan id 233
  11. Configurar la red
    1. Tiempo de espera (en segundos) para la detección de enlace:
      • Dejar el tiempo por defecto (3 segundos).
    2. Interfaz de red primaria:
      • En nuestro caso la conexión es por VLAN, la interfaz eth0.233.
    3. Desea configurar automáticamente la red:
      • En este momento se debe activar la interfaz base desde la consola de BusyBox, para que se pueda realizar la configuración automática. Para ello se usa el comando:

        • ip link set eth0 up
      • Luego en el instalador seleccionar "Si" para proceder con la configuración automática.
    4. Tiempo de espera (en segundos) para la detección de enlace:
      • Dejar el tiempo por omisión (3 segundos).
    5. En caso que no se complete exitosamente la configuración automática, se debe verificar que se encuentre activada la interfaz de vlan y la interfaz base.
    6. Nombre de la maquina:
      •  cenditel-prueba00 

    7. Nombre de dominio:
      •  cenditel 

  12. Escoja una réplica de Debian:
    1. Protocolo para descargar ficheros:
      • Seleccionar "http"
    2. País de la réplica de Debian:
      • En nuestro caso, seleccionar "Introducir información manualmente"
    3. Nombre del servidor de la réplica de Debian:
      • Escribir "debian.cenditel"
        • Directorio de réplica:
          • Escribir "/debian/"
      • Información de proxy HTTP:
        • Dejar en blanco.
      • Versión de Debian a instalar
        • Seleccionar "Jessie (estable)"
  13. Descargar componentos del instalador (Para particiones de disco y LVM):
    1. Lvmcfg: Configure the Local Volumen Manager
    2. Parted- udeb: Manually partition a hard drive
  14. Configurar usuarios y contraseñas:
    1. ¿Habilito las contraseñas ocultas (shadow)?
      • Seleccionar "Si"
    2. ¿Permitir acceso como superusuario (root)?:
      • Seleccionar "Si"
    3. Clave de superusuario:
      • Escribir la contraseña: xxxxxx
    4. ¿Crear una cuenta de usuario normal?:
      • Seleccionar "Si"
    5. Nombre completo para el nuevo usuario:
      • Escribir el nombre: prueba
    6. Nombre de usuario para la cuenta
      • Escribir el nombre: prueba
    7. Elija una contraseña para el nuevo usuario:
      • Escribir la contraseña: xxxxxx

  15. Configurar el reloj:
    1. Fijar la hora con NTP:
      • Seleccionar "Si"
    2. Servidor NTP a usar:
      • Escribir el dominio del servidor ntp a usar, ejemplo: ntp.cenditel
    3. Seleccione su zona horaria:
      • Seleccionar "America/Caracas"
  16. Detectar discos. En este paso sólo se habilitarán los módulos para la conexión iSCSI pero todavía no se realizará la conexión con el target.
    1. Instalar el módulo iscsi_tcp
    2. Seleccionar "Continuar sin disco".
  17. Configuración del Open-iscsi en la consola de BusyBox:

    1. Seleccionar "Particionado de discos", para que se complete la preparación de las herramientas de manejo de discos, conexiones iSCSI y volúmenes lógicos.
    2. Seleccionar "Configurar volúmenes iSCSI", con lo cual se activan los módulos del núcleo necesarios para realizar la conexión. Ella no obstante se configurará mediante la consola de BusyBox para poder utilizar los datos de acceso transferidos por iPXE via iBFT.

    3. Activar consola de BusyBox.

    4. Activar módulo iscsi_ibft.
      • modprobe iscsi_ibft
    5. Verificar la presencia de los siguientes módulos necesarios para el funcionamiento del iniciador:
      • Listar los módulos para iscsi, debe aparecer los siguientes:
        • lsmod | grep iscsi
          
          iscsi_ibft                12725    0
          iscsi_boot_sysfs          12922    1    iscsi_ibft
          iscsi_tcp                 17580    0 
          libiscsi_tcp              21554    1    iscsi_tcp
          libiscsi                  48051    3    libiscsi_tcp,iscsi_tcp,ib_iser
          scsi_transport_iscsi      77475    4    iscsi_tcp,ib_iser,libiscsi
          scsi_mod                  186757   8    sg,scsi_transport_iscsi,libata,sd_mod,sr_mod,iscsi_tcp,ib_iser,libiscsi
    6. En caso que no estén presentes todos los módulos, se pueden activar de la siguiente manera:
      • Instalar el módulo del protocolo TCP para iSCSI:
        • modprobe iscsi_tcp
          modprobe iscsi_ibft
    7. Activar conexión iscsi al lun especificado mediante las opciones de dhcp, transferidas vía iBFT por el iPXE.
      • iscistart -b
    8. Verificar que esté presente el nombre del iniciador, generado automáticamente, en /etc/iscsi/initiatiorname.iscsi. En caso contrario se puede colocar de la forma siguiente:

      • echo InitiatorName=iqn.2012-08.com.laurac:01:712b532ec15a >> /etc/iscsi/initiatorname.iscsi

    9. Comprobar la conexión al dispositivo:
      • ls /dev/s*

        parted /dev/sda unit s print Nota: se asume que el dispositivo iSCSI le es asignada la ruta /dev/sda por cuanto previamente se han retirado cualesquiera otros dispositivos de almacenamiento, en todo caso esto debe verificarse que la salida del comando parted es congruente con el resultado esperado para el dispositivo iSCSI.

  18. Una vez completada la conexión al dispositivo iSCSI se procede a preparar el esquema de almacenamiento de datos. En este ejemplo se utilizará un sistema de archivos btrfs con subvolúmenes ocupando todo el dispositivo, sin usar tabla de particiones:
    • mkfs.btrfs --label <etiqueta> /dev/sda
  19. Luego se regresa al instalador y se selecciona la opción "Finalizar" para regresar a la pantalla del proceso "Particionado de Discos", y luego se regresa al menú principal.
  20. Antes de continuar se deberá preparar el acceso a los sistemas de archivo para la subsiguiente instalación del sistema operativo, para ello desde la consola de BusyBox se ejecutan los siguientes comandos:

    • mount -o compress=lzo /dev/sda /mnt
      btrfs subvolume create /mnt/raiz
      btrfs subvolume create /mnt/var
      umount /mnt
      mkdir /target
      mount -o subvol=raiz,compress=lzo /dev/sda /target
      mkdir /target/var
      mount -o subvol=var,compress=lzo /dev/sda /target/var
  21. Regresar al instalador y seleccionar el paso "Instalar el sistema base".
    1. Cuando indique que se necesita completar el paso de particionado de discos, seleccionar en cambio la opción "Regresar". Ello puede necesitarse realizar dos veces antes de que el instalador efectivamente proceda a instalar el sistema base en el esquema de almacenamiento preparado desde BusyBox.

  22. Elegir el núcleo a instalar:
    1. Seleccionar linux-image-amd64
  23. Controladores a incluir en initrd:
    1. Seleccionar Genérico: incluir todo los controladores disponibles

  24. Configurar el gestor de paquetes.
    1. ¿Usar software no libre?: No
    2. Servicios a utilizar: se mantiene la configuración preestablecida con los servicios de actualizaciones de seguridad y actualizaciones de la versión, continuar.
  25. Seleccionar e instalar programas.
    1. ¿Desea participar en la encuesta sobre el uso de los paquetes?: No.
    2. ¿Quiere que man y man-db se instalen 'setuid man'?: No.
    3. Elegir los programas a instalar: SSH server y utilidades estándar del sistema.
  26. Instalar el cargador de arranque GRUB.
    1. En caso indique que se necesita completar el paso de particionado de discos, seleccionar en cambio la opción "Regresar".
    2. ¿Desea instalar el cargador de arranque GRUB en el registro principal de arranque?: Si. Nota: Tener en cuenta la ruta asignada al dispositivo iSCSI, por ejemplo /dev/sda, e instalar el GRUB en ella. Para ello es conveniente usar la opción de ingresar la ruta manualmente para asegurarse que el instalador use la ruta correcta.
      • En caso se reporte un error en el proceso de instalación de GRUB, y en la bitácora detallada (consola 4) se indique que el error es debido a que no se pudo marcar una partición como activa, entonces ese error puede ignorarse cuando el sistema de archivos reside directamente en el dispositivo de almacenamiento y no existe entonces una tabla de particiones. En ese caso se puede seleccionar la opción de continuar sin cargador de arranque, dado que realmente el cargador de arraque si fue instalad y configurado pero debido al asunto de la tabla de particiones el instalador asume que está incompleto.
  27. NO TERMINAR LA INSTALACIÓN, se tiene que configurar el proceso de la conexión al dispositivo mediante iSCSI con vlan en el initrd, en este caso se incorporará también la activación de interfaz fusionada (bonding):
    1. Ir a la consola de comandos de BusyBox.

    2. Revisar que todos los dispositivos estén montados y, si fuera necesario, montar los sistemas de archivos para gestión:
      • df

         mount --bind /dev /target/dev 

         mount --bind /proc /target/proc 

         mount --bind /sys /target/sys 

    3. Crear el entorno virtual con la llamada al sistema "chroot":
      • chroot /target /bin/bash

    4. Instalar los siguientes paquetes:
      • aptitude install open-iscsi
        Pude ocurrir que el proceso de instalación emita una advertencia o error al no poder activar el servicio de iniciador, entonces se necesitará completar la configuración con dpkg --configure -a luego de reiniciar el servidor.
    5. Verificar que el paquete initramfs-tools se encuentre instalado.

    6. Agregar los módulos de la tarjeta de red, iSCSI, VLAN y bonding al initramfs:
      • echo bnx2 >> /etc/initramfs-tools/modules
        echo 8021q >> /etc/initramfs-tools/modules
        echo iscsi_tcp >> /etc/initramfs-tools/modules
        echo "bonding mode=802.3ad ad_select=bandwidth xmit_hash_policy=layer2+3 miimon=100 downdelay=200 updelay=200 max_bonds=1" \
              >> /etc/initramfs-tools/modules
        En caso de necesitarse configurar el bonding en modo estático, por limitaciones del conmutador por ejemplo, se puede usar lo siguiente:
        echo "bonding mode=balance-xor xmit_hash_policy=layer2+3 miimon=100 downdelay=200 updelay=200 max_bonds=1" \
              >> /etc/initramfs-tools/modules
    7. Agregar el guión que ejecutará los comandos para la conexión de la red mediante vlan, en /etc/initramfs-tools/scripts/init-premount/bonding_vlan

      • PREREQ=""
        prereqs()
        {
                echo "$PREREQ"
        }
        
        case $1 in
        # get pre-requisites
        prereqs)
                prereqs
                exit 0
                ;;
        esac
        
        ip link set bond0 up
        ip link set bond0 mtu 9000
        ip link set eth0  mtu 9000
        ip link set eth1  mtu 9000
        echo +eth0 > /sys/class/net/bond0/bonding/slaves
        echo +eth1 > /sys/class/net/bond0/bonding/slaves
        ip link add link bond0 name bond0.233 type vlan id 233
        ip link set bond0.233 up
        ip link set bond0.233 mtu 9000
    8. Colocar permisos de ejecución al archivo bonding_vlan

      •  chmod 755 /etc/initramfs/scripts/init-premount/bonding_vlan

    9. Activar y definir el dispositivo de red en /etc/initramfs-tools/initramfs.conf, con la siguiente variable:

      •  DEVICE=bond0.233 

    10. En caso el nombre del iniciador no esté presente en /etc/iscsi/initiatiorname.iscsi se puede agregar de la siguiente forma:

      • echo InitiatorName=iqn.2014-08.com.laurac:01:712b532ec15b >> /etc/iscsi/initiatorname.iscsi

    11. Crear el siguiente archivo para que se incluya el nuevo initrd:
      • touch /etc/iscsi/iscsi.initramfs

    12. Agregar especificación de configuración automática en /etc/iscsi/iscsi.initramfs:

      • ISCSI_AUTO=true
    13. Colocar permisos apropiados al archivo /etc/iscsi/iscsi.initramfs:
      • chmod 600 /etc/iscsi/iscsi.initramfs
    14. Verificar que se encuentren presentes los firmware que puedan ser necesarios para la tarjeta de red del servidor en /lib/firmware, en caso contrario instalarlos usando aptitude ó con el archivo .deb correspondiente en un dispositivo USB.
    15. Algunas interfaces de red pueden necesitar cargar archivos de firmware, en ese caso se debe programar su incorporación al initramfs, creando el siguiente archivo en /etc/initramfs-tools/hooks/firmware y ajustando la ruta de origen según sea necesario:

      • PREREQ=""
        prereqs()
        {
                echo "$PREREQ"
        }
        
        case $1 in
        # get pre-requisites
        prereqs)
                prereqs
                exit 0
                ;;
        esac
        
        . /usr/share/initramfs-tools/hook-functions
        cp -r /lib/firmware/bnx2 ${DESTDIR}/lib/firmware/
      • Colocar permisos de ejecución al archivo firmware

        •  chmod 755 /etc/initramfs/hooks/firmware

      • Verificación y modificación del gestor de arranque (grub):
        • Agregar al archivo /etc/default/grubla opción para DHCP a los argumentos para el núcleo:

          • GRUB_CMDLINE_LINUX_DEFAULT="quiet ip=dhcp"
    16. Verificar que el archivo /etc/fstab esté presente y con el contenido apropiado. En caso que se necesite construirlo, se pueden utilizar los datos proporcionados por los archivos /etc/mtab /proc/mounts y el comando blkid. Si se utilizan subvolúmenes de un sistema de archivo btrfs se debe cuidar que ellos estén especificados en el fstab con la opción de montaje correspondiente.
    17. En caso de utilizarse un sistema de archivo btrfs, se debe verificar que esté instalado el paquete btrfs-tools
    18. Actualizar el initramfs y el GRUB
      • update-initramfs -u

        update-grub

    19. Si se desea revisar la nueva configuración de initrd, realizar lo siguiente:
      • cd root

        mkdir initnew

        cd initnew

        zcat /boot/initrd.img-3.16.0-4-amd64 | cpio -idv

        cat etc/iscsi.initramfs

        cat etc/initiatorname.iscsi

  28. Terminar la instalación
  29. Modificar el servidor DHCP con iPXE:
    1. Modificar lo que se publica por DHCP a la maquina cliente:
      • group {
                host  [HostName] {
                        hardware ethernet 00:00:00:00:00:00;
                        fixed-address X.X.X.X;
                        if exists user-class and option user-class = "iPXE" {
                            option iscsi-initiator-iqn "iqn.2010-04.org.ipxe:client123"; # Se debe colocar el mismo iqn que quedó en el sistema instalado,
                                                                                         # para facilitar la configuración del control de acceso al target.
                            option root-path "iscsi:X.X.X.X::::iqn.2012-07.com.prueba:disk1";  #X.X.X.X es IP del servidor que publica el Target
                            option ipxe.username "[username]";
                            option ipxe.password "[password]";
                            option ipxe.reverse-username "[username]";
                            option ipxe.reverse-password "[password]";
                        } else {
                            next-server X.X.X.X;
                            filename "/srv/tftp/ipxe/undionly.kpxe";
                            option ipxe.scriptlet "set keep-san 1; vcreate --tag 0233 net0 && autoboot net0-0233 || vcreate --tag 0233 net1 && autoboot net1-0233";
                        }
                 }
        }
        ##Esta configuración del servidor DHCP proporcionará en forma cotidiana la conexión del dispositivo iSCSI y la maquina sin disco.
  30. Iniciar la maquina cliente:
    1. Recibe la IP mediante dhcp.
    2. Recibe en el archivo de iPXE y los datos correspondiente del dispositivo iSCSI.
  31. Revisar si el nombre del iniciador esta en initrd:
    • mkdir initnew

      cd initnew

      zcat /boot/initrd.img-2.6.32-5-amd64 | cpio -idv

      cat etc/iscsi.initramfs

      cat etc/initiatorname.iscsi

Referencias Bibliograficas

[1] http://www.debian.org/distrib/netinst

[2] http://wiki.debian.org/PXEBootInstall

[3] http://www.syslinux.org/wiki/index.php/PXELINUX

[4] http://sys-admin.wikidot.com/iscsi-on-linux-system

[5] http://www.ietf.org/rfc/rfc3720.txt

[6] http://es.wikipedia.org/wiki/TFTP

[7] http://es.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

infra_red/iscsi_vlan_jessie (última edición 2016-03-02 15:26:52 efectuada por ddiaz)