openwrt y sus problemas para actualizar …

… que empiezan a asustar un poco porque da la sensación de que avanzan mucho, como pollo sin cabeza, y de que no sufrirán demasiado dejando equipos obsoletos. Y mira no, por ahí no. Por favor.

Y sí, puede parece exagerado, pero son dispositivos útiles que tienen pocos recursos y que parece que las nuevas versiones no les están teniendo tan en cuenta. Y eso me asusta porque no está la cosa para ir comprando equipos nuevos. Y ni hablemos de buscar, que luego no hay quien encuentre nada compatible si no es un mercadillo en la red o casi.

¿ Y todo ésto a qué viene ? Bueno, pues viene a que he solicitado (y conseguido sin trabas) la exclusión del sistema CGNAT de Pepephone porque necesita IP públicas contra las que se pudiera establecer conexiones con mi servidor casero matraz.home. Una vez conseguido y dado que el router neutro portico.home emplea openwrt, pues quería conseguir una dirección IP dinámica asociada a un nombre de red empleando DNS dinámico. Algo trivial con el software instalado en el router (o incluso en un servidor interno) pero que prefiero en el primero ya que así puedo jugar más y mejor con la apertura y redirección de puertos. Matraz ejerce ahora funciones de copias de seguridad de varias redes y máquinas sueltas y en algunos casos prefiero que sea pasivo y que conecten con él a tener que llamar él a los clientes de copia.

Por otro lado también quería implementar mi propio servidor DDNS y para ello tenía que elegir un servicio que estuviese en los dos extremos. Hay varias formas de hacerlo, eso sí, pero si puedo añadir un par de líneas a un archivo de configuración y ponerlo en marcha pues más tranquilo me quedo con las cosas.

Así que siguiendo este artículo me he puesto a instalar los dos paquetes que necesitaba: ddns-scripts y luci-app-ddns. Tan sencillo como emplear el interfaz web o la consola directa con opkg install, ¿ no ? Pues no. El sistema empieza a dar errores raros: no encuentra los paquetes, ahora sí los tiene pero no los puede listar, ahora sí y luego que no, que no hay memoria suficiente o que hay configuraciones antiguas que chocan con lo que se quiere imponer.

Tendría que haber guardado el registro de pantalla porque es difícil recordarlo todo pero cuando he alcanzado el famoso límite de memoria he decidido parar, leer un poco y consultar en los foros a ver qué pasa y si es culpa mía o hay un error que desconozco.

Y sí, como se puede leer aquí existen algunas operaciones del programa opkg que resultan en errores de falta de memoria, confirmado en varios dispositivos y versiones. Hay un hilo interesante y es el que ha provocado que me asuste un poco con el asunto pero al final dan una solución para poder hacer una actualización de paquetes en masa sin encontrar el límite.

Ya de paso lo aprovecho porque es algo que siempre he echado en falta desde el terminal.

$ sysctl -w vm.overcommit_memory=1
$ opkg list-upgradable  | cut -d " " -f 1 > /tmp/upgradable 
$ for p in $(cat /tmp/upgradable)
  do 
      opkg upgrade $p 
  done 
$ rm /tmp/upgradable

Que viene a resumirse en lo siguiente:

  1. Activar el mecanismo de sobrepaso de memoria
  2. Obtener una lista de paquetes actualizables guardando sólo el nombre en un archivo temporal empleando cut.
  3. Entrar en un bucle for que lea línea a línea los paquetes y los instale uno a uno.
  4. Borrar el archivo

Cualquier cosa que añadiese para hacer en masa a la instalación terminaba así. Ni conectando la salida estándar de la tubería de opkg list-upgradable con el bucle for ni nada igual de elegante. Al final todo cascaba.

Aún sin configurar, pero ya funciona y es cuqui.

Así que con ésto se ha quedado. Y funciona. Lo que no sé es cómo voy a poder actualizar el sistema sin quedarme sin él durante mucho tiempo por algún error de interpretación. Malinterpretación que no es otra que creer que se puede instalar en tu sistema de 64Mb o vas a dejarlo inservible. Y mira que es útil el trasto con un sistema así. Limitado, obvio, pero muy flexible y más rápido de lo que imaginaba.

En fin, ahora que está actualizado será cosa de volver a mi DNS dinámico. A ver qué puedo hacer para utilizar un servicio propio o tener que emplear la actualización remota de los servidores Bind.