Introducción
Contexto del proyecto
Este proyecto se ofrece al Departamento de Arquitectura y Tecnología de Sistemas Informáticos (DATSI), de la Facultad de Informática de la Universidad Politécnica de Madrid, como una beca de colaboración con la empresa Teldat. En él participan los siguientes miembros:
Desarrolladores | Álvaro Navarro Bastante Carlos Moreno Ramos Gabriel Rucabado Rucabado Alexandru Ionut Grama Christian Van de Walle | anavarro@laurel.datsi.fi.upm.es cmoreno@laurel.datsi.fi.upm.es grucabado@laurel.datsi.fi.upm.es ai.grama@alumnos.upm.es christianvande@hotmail.com |
---|---|---|
Director | Francisco Rosales García | frosal@fi.upm.es |
Dicho proyecto surge de la necesidad, por parte de dicha empresa, de portar a GNU/Linux la funcionalidad de sus router Atlas, la cuál está actualmente soportada por un Sistema Operativo propietario, llamado CIT.
La situación en la que se encuentran es que CIT, ofrece muy buenas prestaciones debido a que la implementación del mismo se ciñe única y exclusivamente a las tareas que debe realizar un router, es decir, que es completamente ad hoc. Sin embargo, carece de una cierta modularidad y escalabilidad, lo que supone que la labor de mantenimiento del mismo resulte tremendamente costosa, como de hecho ya está sucediendo.
Por ello, siendo conscientes de tales limitaciones, han decidido abrir una línea de investigación que analice si el empleo de una arquitectura software estructurada y potente como GNU/Linux puede satisfacer las necesidades existentes, manteniendo las mismas prestaciones.
Objetivos
Es importante dejar claro que, puesto que es un proyecto de I+D bastante extenso, no se exige un producto software final como tal. Se trata, más bien, de un proyecto con un ciclo de vida basado en prototipos, en el cuál prima la realización de experimentos y la recogida de los resultados correspondientes; eso sí, todo ello enmarcado dentro las dos líneas siguientes.
Migrar funcionalidad a GNU/Linux
La idea queda perfectamente plasmada en el siguiente diagrama. Actualmente, tenemos que en los router Atlas existe un menú de configuración, el cuál se apoya sobre el Sistema Operativo CIT, que a su vez corre sobre una plataforma Hardware concreta.
Por consiguiente, de lo que se trata es de, manteniendo la misma plataforma Hardware y el mismo menú de configuración, implementar en GNU/Linux toda la funcionalidad que recoge CIT.
Comparar prestaciones CIT-GNU/Linux
Como consecuencia del objetivo anterior, uno de los propósitos de realizar la migración de CIT a GNU/Linux es comparar las prestaciones de uno y otro router y determinar cuál de los dos es más eficiente.
Tecnologías empleadas
En todo proyecto Software hay que escoger siempre qué tecnologías se van a usar, ya que, bien porque facilitan la realimentación, bien porque son restricciones impuestas, son las que van a definir el diseño del producto final.
Tecnologías Hardware
La plataforma Hardware elegida es la llamada Atlas segunda generación, que se corresponde con los modelos comerciales: Atlas 250, Atlas 150, Atlas 152, Atlas 50, C1+, C8+, C9+.
Esta plataforma es la que actualmente tiene más demanda en la cartera de productos Teldat. Cualquiera de los modelos valdría para la realización del proyecto. Se propone la utilización del modelo concreto Atlas 50 que por sus características de modularidad permite el desarrollo de todas las funcionalidades propuestas.
Para entender mejor en qué consiste la arquitectura de dicho router, vamos a explicar qué es un sistema empotrado y después concretamos para el caso que tenemos entre manos.
Sistema Empotrado
Un Sistema Empotrado (también llamado integrado o embebido)1) es un sistema informático de uso específico construido dentro de un dispositivo mayor. Se utilizan para usos muy diferentes de los usos generales para los que se emplea un ordenador personal. En un sistema empotrado la mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio, módem, etc.).
Dos de las diferencias principales son el precio y el consumo. Puesto que los sistemas empotrados se pueden fabricar por millares o por millones de unidades, una de las principales preocupaciones es reducir los costes. Los sistemas empotrados suelen usar un procesador relativamente pequeño y una memoria pequeña para reducir los costes. Se enfrentan, sobre todo, al problema de que un fallo en un elemento implica la necesidad de reparar la placa íntegra.
Componentes
Las partes de las que se compone un sistema empotrado son prácticamente las mismas que las de un ordenador de propósito general, con la salvedad de que en el caso del primero las propiedades físicas y funcionales de las mismas, están sujetas a las restricciones que impone el dispositivo en el que se encuentran.
- Microprocesador
- Memoria
- Caché
- Disco Duro: Puesto que es necesario un dispositivo que permita un almacenamiento no volátil y los discos magnéticos tienen tamaños que pueden resultar excesivos y frágiles a golpes y vibraciones, se suelen emplear memorias Flash que son más compactas y robustas.
- ROM: Es una memoria de sólo lectura donde está almacenada la BIOS.
- RAM
- Entradas al sistema: Puerto paralelo, puerto serie, ratón, teclado, etc. (RS232, USB, WiFi, GSM, GPRS…)
- Salidas del sistema: Puerto paralelo, puerto serie, monitor, pantalla, altavoces, etc. (Pantalla gráfica, táctil, LCD…)
- Actuadores: Elementos electrónicos que el sistema se encarga de controlar (motores, etc.)
- Módulos de E/S analógicas y digitales: Digitalización de señales analógicas, activación de diodos LED, etc.
- Módulo de energía: Fuente de alimentación.
- Ranuras de expansión: Para tarjetas de tareas específicas que no vienen de serie.
Aplicaciones
Entre las principales e innumerables aplicaciones que poseen los Sistemas Empotrados, se encuentran las siguientes:
- Control de procesos de montaje o producción en fábricas.
- Decodificadores de TV.
- Ordenadores de los coches.
- Sistema radar de aviones.
- Equipos de medicina en hospitales y ambulancias.
- Cajeros automáticos.
- Teléfonos móviles.
- PDAs.
- Router.
Caso en estudio: Router Atlas 50
En el caso del router Atlas 50 se trata de un sistema empotrado que, según dice el manual (véase la bibliografía), presenta las siguientes características:
- MicroprocesadorMotorola MPC8272
- Caché L1 16 Kbytes instrucciones / 16 Kbytes datos
- SDRAM memory: 64 Mbytes
- FLASH memory: 16Mbytes
- Cripto-procesador integrado
- Ranuras de expansión:
- 1 x Ranura de expansión externa PMC-PCI
- 1 x Ranura de expansión interna mini-PCI
- 9 LEDs indicadores de estado en el panel frontal
Las siguientes imágenes muestran la vista delantera y trasera, respectivamente, del router Atlas 50, con el que se ha trabajado a lo largo del proyecto.
Tecnologías Software
BootLoader
BootLoader es el nombre que recibe el software que hay instalado en el router Atlas, que hace las veces de BIOS y, además, implementa alguna que otra funcionalidad que nos va ser de gran ayuda, concretamente a la hora de empotrar la imagen de un kernel o de un sistema de ficheros.
El aspecto que tiene el BootLoader es el que aparece a continuación, aunque no va a ser la única vez que se muestre en este documento. En capítulos posteriores lo veremos en profundidad y explicaremos cómo emplear algunas de las funcionalidades más relevantes del mismo.
=== INITIAL MENU === a) Change Time b) Change Date c) Change Code to Run d) Change Licence e) Load from console (pc_load) f) Disk menu g) Set default name for file loaded from console h) Change BIOS licence l) Load from lan v) Change version control for loading x) Load from console (xmodem) z) Change command line (Linux) r) Reset lram) Load from lan and run without saving lk) Load kernel from lan lf) Load file system from lan 0) Exit >>
GNU/Linux
GNU/Linux2) es el término empleado para referirse al sistema operativo similar a Unix que utiliza como base las herramientas de sistema de GNU y el núcleo Linux. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo el código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL de GNU (Licencia Pública General de GNU) y otras licencias libres.
Sin embargo, por economía del lenguaje se suele utilizar más el término “Linux” para referirse a este sistema operativo, a pesar de que Linux sólo es el núcleo del sistema.
Distribuciones
Una distribución es una variante del sistema GNU/Linux que se enfoca a satisfacer las necesidades de un grupo especifico de usuarios. De este modo hay distribuciones para hogares, empresas y servidores. Algunas incorporan programas privativos (como Mandriva PowerPack) o solamente software libre (como gNewSense).
Las distribuciones son ensambladas por individuos, empresas u otros organismos. Cada distribución puede incluir cualquier número de software adicional, incluyendo software que facilite la instalación del sistema. La base del software incluido con cada distribución incluye el núcleo Linux y las herramientas GNU, al que suelen añadirse también varios paquetes de software.
Las herramientas que suelen incluirse en la distribución de este sistema operativo se obtienen de diversas fuentes, y en especial de proyectos de código abierto o software libre, como: GNU , BSD, GNOME y KDE. También se incluyen utilidades de otros proyectos como Mozilla, Perl, Ruby, Python, PostgreSQL, MySQL, Xorg, casi todas con licencia GPL o compatibles con ésta (LGPL, MPL) otro aporte fundamental del proyecto GNU.
Usualmente se utiliza la plataforma X.Org Server, basada en la antigua XFree86, para sostener la interfaz gráfica.
Comunidad
La mayoría de las distribuciones están, en mayor o menor medida, desarrolladas y dirigidas por sus comunidades de desarrolladores y usuarios. En algunos casos están dirigidas y financiadas completamente por la comunidad. como ocurre con Debian GNU/Linux, mientras que otras mantienen una distribución comercial y una versión de la comunidad, como hace RedHat con Fedora, o SuSE con OpenSuSE.
En muchas ciudades y regiones, asociaciones locales conocidas como grupos de usuarios de Linux promueven este sistema operativo y el software libre. Suelen ofrecer conferencias, talleres o soporte técnico de forma gratuita o introducción a la instalación de GNU/Linux para nuevos usuarios.
Apoyo
Desde finales del 2000 se ha incrementado el apoyo y respaldo de parte de fabricantes de hardware como IBM, Sun Microsystems, Hewlett-Packard, y Novell. Algunos de ellos, como Dell, Hewlett-Packard, Lenovo y Acer, lo incluyen pre-instalado en algunos modelos de computadoras portátiles y de escritorio para el usuario final. El respaldo de compañías de software también está presente, ya que, por ejemplo, Nero, Java, Google Earth, Google Desktop, Adobe Reader, Adobe Flash, RealPlayer y Yahoo! Messenger están disponibles para GNU/Linux.
Mercado
La creciente popularidad de GNU/Linux se debe a las ventajas que presenta ante otros tipos de software. Entre otras razones se debe a su estabilidad, al acceso a las fuentes (lo que permite personalizar el funcionamiento y auditar la seguridad y privacidad de los datos tratados), a la independencia de proveedor, a la seguridad, a la rapidez con que incorpora los nuevos adelantos tecnológicos (IPv6, microprocesadores de 64 bits), a la escalabilidad (se pueden crear clusters de cientos de computadoras), a la activa comunidad de desarrollo que hay a su alrededor, a su interoperatibilidad y a la abundancia de documentación relativa a los procedimientos.
Hay varias empresas que comercializan soluciones basadas en GNU/Linux: IBM, Novell, Red Hat, Rxart, Canonical Ltd. (Ubuntu), así como miles de PYMES que ofrecen productos o servicios basados en esta tecnología.
A finales de 2008, de acuerdo al TOP500.org, encargado de monitorizar las 500 principales supercomputadoras del mundo: 439 usaban una distribución basada en GNU/Linux, 23 Unix, 31 SLES y otras mezclas y variantes de GNU/Linux y Unix y solo el 1 % (5) usaban Windows, como proyectos patrocinados y apoyados por Microsoft, para empezar a aparecer en este listado del cual había desaparecido en 2007.
GNU/Linux, además de liderar el mercado de servidores de internet, debido entre otras cosas a la gran cantidad de soluciones que tiene para este segmento, tiene un crecimiento progresivo en computadoras de escritorio y portátiles. Prueba de ello es que es el sistema base que se ha elegido para el proyecto OLPC: One Laptop Per Child (en español: Una Computadora Portátil por Niño), que tiene como objetivo llevar una computadora portátil a cada niño de países como China, Brasil, Argentina, Uruguay y Perú y está patrocinado por la iniciativa del MIT y firmas como AMD, Google y Sun Microsystems.
Como sistema de programación
La colección de utilidades para la programación de GNU es con diferencia la familia de compiladores más utilizada en este sistema operativo. Tiene capacidad para compilar C, C++, Java, Ada, entre otros muchos lenguajes. Además soporta diversas arquitecturas mediante la compilación cruzada, lo que hace que sea un entorno adecuado para desarrollos heterogéneos.
Hay varios entornos de desarrollo integrados disponibles para Linux incluyendo, Anjuta, KDevelop, Ultimate++, Code::Blocks, NetBeans IDE y Eclipse. Además existen editores extensibles como puedan ser Emacs o Vim que hoy en día siguen siendo ampliamente utilizados. GNU/Linux también dispone de capacidades para lenguajes de guión (script), aparte de los clásicos lenguajes de programación de shell, o el de procesado de textos por patrones y expresiones regulares llamado awk, la mayoría de las distribuciones tienen instalado Python, Perl, PHP y Ruby.
Kernel Linux 2.6.21
Puesto que la finalidad del proyecto es implementar en GNU/Linux toda la funcionalidad del router Atlas, no tiene sentido construir un kernel desde cero, ya que, por un lado, eso haría más largo el desarrollo y, por otro, podría provocar muchos problemas difíciles de resolver, especialmente a la hora de tratar aspectos de bajo nivel (manejadores, etc.).
Por ello, Teldat establece que lo más apropiado es partir de la versión base 2.6.21 del kernel de Linux y sobre él realizar todo el desarrollo que sea oportuno.
BusyBox/Buildroot
Buildroot y BusyBox son dos herramientas muy potentes que, apoyándose la una (Buildroot) en la otra (BusyBox), permiten crear un sistema de ficheros GNU/Linux, con las características que nosotros indiquemos (arquitectura, juego de aplicaciones, etc.).
Quagga
Quagga es una plataforma Software pensada para el desarrollo de algunos protocolos de comunicaciones, tales como IP, RIP, OSPF y BGP Dichos protocolos de comunicaciones se implementan como demonios, para de esa forma poder mantener (e incluso modificar) en todo momento la configuración de los protocolos en cuestión.