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:
- Servidor con servicio iSCSI target (Maquina Virtual Xen 1).
- Servidor con servicio TFTP y DHCP (Maquina Virtual Xen 2).
- Servidor sin disco.
- 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]
- Preparar los dispositivos de almacenamiento que constituirán los LUN (volúmenes lógicos, particiones, etc.).
- 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
- Crea un volumen lógico (nombre y tamaño según sus requerimientos), no es necesario crear particiones:
- Instalar los siguientes paquetes:
linux-headers-uname -r
iscsitarget
iscsitarget-dkms
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"
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
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]
- 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.
Instalar el paquete atftpd
- 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
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.
- Descargar el paquete que proporciona los archivos necesarios para la instalación del sistema operativo por red:
- Instalar debian-installer-8-netboot-amd64 desde el repositorio:
aptitude update
aptitude install debian-installer-8-netboot-amd64
Los archivos están en /usr/lib/debian-installer/images/8/amd64/text/debian-installer
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/
- Instalar debian-installer-8-netboot-amd64 desde el repositorio:
- 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
Activar el soporte a VLAN en el código fuente de iPXE (ipxe/src/config/general.h):
#define VLAN_CMD /* VLAN commands */
- Compilar el código undionly.kpxe:
make bin/undionly.kpxe
- Mover el archivo compilado al directorio de publicación del servidor TFTP:
mv undionly.kpxe /srv/tftp/iPXE
- 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.
Instalar el paquete isc-dhcp-server
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"; } } }
- Reiniciar el servicio DHCP:
systemctl restart isc-dhcp-server
Instalación del sistema operativo en el servidor sin disco
- Configurar el servidor sin disco para que arranque por red (PXE):
- Iniciar el servidor.
- Presionar F12 para "PXE Boot":
- Seleccionar la tarjeta de red deseada para el arranque por red.
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
- 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:
- 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.
- 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.
- Cambiar lenguaje del instalador (Choose language):
- Seleccionar "Spanish"
- Seleccionar su ubicación geográfica:
- Seleccionar Venezuela (Opcional)
- Configurar la localización:
- Seleccionar "Venezuela es_VE.UTF-8"
- Localizaciones adicionales:
- Seleccionar ninguna (Opcional).
- Configurar el teclado (Mapa de teclado a usar):
- Seleccionar el que sea apropiado para la consola del servidor, por ejemplo "Latinoamericano", "Español", etc.
- Detección del hardware de red:
- 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ú.
- 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.
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.
- Paso previo a configurar la red, debemos crear y activar la VLAN, para que sea detectada como una interfaz en el paso siguiente:
Desde la consola de BusyBox crear y activar la interfaz para VLAN:
ip link add link eth0 name eth0.233 type vlan id 233
- Configurar la red
- Tiempo de espera (en segundos) para la detección de enlace:
- Dejar el tiempo por defecto (3 segundos).
- Interfaz de red primaria:
- En nuestro caso la conexión es por VLAN, la interfaz eth0.233.
- 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.
- Tiempo de espera (en segundos) para la detección de enlace:
- Dejar el tiempo por omisión (3 segundos).
- 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.
- Nombre de la maquina:
cenditel-prueba00
- Nombre de dominio:
cenditel
- Tiempo de espera (en segundos) para la detección de enlace:
- Escoja una réplica de Debian:
- Protocolo para descargar ficheros:
- Seleccionar "http"
- País de la réplica de Debian:
- En nuestro caso, seleccionar "Introducir información manualmente"
- Nombre del servidor de la réplica de Debian:
- Escribir "debian.cenditel"
- Directorio de réplica:
- Escribir "/debian/"
- Directorio de réplica:
- Información de proxy HTTP:
- Dejar en blanco.
- Versión de Debian a instalar
- Seleccionar "Jessie (estable)"
- Escribir "debian.cenditel"
- Protocolo para descargar ficheros:
- Descargar componentos del instalador (Para particiones de disco y LVM):
- Lvmcfg: Configure the Local Volumen Manager
- Parted- udeb: Manually partition a hard drive
- Configurar usuarios y contraseñas:
- ¿Habilito las contraseñas ocultas (shadow)?
- Seleccionar "Si"
- ¿Permitir acceso como superusuario (root)?:
- Seleccionar "Si"
- Clave de superusuario:
- Escribir la contraseña: xxxxxx
- ¿Crear una cuenta de usuario normal?:
- Seleccionar "Si"
- Nombre completo para el nuevo usuario:
- Escribir el nombre: prueba
- Nombre de usuario para la cuenta
- Escribir el nombre: prueba
- Elija una contraseña para el nuevo usuario:
Escribir la contraseña: xxxxxx
- ¿Habilito las contraseñas ocultas (shadow)?
- Configurar el reloj:
- Fijar la hora con NTP:
- Seleccionar "Si"
- Servidor NTP a usar:
- Escribir el dominio del servidor ntp a usar, ejemplo: ntp.cenditel
- Seleccione su zona horaria:
- Seleccionar "America/Caracas"
- Fijar la hora con NTP:
- 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.
- Instalar el módulo iscsi_tcp
- Seleccionar "Continuar sin disco".
Configuración del Open-iscsi en la consola de BusyBox:
- 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.
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.
Activar consola de BusyBox.
- Activar módulo iscsi_ibft.
modprobe iscsi_ibft
- 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
- Listar los módulos para iscsi, debe aparecer los siguientes:
- 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
- Instalar el módulo del protocolo TCP para iSCSI:
- Activar conexión iscsi al lun especificado mediante las opciones de dhcp, transferidas vía iBFT por el iPXE.
iscistart -b
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
- 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.
- 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
- 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.
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
- Regresar al instalador y seleccionar el paso "Instalar el sistema base".
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.
- Elegir el núcleo a instalar:
- Seleccionar linux-image-amd64
- Controladores a incluir en initrd:
Seleccionar Genérico: incluir todo los controladores disponibles
- Configurar el gestor de paquetes.
- ¿Usar software no libre?: No
- Servicios a utilizar: se mantiene la configuración preestablecida con los servicios de actualizaciones de seguridad y actualizaciones de la versión, continuar.
- Seleccionar e instalar programas.
- ¿Desea participar en la encuesta sobre el uso de los paquetes?: No.
- ¿Quiere que man y man-db se instalen 'setuid man'?: No.
- Elegir los programas a instalar: SSH server y utilidades estándar del sistema.
- Instalar el cargador de arranque GRUB.
- En caso indique que se necesita completar el paso de particionado de discos, seleccionar en cambio la opción "Regresar".
- ¿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.
- 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):
Ir a la consola de comandos de BusyBox.
- 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
- Crear el entorno virtual con la llamada al sistema "chroot":
chroot /target /bin/bash
- 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.
Verificar que el paquete initramfs-tools se encuentre instalado.
- 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
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
Colocar permisos de ejecución al archivo bonding_vlan
chmod 755 /etc/initramfs/scripts/init-premount/bonding_vlan
Activar y definir el dispositivo de red en /etc/initramfs-tools/initramfs.conf, con la siguiente variable:
DEVICE=bond0.233
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
- Crear el siguiente archivo para que se incluya el nuevo initrd:
touch /etc/iscsi/iscsi.initramfs
Agregar especificación de configuración automática en /etc/iscsi/iscsi.initramfs:
ISCSI_AUTO=true
- Colocar permisos apropiados al archivo /etc/iscsi/iscsi.initramfs:
chmod 600 /etc/iscsi/iscsi.initramfs
- 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.
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"
- 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.
- En caso de utilizarse un sistema de archivo btrfs, se debe verificar que esté instalado el paquete btrfs-tools
- Actualizar el initramfs y el GRUB
update-initramfs -u
update-grub
- 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
- Terminar la instalación
- Modificar el servidor DHCP con iPXE:
- 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.
- Modificar lo que se publica por DHCP a la maquina cliente:
- Iniciar la maquina cliente:
- Recibe la IP mediante dhcp.
- Recibe en el archivo de iPXE y los datos correspondiente del dispositivo iSCSI.
- 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