ELKS, una variante de Linux para procesadores Intel de 16 bits antiguos

junio 10, 2022 , 0 Comments

Hace poco se dio a conocer el lanzamiento del proyecto ELKS 0.6 (Embeddable Linux Kernel Subset), desarrolla un sistema operativo similar a Linux para procesadores Intel 8086, 8088, 80188, 80186, 80286 y NEC V20/V30 de 16 bits.

El sistema operativo se puede usar tanto en computadoras de clase IBM-PC XT / AT más antiguas como en SBC / SoC / FPGA que recrean la arquitectura IA16. El proyecto se ha estado desarrollando desde 1995 y comenzó como una bifurcación del kernel de Linux para dispositivos sin una unidad de administración de memoria (MMU).

Hay dos opciones para la pila de red: la pila TCP/IP normal del kernel de Linux y la pila ktcp que se ejecuta en el espacio del usuario.

De las tarjetas de red, se admiten adaptadores Ethernet compatibles con NE2K y SMC. También es posible crear canales de comunicación a través del puerto serie utilizando SLIP y CSLIP. Los sistemas de archivos compatibles incluyen Minix v1, FAT12, FAT16 y FAT32. El proceso de arranque se configura mediante el script /etc/rc.d/rc.sys.

Además del kernel de Linux adaptado para sistemas de 16 bits, el proyecto desarrolla un conjunto de utilidades estándar (ps, bc, tar, du, diff, netstat, mount, sed, xargs, grep, find, telnet, meminfo, etc. ), incluido el intérprete de comandos compatible con bash, el administrador de ventanas de la consola de pantalla, los editores de texto Kilo y vi, el entorno gráfico basado en el servidor Nano-X X. Muchos componentes del espacio de usuario se toman prestados de Minix, incluido el formato de archivo ejecutable.

Principales novedades de ELKS 0.6

En esta nueva versión se ha agregado un intérprete de lenguaje BASIC, adecuado para estaciones de trabajo y sistemas flasheados en ROM. Esto incluye comandos para trabajar con archivos (LOAD/SAVE/DIR) y gráficos (MODE, PLOT, CIRCLE y DRAW).

Otro de los cambios que se destaca es que se ha agregado una biblioteca matemática a la biblioteca C estándar y se ha proporcionado la capacidad de trabajar con números de punto flotante en las funciones printf/sprintf, strtod, fcvt, ecvt. El código de la función strcmp ha sido reescrito y significativamente acelerado. Se ha propuesto una implementación más compacta de la función printf. Se agregaron las funciones in_connect e in_resolv.

Tambien se destaca que el núcleo ha mejorado la compatibilidad con el sistema de archivos FAT, aumentó la cantidad máxima de puntos de montaje a 6, agregó compatibilidad para configurar la zona horaria, agregó uname, usatfs y llamadas al sistema de alarma, reescribió el código para que funcione con el temporizador.

Ademas de ello se ha añadido un programa para trabajar con archivos tar, se agregaron los comandos man y eman para mostrar manuales de manual y se proporcionó soporte para mostrar páginas de manual comprimidas y se agregó el comando «reinicio de red». Comando nslookup reescrito, se agregó la capacidad de mostrar información sobre particiones montadas al comando de montaje.

Por otra parte, tambien se destaca el rendimiento mejorado del comando ls en particiones FAT, asi como tambien el rendimiento significativamente mejorado y soporte para sistemas de 8 bits en el controlador de red NE2K.

De los demás cambios que se destacan:

  • El servidor FTP ftpd se ha reescrito para admitir el comando SITE y la capacidad de establecer tiempos de espera.
    El soporte para resolver nombres DNS a través de la llamada in_gethostbyname se implementa para todas las aplicaciones de red.
  • El comando test («[«) está integrado en la implementación de bash.
  • Se agregó soporte para copiar un disco completo al comando sys.
  • Se ha agregado un nuevo comando de configuración para configurar rápidamente el nombre de host y la dirección IP.
  • Se agregaron opciones LOCALIP=, HOSTNAME=, QEMU=, TZ=, sync= y bufs= a /bootopts.
  • Se agregó soporte para discos duros SCSI e IDE al puerto para la computadora PC-98, se agregó un nuevo cargador BOOTCS, se implementó soporte para cargar desde un archivo externo, se amplió el soporte para particiones de disco.
    El port para procesadores 8018X agregó soporte para ejecutar desde ROM y mejoró el manejo de interrupciones.

Finalmente si estás interesado en poder conocer más al respecto, debes saber que el código fuente se distribuye bajo la licencia GPLv2. El sistema se suministra en forma de imágenes para grabar en disquetes o ejecutar en el emulador QEMU, puedes consultar los detalles en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.