
«Hola a todos los que usan minix:
Estoy creando un sistema operativo (gratuito) (solo un pasatiempo, no será tan grande y profesional como GNU) para 386 (486) clones de AT. […] NO es portátil (usa 386 tareas de conmutación, etc.) y probablemente nunca admitirá nada más que discos duros AT, ya que eso es todo lo que tengo :-(.» [1]
Lo anterior es un extracto del anuncio original de Linus Torvalds de lo que se conoció mundialmente como Linux. Sistema operativo (SO), con fecha de agosto de 1991. En retrospectiva, es inimaginablemente humilde que ahora podamos evaluar mucho mejor el alcance revolucionario total de su cargo. En la actualidad, más del 96,4% del millón de aplicaciones de servidor principales se ejecutan en Linux. [2]. En las nubes públicas, el 90% de las cargas de trabajo utilizan Linux como sistema operativo, siendo Ubuntu la distribución de Linux más popular. [3], [4]. A pesar de su debut como Sistema operativo de propósito general (GPOS) para el hardware basado en x86, Linux fue más allá de los servidores web y desde entonces ha encontrado una amplia aceptación para los sistemas integrados.
Esta serie de blogs de dos partes tiene como objetivo brindar al lector una amplia descripción general de los temas relacionados con Linux, los sistemas integrados y la Internet de las cosas (IoT) en general. En la Parte I de esta serie de blogs, primero echamos un vistazo al ecosistema integrado, seguido de una explicación del papel que juega Linux en él y, finalmente, explicamos las razones de la creciente popularidad de los sistemas operativos en los sistemas integrados. En la Parte II, nos enfocamos en los desafíos más urgentes que enfrentan las empresas hoy en día en el espacio integrado. Vamos a empezar.
El paisaje incrustado
Aunque un sistema integrado viene en varias formas y formas, normalmente realiza una función dedicada, tiene recursos limitados e incluye un motor de procesamiento. A riesgo de simplificar demasiado las cosas, podemos delinear tres categorías generales en términos del tamaño de un sistema Linux integrado: [5]
- Sistemas pequeños que constan de una CPU de bajo rendimiento de al menos 2 MB Memoria de solo lectura (ROM) y 4 MB Memoria de acceso aleatorio (RAM).
- Sistemas de tamaño medio con alrededor de 32 MB de ROM, 64 MB de RAM y una CPU de potencia media.
- Grandes sistemas integrados con CPU potentes y mayores requisitos de memoria.
La presencia de Linux en los sistemas embebidos es omnipresente y abarca prácticamente todas las categorías de gasto de los consumidores, desde la gestión de la energía en el hogar o la automoción.
[6]
Sin embargo, este no siempre ha sido el caso, ya que el avance en la tecnología de semiconductores ha hecho una contribución significativa al establecimiento de Linux en el mundo embebido. Hay varias razones para tal crecimiento. Entre estos, los precios de la memoria flash han disminuido con el tiempo y proporcionan el almacenamiento masivo necesario para el sistema de archivos de Linux. [7]. De manera similar, el hardware de sistema en un chip (SoC) de bajo consumo y tamaño reducido se está convirtiendo cada vez más en la primera elección de procesador de los desarrolladores. Como resultado, prácticamente cualquier sistema integrado puede ejecutar Linux, y lo hace.
¿Qué es Embedded Linux?
Ahora estamos en una mejor posición para considerar la pregunta inicial «¿Qué es Embedded Linux?».
Hay tres niveles en los que podemos intentar una respuesta:
- El sistema
- El kernel (es decir, el núcleo del sistema operativo)
- La distribución
El sistema
De manera intuitiva, un sistema Linux integrado simplemente se refiere a un sistema integrado que se ejecuta en el kernel de Linux. Centrémonos en las dos piezas restantes.
El kernel de Linux
Linus nunca entregó una «versión incorporada» del kernel de Linux. Como desarrollador integrado, es posible que no necesite un kernel personalizado para su sistema y, en su lugar, puede confiar en una versión oficial. Sin embargo, a menudo es el caso de que necesite un kernel configurado para admitir su hardware personalizado porque la configuración de compilación del kernel en un dispositivo integrado suele ser diferente de la de un servidor o estación de trabajo.
La distribución (o distribución)
La tercera perspectiva a considerar es la de la distribución. «Distribución» es un término general aquí, que generalmente incluye paquetes de software, servicios y un marco de desarrollo sobre el sistema operativo en sí. Ubuntu Core, la variante de Ubuntu para dispositivos integrados, es un ejemplo de distribución de Linux integrada.
Linux integrado frente a RTOS
¿Por qué utilizar Linux integrado?
La siguiente pregunta es qué hace que Linux sea el candidato perfecto para un sistema integrado. Desde la escalabilidad hasta el soporte y las herramientas para desarrolladores, existen innumerables razones para ello. Cada discusión en profundidad requiere su propio libro. Aquí nos limitamos a mencionar algunos destacados:
- Soporte de hardware
- Redes
- Modularidad
- Soporte comercial
Soporte de hardware
Linux se ejecuta en arquitecturas ARM, x86, MIPS y PowerPC de 32 y 64 bits. Mientras que un procesador de 32 bits puede 232 (un bit es un 0 o un 1, por lo que hay 2 combinaciones posibles) un procesador de 64 bits puede almacenar más direcciones de memoria. Los procesadores por debajo de 32 bits no pueden ejecutar Linux, lo que excluye los sistemas integrados tradicionales. Para una discusión más profunda sobre el soporte de hardware, consulte el rico ecosistema de plataformas para Ubuntu Core aquí.
Redes
Todos sabemos que la funcionalidad de la red se espera de inmediato en la mayoría de los productos de consumo. Afortunadamente, Linux admite una amplia variedad de protocolos de red. Independientemente de si su proyecto de Linux integrado requiere WiFi, banda ancha móvil (WWAN) o conectividad Ethernet, los servicios de red del sistema como NetworkManager son compatibles con Linux. Puede instalar fácilmente NetworkManager en Ubuntu Core siguiendo estas instrucciones.
Modularidad
La tercera razón por la que Linux se ha extendido a los sistemas integrados es su modularidad. Debido a que varios paquetes de software se unen para formar una pila de sistema operativo Linux, los desarrolladores pueden personalizarlo para cualquier propósito. Las opciones de personalización para Ubuntu Core incluyen, por ejemplo, la configuración tanto para hardware como para software, así como para ciertos kernels.
Soporte comercial
Otro aspecto importante, pero a veces pasado por alto, de la elección de Linux para sus sistemas integrados es la disponibilidad de soporte comercial.
Los sistemas de compilación administrados por la comunidad y disponibles de forma gratuita, como Yocto y Buildroot, permiten a los desarrolladores crear distribuciones de Linux personalizadas para la mayoría de las arquitecturas de hardware. Desafortunadamente, los diversos desafíos que los proyectos comunitarios no abordan surgirán cuando Embedded Linux se envíe a producción. Sin embargo, este vacío se llena fácilmente con los proveedores de Linux integrado que brindan soporte y experiencia de nivel empresarial, lo que reduce significativamente el tiempo de comercialización.
No solo es costoso para una empresa proporcionar sus propias correcciones, parches de seguridad y pruebas de hardware, sino que también distrae la atención del negocio principal. Afortunadamente, los expertos en kernel de Canonical, el patrocinador comercial de Ubuntu, están aquí para ayudar. El equipo de Canonical crea, parchea y mantiene Ubuntu Core para dispositivos integrados.
Si está interesado, este seminario web o documento técnico proporciona una discusión centrada en los pros y los contras que esperan los desarrolladores integrados cuando lanzan su propia distribución de Linux frente a una solución con soporte comercial.
diploma
A estas alturas, los lectores deberían estar familiarizados con el papel de Linux en el panorama integrado. En la Parte I de esta serie de blogs de dos partes, vimos cómo Linux, con su presencia establecida entre servidores y nubes, se está convirtiendo rápidamente en el sistema operativo de facto para el mundo integrado. Existen razones obvias para elegir Linux para un sistema integrado, desde su soporte para hardware y protocolos de red hasta su amplia capacidad de configuración y modularidad. Puede hacerse una idea de cómo es Ubuntu Core, la variante integrada del sistema operativo de servidor más utilizado en Internet. [8], establece nuevos estándares para Linux embebido hojeando su hoja de datos.
En la Parte II de esta serie de blogs, describiremos cómo los desarrolladores deben prestar especial atención a la seguridad y la capacidad de actualización para aprovechar el crecimiento explosivo de IoT. Te veo allí.