sábado, 16 de diciembre de 2017

Han pasado un par de años desde que no escribo en el blog. Dos años en los que no he utilizado sistemas Linux, y la verdad es que lo echaba de menos. Por fin toca volver a tocar temas de virtualización, despliege de sistemas y gestión de redes, y nada como comenzar por poner en marcha de nuevo  Slackware como sistema base. También estreno nueva maquina, un xiaomi pro notebook, con el que estoy realmente encantado. Sus 16GB de ram son suficientes para tareas de virtualización, y la ranura M2 de expansión de almacenamiento es ideal para añadir un segundo disco de 500GB que aloje las máquinas virtuales.
Como novedad respecto a instalaciones anteriores, queria instalar windows 10 y slackware con sistema de arranque UEFI en lugar de Legacy. Pues manos a la obra, primer paso instalar win10, sin ningún misterio, partición de 140GB, el solito crea las tres adicionales que necesita: recovery, EFI, MSR, y por fin, la de Windows.
Tras ello, comienza lo divertido, instalar slackware. Pocos cambios respecto a la instalación tradicional, el dvd de instalación detecta sin problema que esta arrancando en UEFI, y a través de GRUB2 comienza el proceso de instalación. A la hora de crear las particiones, en lugar de utilizar fdisk, toca usar gdisk para la tabla de particiones GPT propia de entorno UEFI. Al final de la instalación, en lugar de lilo, se instala elilo. Al terminar, no tendremos menu para seleccionar windows o linux, arranca slackware directamente. Para poner un menú de arranque en condiciones, debemos instalar un boot manager para UEFI, y esta todo muy bien documentado en slackdocs. Basicamente consiste en:

  • Instalar rEFIind desde slackbuilds.
  • Activar rEFInd ejecutando
    /usr/share/refind-${VERSION}/install.sh
     
  • Modificar opciones en refind.conf /boot/efi/EFI/refind
    • dont_scan_dirs ESP:/EFI/boot,EFI/Dell,EFI/memtest86
      dont_scan_dirs + EFI/Boot,EFI/Microsoft,EFI/Slackware,EFI/ubuntu
      dont_scan_files shim.efi,MokManager.efi,elilo-x86_64.efi,bootmgfw.efi,bootmgr.efi
      scan_all_linux_kernels false 
      scan_driver_dirs EFI/tools
       
Y con esto hemos terminado lo más básico, podemos configurar muchos más parametros pero con esto ya tenemos el boot manager UEFI instalado y configurado, por mi parte, he añadido un tema un poco más curioso, regular-theme.

sábado, 16 de agosto de 2014

Para el próximo curso tenia la clara idea de aligerar peso en la mochila, lo que implica no cargar con el portátil al trabajo, por lo que mi idea es trabajar por escritorio remoto y acceso a un proxmox para virtualizar. Utilizar Wake on lan permite encender el equipo remotamente cuando lo vayamos a utilizar, yo utilizo para tal fin una aplicación gratuita de Android denominada WOL. La configuración del PC es sencilla, en la BIOS nos aseguramos de que este habilitada la opción de WOL, aunque en algunas se denomina arranque (power on) a través de dispositivos pci o pcie. A continuación con nuestro sistema operativo Windows o Linux nos aseguramos que la opción de WOL este habilitada en la tarjeta de red, en el caso de Windows lo hacemos en la propiedades de la tarjeta de red (Fig 1 y 2), en Linux lo haríamos con la utilidad ethtool.


Fig 1. Configuración de la tarjeta de red.


Fig 2. Habilitar WOL.
Una vez configurado el equipo, la tarjeta de red estará a la espera de recibir el "Magic Packet" que lo encenderá. Si utilizamos un equipo en la misma red local para enviar el magic packet no habrá ningún problema, WOL trabaja en capa 2, es decir, con direcciones MAC, por lo que el paquete llegara a la tarjeta de red y encenderá el equipo. El problema lo tenemos al querer encender el equipo remotamente, en el router abrimos puertos que redirigimos a una dirección IP de la LAN, lo que nos obliga a que nuestro equipo tenga una IP fija, pero ¿un equipo apagado tiene dirección IP? la respuesta es clara. Cuando el equipo esta encendido, el router mantiene en su tabla ARP la relación de direcciones MAC con direcciones IP, lo que hace que tras apagar el equipo, durante un tiempo el router conozca la relación entre la IP y la MAC del equipo, pero en unos minutos sin generar tráfico borrara esta entrada de su tabla ARP, por lo que si recibe el magic packet del exterior no sabrá a que dirección MAC de la LAN se lo tiene que enviar. Por lo tanto, para realizar el WOL remotamente necesitamos:
  1. Abrir un puerto del router y redireccionarlo a la IP de la maquina.
  2. Añadir una entrada fija a la tabla ARP del router.
El primer paso es sencillo, varia en función del router pero simplemente es redirigir un puerto UDP del exterior a la dirección IP de nuestro equipo.
El segundo paso es algo más complicado, varia en función del router pero normalmente no puede hacerse a través del interface web. En mi caso, cuento con un router de telefónica, el BHS_RTA, el blanco que aparece el texto OBSERVA en el interface web avanzado por el puerto 8000. Una primera idea puede ser añadir una reserva en el servidor DHCP, pero este no la añade en el ARP así que ni lo probéis. Directamente, abrid una sesión por ssh con el router ( utilizando el putty por ejemplo), por defecto el usuario es root y la contraseña es también root. A continuación escribid el comando arp para ver la tabla que tenéis en el router. El comando para agregar una entrada estática es "arp -s IP MAC". Tras ello debemos comprobar que en la tabla ARP se indica que la entrada es permanente con las siglas PERM. En mi router (figura 3), se puede comprobar el resultado final, la IP del dispositivo a activar mediante WOL es la 210. Tras esto el WOL funciona perfectamente a través de internet. Por supuesto también hace falta tener configurado DDNS o una ip estática para poder enviar el magic packet al router desde el exterior.



