KernelUNO es un sketch de Arduino con 546 líneas de código que ofrece un sistema operativo ligero para el Arduino UNO, con un shell al estilo Linux y comandos como ls, df, uname y más.

Solo necesitas un Arduino UNO R3 o una placa compatible con el microcontrolador ATmega328P de Microchip, un cable USB para programación y, opcionalmente, algunos LEDs y resistencias para probar el comando gpio en el terminal.

KernelUNO
KernelUNO

KernelUNO ofrece las siguientes funcionalidades:

  • Filesystem virtual: crea archivos y directorios en RAM (/dev, /home)
  • Control de hardware: gestión de GPIO con configuración del modo de pin
  • Monitoreo del sistema: uso de memoria, uptime y mensajes del kernel (dmesg)
  • Shell interactivo: ejecución de comandos en tiempo real con buffer de entrada
  • 23 comandos integrados:

El código está disponible en GitHub bajo licencia BSD 3-Clause. Al ser un único sketch de Arduino, se flashea directamente en la placa sin pasos adicionales. La mayoría de los comandos son idénticos a los de un sistema Linux, con un enfoque similar al de BusyBox, más comandos adicionales para controlar GPIOs.

Limitaciones de memoria

Tal como señala Hackaday, no hay almacenamiento permanente: todo corre en RAM, lo que limita su utilidad práctica. En teoría sería posible agregar flash externo o aprovechar la EEPROM, pero hay que considerar que el ATmega328P cuenta con solo 2 KB de RAM, 1 KB de EEPROM y 32 KB de flash. El uso de memoria actual es el siguiente:

  • Programa: ~38% de los 32 KB de flash
  • RAM: ~85% de los 2 KB de SRAM (optimizada)
  • Filesystem: máximo 10 archivos o directorios
  • Buffer DMESG: 6 mensajes

Quedan dos funcionalidades pendientes en la lista de trabajo: persistencia en EEPROM y control PWM/analógico. El código fue escrito manualmente, aunque se utilizó Claude AI para la documentación.