# Subconjunto de kernel de Linux integrable (ELKS)

El Subconjunto de kernel de Linux integrable o ELKS (Embeddable Linux Kernel Subset por sus siglas en inglés), anteriormente conocido como Linux-8086, es un sistema operativo de tipo Unix-like. Es un subconjunto del Linux kernel, diseñado para ordenadores de 16-bit con recursos de memoria y con procesador limitados, como las computadoras que hacían uso de Intel 8086 y microprocesadores no compatibles con 32-bit Linux.

## Características y compatibilidad

ELKS es un software libre, disponible bajo la Licencia Pública General de GNU (GPL). Puede funcionar con los primeros ordenadores de 16-bit x86 (8086, 80186 y 80286) como son los sistemas compatibles con IBM PC. También funciona en el Modo 8086 virtual, una característica del Intel 80386 de 32-bit y CPUs encontradas en máquinas más modernas. Otra área útil es la de microordenadores de una sola placa, creados como herramientas educativas para proyectos "caseros" (hardware hacking), así como sistemas de controlador integrado (ej. Automatización).
ELKS también puede ejecutarse en Psion 3a y 3aR SIBO (Organizador de 16 Bit) PDAs con CPUs NEC V30, proporcionando otro posible campo de operación (gadget hardware), si es portado a dicha plataforma. Este esfuerzo se denominó ELKSibo.
Los programas ELKS nativos pueden ser ejecutados emulándolos con Elksemu, permitiendo usar código del 8086 en Linux-i386. También se trabajó para proporcionar a ELKS una biblioteca de Eiffel.

## Historia

El desarrollo de Linux-8086 empezó en 1995 por los desarrolladores de Linux kernel Alan Cox y Chad Page como un fork del Linux estándar. A los inicios de 1996 el proyecto se rebautizó como ELKS (Embeddable Linux Kernel Subset), y en 1997 fue creada la primera página web www.elks.ecs.soton.ac.uk/ (off-line). La versión 0.0.63 de ELKS vino poco después (el 8 de agosto de ese mismo año). En el 22 de junio de 1999 salió al público ELKS 0.0.77, la primera versión capaz de correr una interfaz de usuario gráfica (el Nano-X Window System). El 21 de julio, ELKS consiguió iniciarse en una Psion PDA con una arquitectura SIBO. ELKS 0.0.82 salió el 10 de enero del 2000. Al incluir el puerto SIBO, se convirtió en la primera versión oficial que podía ejecutarse en otro hardware de ordenador aparte de la base original 8086. El 3 de marzo de ese año, el proyecto se registró en SourceForge, siendo la nueva página web elks.sourceforge.net .
El 6 de enero de 2001, Alan Cox declaró que ELKS estaba "básicamente muerto". Pese a esto, la versión 0.0.84 salió al público el 17 de junio de 2001, Charilaos (Harry) Kalogirou añadió soporte para TCP/IP networking siete días más tarde, y ese mismo año (17 de noviembre), ELKS alcanzó la versión 0.0.90. El 20 de abril de 2002, Kalogirou añadió administración de memoria con capacidad de intercambio del disco, y nueve días más tarde salió ELKS 0.1.0, considerada la primera versión de beta. Para finales del año, el 18 de diciembre, el EDE (Elks Distribution Edition, una distribución basada en el kernel de ELKS) salió al público en su versión 0.0.5. Y en el 6 de enero de 2003, ELKS alcanzó la versión 0.1.2, seguida por una actualización el 3 de mayo de 2006, la primera actualización oficial después de una larga pausa en desarrollo.
Se planeó el desarrollo de FlightLinux, un sistema operativo en tiempo real para naves espaciales, el proyecto estaba pensado para el UoSAT-12, pero este acabó teniendo el sistema operativo qCF de Quadron Corporation, cancelando el desarrollo de FlightLinux.

## Uso y estado actuales

En enero de 2012, ELKS volvió a desarrollarse de nuevo. El repositorio CVS fue emigrado a Git en febrero de 2012, y se hicieron commits de numerosos parches del Linux-8086 al repositorio nuevo. La versión 0.1.4 salió el 19 de febrero de 2012, subido por Jody Bruchon en memoria de Riley Williams, un co-desarrollador del pasado. El parche incluía imágenes de disquetes actualizadas, arreglos de bugs de compilación de la versión anterior y el borrado de código sin usar. El 10 de mayo de 2012, BusyELKS fue añadido al repositorio por Jody Bruchon en un intento de reemplazar binarios stand-alone y aprovechar código compartido (ELKS no da soporte para bibliotecas compartidas). Binarios parecidos a BusyBox intentan ganar espacio con enlaces simbólicos, eliminando partes de código redundantes, y juntando programas separados a un único binario más grande . El 14 de noviembre de 2013, el desarrollo del proyecto se movió a GitHub. Se añadió el soporte a Rudimentary Ethernet y FAT en 2017.
Más de 30 desarrolladores han contribuido a este proyecto desde el fork en 1995. En marzo de 2015, el desarrollo del proyecto ELKS seguía activo, logrando la meta de 1.000 commits de código de fuente. En junio de 2018, hubo muchos arreglos de bugs y mejoras a lo largo de 583 commits más, guiando el proyecto a la versión 0.2.1. En marzo de 2019, el proyecto completó la transición del obsoleto compilador BCC al más reciente GCC-IA16. En 2020 el código no publicado en el repositorio GIT de ELKS proporciona soporte de Linux para IBM XT y compatibles, monta ambas FAT16 y FAT32, puede iniciarse desde FAT32 y tiene soporte de red para algunas tarjetas. Hay también varias aplicaciones demo VGA.