Fig 3. Conexión ssh al router.


viernes, 19 de abril de 2013

Al igual que en los últimos 3 años por estas fechas, toca meterse en serio con el mantenimiento de la red y de los servidores.

Una de las tareas a realizar es hacer una nueva instalación de todo el software en una maquina virtual con slackware 14.  Una vez que este todo listo (servicios de squid, dns dhcp, moodle... etc) habrá que clonarlo para después ser restaurado en un volumen lógico sobre un RAID 1 en la maquina real. Casi nada... vamos a ver como hacerlo con la ayuda del indispensable DRBL y del disco de instalación de Slackware.

1) Creación de la imagen:

Una vez arrancado el sistema DRBL abrimos la terminal, nos pasamos a root con "sudo su" y , montamos la partición donde vamos a almacenar la imagen del sistema a clonar en la carpeta /home/partimag (disco usb externo o ubicación de red).  La partición sda1 en la partición / del sistema que deseamos clonar. En lugar de utilizar el asistente de clonezilla, utilizamos el siguiente comando para clonar la partición sda1 formateada en xfs: "partclone.xfs -s /dev/sda1 -o /home/partimag/sda1-xfs.img -c". Con esto tenemos la imagen en dicho archivo.

2) Creación del RAID1 + LVM.

De forma similar a lo explicado en este manual de instalación, tendremos que preparar el almacenamiento en el servidor. Ya que vamos a utilizar un RAID1, es necesario tener instalados dos discos físicos (sda y sdb). Arrancamos con DRBL e iniciamos la consola. Tras situarnos como root particionamos los discos creando particiones iguales con etiqueta fd. El tamaño de las particiones no será el del disco completo, dejaremos unos megas de espacio libre al final para evitar un bug (apartado 11 en el enlace) que dice lo siguiente:

11. mdadm warns about duplicate/similar superblocks; what gives?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  In certain configurations, especially if your last partition extends all the
  way to the end of the disk, mdadm may display a warning like:

    mdadm: WARNING /dev/hdc3 and /dev/hdc appear to have very similar
    superblocks. If they are really different, please --zero the superblock on
    one. If they are the same or overlap, please remove one from the DEVICE
    list in mdadm.conf.

  There are two ways to solve this:

  (a) recreate the arrays with version-1 superblocks, which is not always an
      option -- you cannot yet upgrade version-0 to version-1 superblocks for
      existing arrays.

  (b) instead of 'DEVICE partitions', list exactly those devices that are
      components of MD arrays on your system. So in the above example:

        - DEVICE partitions
        + DEVICE /dev/hd[ab]* /dev/hdc[123]

Dicho bug sucede con los metadatos versión 0.90 de mdadm utilizados para poder arrancar desde el gestor lilo.

En la siguiente imagen podemos ver las particiones, sda1 y sdb2 serán las utilizadas para el raid, y sdc1 es la que contiene el archivo de la imagen a restaurar.

A continuación creamos el raid y el LVM siguiendo los pasos de la entrada anterior, salvo por el parámetro de los metadatos.


3) Restauración de la imagen.

Restauramos la imagen desde sdc1 al lvm raiz con la utilidad partclone.xfs. Al finalizar ya podemos apagar la máquina, para configurar el arranque utilizaremos el DVD de instalación de Slackware.


4) Configuración del arranque.

Para arrancar la maquina con la imagen restaurada, tendremos que crear un initrd con soporte raid y lvm, configurar el archivo /etc/fstab, y configurar e instalar el gestor de arranque lilo. Comenzamos¡.

En primer lugar, nada más arrancar, activamos el volumen lógico con el comando "vgchange -a y". A continuación lo montamos en /mnt, hacemos un cambio de raíz y creamos el initrd. Nos da un error al no tener una tabla de particiones valida, pero lo solucionamos copiando el archivo /proc/partitions del sistema operativo de instalación.

A continuación, modificamos el archivo /etc/fstab, modificando /dev/sda1 por /dev/volumen/raiz. Tras ello, editamos el archivo /etc/lilo.conf, modificando la linea boot=/dev/sda por boot=/dev/md0 y añadiendo a continuación "raid-extra-boot = mbr-only". A continuación, al final del fichero lo editamos para que quede de la siguiente manera.

 Guardamos el fichero, salimos del chroot e instalamos linux con el archivo de configuración creado.

Reiniciamos la maquina y... voila¡.

Para terminar, podemos redimensionar el sistema de archivos xfs al tamaño que queramos. En mi caso, el lvm raiz es de 110 GB, utilizamos el comando xfs_growfs con el parametro -D y el número de bloques de 4096 a incrementar. Si queremos ocupar todo el volumen, no necesitamos realizar calculos, introducimos un valor enorme y nos dara un error indicando el máximo.


 

domingo, 19 de febrero de 2012

Toca reaparecer con algo curioso después de tanto tiempo de abandono.