Hola  a todos ya llevaba bastante tiempo sin publicar en este blog.

Hoy hablaremos de como crear un firmware personalizado basado en Open-wrt al cual le podremos poner paquetes preinstalados y archivos de configuración personalizados lo cual nos permitirá tener un sistema completamente zero-config out-of-the-box. Todo el proceso lo hare basándome en el dispositivo Tp-link TL-MR3020

      1. Identificar la arquitectura del dispositivo: si el dispositivo que tenemos está soportado aparecerá en la tabla de hardware de Open-wrt para identificar la arquitectura de este buscamos el campo target en la tabla. target
      2. Descargar el Image builder: cada arquitectura soportada por Open-wrt  tiene su Image builder el cual se encarga de compilar la imagen para instalar el firmware en nuestro dispositivo este lo encontraremos en http://downloads.openwrt.org/a/b/c/d donde reemplazamos a por la versión actual que es attitude_adjustment y b por la versión que en este caso es 12.09 y c por la arquitectura que en este ejemplo es ar71xx, de existir una subarquitectura la pondriamos como d en este caso es generic. La URL para buscar nuestro archivo sería http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic en este directorio se debe descargar el archivo que tenga en su nombre Image Builder.
      3. Descomprimir el archivo: para descomprimir el archivo vamos al directorio en el cual queremos dejar el Image Builder y ejecutamos tar xvfj /path/to/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-i486.tar.bz2.
      4. Instalando las dependencias necesarias: para usar el Image Builder es necesario instalar el meta paquete build-essential que provee varios compiladores y herramientas de depuración.
      5. Conociendo los perfiles de instalación: El Image Builder trae ya preconfigurados unos perfiles para cada uno de los dispositvos soportados por la arquitectura respectiva. para ver la lista de perfiles ejecutar make info | less esto nos mostrará los paquetes que ya vienen instalados, los paquetes que cada perfil tiene y el dispositivo exacto al cual corresponde el perfil.profiles
      6.  Los tres parámetros básicos: antes de empezar a crear las imágenes es necesario saber que las imágenes se crean con make image y que se le pueden pasar tres parametros PROFILE, PACKAGES FILES. PROFILE no necesita explicación es simplemente el nombre del perfil de la lista que ya vimos, PACKAGES indica el nombre de los paquetes que queremos preinstalados hay que colocarlos entre comillas y separados por espacios, finalmente FILES indica el directorio en el cual tendremos los archivos de configuración en una jerarquía de directorios similar a la de un sistema GNU/linux por lo cual si queremos añadir un fichero que deba ir dentro del directorio /etc en nuestro firmware deberemos crear el directorio etc en este directorio y poner allí el fichero.
      7.  

        Ejemplo básico: make image PROFILE=TLMR3020 PACKAGES=”aircrack-ng kmod-usb-core” FILES=/home/user/mirootfs/.

      8. Encontrar los instalables: Si alguna ves has flasheado un enrutador sabrás que lo que se usa es un fichero binario que usualmente trae la extensión .bin o .img y este fichero es el que necesitaremos para instalar el firmware ya sea por tftp o por la interfaz web, este fichero se puede encontrar en el directorio del Image Builder dentro del directorio bin/<arquitectura> en este ejemplo sería bin/ar71xx.
      9. ¿Hay varios ficheros cual uso para instalar?: dependiendo de si ya había Open-wrt o no el equipo tendremos que instalar el terminado en .factory.img o .sysupgrade.img, si necesitas más ayuda para saber que fichero usar ve a la página del dispositivo especifico en la wiki de Open-wrt.

http://wiki.openwrt.org/doc/howto/obtain.firmware.generate

OpenWrt como sabes es un sistema operativo basado en GNU/Linux orientado a brindar un GNU/Linux para routers el cual tiene una gran comunidad de desarrollo y soporte para gran cantidad de dispositivos de diferentes marcas (obtenido la mayoría de las veces por ingeniería reversa).

La arquitectura de un router de gama baja, de no más de 200 dollares como el que tenemos en la casa es de prestaciones reducidas con no más de 32 Mb de Ram y 4 mb de flash por lo cual no podemos tener una gran cantidad de software instalado.

Si nuestro dispositivo posee puertos USB la limitación de almacenamiento puede solventarse facilmente. Antes de mostrales la solución a este problema cambiando el rootfs quiero mostrar la solución más sencilla e ineficaz a este problema.

  1. El primer intento de solución sería instalar los modulos para usb y sistemas de ficheros, montar un pendrive, configurar opkg para que instale todo en el pendrive y añadir el pendrive a PATH. Esta solución no sirve puesto que los programas suelen buscar bibliotecas en ubicaciones predeterminadas o llamar a otros binarios en ubicaciones predeterminadas especificadas en la compilación. Muchos dirán bueno pues haz enlaces a todo lo que instales a donde debería estar, pues esto es aún peor puesto que los enlaces serían díficiles de mantener.

Cambiar el rootfs es sencillo puesto que Openwrt es un sistema que maneja un sistema de archivos overlay que sobrepone 2 sistemas de archivos para crear uno mayor la solución es poner encima el pendrive y abajo la memoria flash.

  1. crear una partición ext4 en el pendrive (no es del ambito de este post puedes hacerlo con gparted o fdisk con mkfs).
  2. instalar los modulos necesarios para soportar dispositivos de almacenamiento, sistemas de ficheros ext4 y para automontarlos.
    1
    opkg install kmod-usb-storage kmod-fs-ext4 block-mount
  3. montamos la usb
    1
    mount /dev/sdax /usb
  4. Copiamos todo el contenido del rootfs a la Usb
    1
    cp -R /overlay/* /usb
  5. añadimos la siguiente info al fichero /etc/config/fstab
    1
    2
    3
    4
    5
    6
    7
     config mount
    option target /overlay
    option device /dev/sdax
    option fstype ext4
    option options rw,sync
    option enabled 1
    option enabled_fsck 0

Al reiniciar veremos que ya tenemos un rootfs más amplio en mi caso 2,4 Gb lo cual nos permite instalar una gran cantidad de paquetes, montar servidores de compartición de ficheros siempre teniendo en cuenta la limitación de memoria, generar capturas de tráfico con el router y generar archivos pcap, etc.

1
df -m
1
2
3
4
5
6
rootfs 2790 106 2544 4% /
/dev/root 2 2 0 100% /rom
tmpfs 14 0 14 3% /tmp
tmpfs 1 0 1 0% /dev
/dev/sda2 2790 106 2544 4% /overlay
overlayfs:/overlay 2790 106 2544 4% /

Hola a todos, por las obligaciones que nunca faltan llevo bastante tiempo sin escribir en el blog, así que hoy vuelvo a la acción con un poco de material nuevo sobre mi navegador favorito.

CCK Wizard es un add-on de Mozilla Firefox que nos permite con tan sólo unos pocos clics crear una configuración bastante personalizada de firefox para exportarla a un add-on y así personalizar rápida y sencillamente todas nuestras instancias de firefox.

CCK Wizard permite.

  • Definir una lista de add-ons, plugins, themes que se instalaran automatica al instalar el add-on de configuración.
  • Definir parametros por defecto como evitar habilitar o deshabilitar el acceso a about:config, restringir el uso de sync, evitar la instalación de complementos en el navegador, etc.
  • Establecer páginas de inicio y post actualización para el navegador.
  • Establecer texto personalizado para la barra de título para agregar el nombre de nuestra compañia.
  • Agregar elementos al menu de ayuda como un enlace al departamento de sistemas de nuestra compañia para pedir soporte
  • Definir que barras se visualizan por defecto en el navegador (barra de menú, barra de complementos, etc)
  • Definir listas blancas y listas negras para, pop-ups, instalación de plugins, add-ons, temas, uso de cookies, etc.
  • Definir el motor de busqueda predefinido
  • Definir carpetas de favoritos y favoritos
  • Definir valores para las preferencias de Firefox (similar al registro de windows, about:config).
  • Añadir certificados por si nuestra compañia emite certificados para los sitios locales
  • Definir configuración por default para el proxy.

Como se pueden dar cuenta esta herramienta permite crear una configuración muy completa para Firefox que en resumidas cuentas ahorrará mucho tiempo cuando queramos dejar nuestro Firefox como lo teniamos en el PC de la casa o cuando hagamos una implementación masiva del navegador en la empresa.

Manos a la obra

  • Crear un perfil y exportar el add-on de configuración.

Captura de pantalla de 2013-07-27 08:52:58Captura de pantalla de 2013-07-27 08:59:47Captura de pantalla de 2013-07-27 09:02:02Captura de pantalla de 2013-07-27 09:03:29Captura de pantalla de 2013-07-27 09:10:45Captura de pantalla de 2013-07-27 09:12:20Captura de pantalla de 2013-07-27 09:13:00Captura de pantalla de 2013-07-27 09:25:40Captura de pantalla de 2013-07-27 09:26:16

  • Instalar el add-on en las instancias del navegador que queramos personalizar.

Captura de pantalla de 2013-07-27 09:32:38

Al final ya tendremos el navegador personalizado con solo haber instalado el plugin

final

Ya que en muchas redes como la de mi universidad existen proxies que filtran el trafico, para instalar software desde repositorios o usar conexiones con cualquier aplicación es necesario saber la configuración de este proxy. En esta ocasión explicare para el caso especifico de la universidad nacional un proxy generico que sirve para instalar desde apt, usar wget, etc.

para que este proxy quede definido para usarlo en nuestras aplicaciones de consola editamos el archivo .bashrc que se encuentra en el home del usuario que usara la consola, en este ejemplo usaré a root.

1
nano /root/.bashrc

agregamos la siguiente línea.

1
export http_proxy=http://usuariosia:contraseñasia@proxyapp.unal.edu.co:8080/

Este proxy les servirá para que sus aplicaciones de consola salgan transparentemente a internet. No sirve para ftp ssh ni xmmp para estos servicios hay proxies especificos dentro de la universidad, para más información de configuración de estás aplicaciones

http://www.dnic.unal.edu.co/mesadeservicios/manuales.php

Hola a todos tiempo sin escribrir en el blog, hoy quiero hablar sobre un tema que me gusta mucho la educación abierta y libre, esa educación que se ha masificado por medio de MOOC(Massive online offered course / curso ofrecido masivamente a través de internet) y que en los últimos meses se ha vuelto tan popular.

Hace un par de años cuando me enteraba por primera vez de este tipo de cursos, videos y notas de clases de las más prestigiosas universidades de Estados Unidos me pareció fantastica la idea de poder consultar todo este material en línea y poder complementar por aquel entonces los estudios que iniciaba de ingeniería de sistemas (en colombia es como CS no tiene nada que ver con barcos o aviones ;) ), tomando como referencia este excelente material, en ese entonces los cursos en las principales universidades como MIT o Berkeley ofrecian sus materiales de clase pdf’s videos en youtube pero no era más que un repositorio de información no había retroalimentación no había posibilidad de interactuar ( a menos que buscarás un foro dedicado y activo que por cierto no encontre el primero ) con otros participantes y solucionar dudas, en muchos cursos solamente se mostraban los videos de las clases y no había posibilidad de autoevaluarte lo cual hacia que esto no fuera más que un repositorio. Aunque desde que conozco el mundo del OCW (Open Course Ware así se denomina a los contenidos liberados por las universidades) siempre he conocido ocwconsortium.org este no ha sido más que un repositorio de repositorios es decir es el ente que agrupa los sitios de las universidades que ofrecen sus materiales libremente en línea pero no añadia la interactividad que le faltaba a este tipo de materiales. Debido a esta poca interactividad por parte de los cursos ofrecidos, en el último año y medio han aparecido sitios especializados en reunir las mejores universidades y ofrecer MOOCs, cursos en vez de sólo materiales, a los cuales les han agregado caracteristicas que han hecho que en el último año y medio su popularidad haya ido al cielo:

  • Ofrecen la capacidad de evaluarte y hacer ejercicios que fortalecerán lo aprendido, todo esto claro está con deadlines para verificar que estes aprendiendo en realidad.
  • Ofrecen la capacidad de interactuar con otros estudiantes y docentes del tema y así poder generar discusión y solucionar dudas.
  • Algunos sitios como coursera.org te ofrecen la posibilidad de recibir una certificación por parte de la universidad si cumples con los trabajos y las evaluaciones hechas. Hay que aclarar que ninguna universidad está ofreciendo estos cursos con créditos pero estos cursos por su calidad están empezando a tomar mucha validez.

Para finalizar les dejo unos links de sitios que ofrecen MOOCs y los OCW de varias universidades que en mi concepto son los de mejor calidad y un video en el cual la profesora de Stanford y cofundadora de coursera Daphne Koller explica su proyecto y el impacto que este está generando.

ocw.upm.es

ocwconsortium.org

coursera.org

edx.org

http://www.youtube.com/watch?v=U6FvJ6jMGHU