Introducción
⏱️ Lectura: 11 min
El 22 de abril de 2026 la programadora Hailey Somerville publicó en Codeberg un proyecto que suena a broma de DEF CON pero es código ejecutable: wsl9x, el Windows Subsystem for Linux que Microsoft nunca construyó para Windows 95. La herramienta corre un kernel Linux 6.19 modificado dentro del sistema operativo de 1995, compartiendo ring 0 con el propio Windows y usando las APIs de Win9x como si fueran syscalls de Linux. En menos de ocho horas acumuló 701 puntos y 161 comentarios en la portada de Hacker News, convirtiéndose en el proyecto retro del año.
📑 En este artículo
wsl9x no es una emulación ni una máquina virtual. Es una fusión a nivel de kernel: dos sistemas operativos distintos, uno de 1995 y otro de 2026, ejecutándose cooperativamente en el mismo procesador i386 sin aislamiento de memoria. Si uno crashea, caen ambos. Es, en palabras de la propia autora, seis años de trabajo condensados en 33 commits y publicados bajo licencia GPL-3.
Qué pasó
El anuncio no llegó por canales oficiales de Microsoft ni por un keynote corporativo. Hailey Somerville —conocida en la comunidad también por rust-magic-trackpad— publicó un toot en su instancia de Mastodon en social.hails.org el 22 de abril de 2026 enlazando al repositorio de Codeberg. El mensaje fue escueto: aquí está wsl9x, corre Linux en Windows 95. El README del repo se encargó del resto.
La viralización fue casi inmediata. El enlace llegó a Hacker News en las primeras horas del día en zona horaria del Pacífico y trepó hasta los primeros puestos. Para las ocho horas del ciclo, el hilo había acumulado 701 puntos y 161 comentarios, números que lo colocan en el percentil superior de la historia del agregador. Medios técnicos como Adafruit, Korben.info y Ecosistema Startup recogieron la noticia durante el mismo día con coberturas que destacaron la proeza de ingeniería inversa y el carácter voluntariamente anacrónico del proyecto.
Una frase del README se viralizó por encima del resto: Proudly written without AI. Una declaración deliberada en medio del auge de la programación asistida por modelos, que funcionó como gancho narrativo adicional en los hilos de discusión.
Contexto e historia
wsl9x no salió de la nada. Es la continuación directa de doslinux, un proyecto previo de Somerville que llevaba binarios Linux a DOS mediante un intérprete de syscalls. Seis años de iteración sobre esa base culminaron en wsl9x, que escaló la idea desde DOS hasta Windows 9x manteniendo el principio central: en lugar de emular, parchar el kernel de Linux para que hable el idioma del sistema anfitrión.
La historia de Linux corriendo sobre Windows tiene precedentes, pero ninguno con la ambición arquitectónica de wsl9x:
- Cygwin (1995) — recompilaba utilidades POSIX para Windows, pero sin kernel Linux real. Era un runtime de compatibilidad, no un sistema operativo invitado.
- CoLinux (2004) — permitía ejecutar Linux sobre Windows XP cargando el kernel como driver. Funcionaba esencialmente como antepasado conceptual de WSL2, con kernel sideloaded.
- WSL1 (2016) — traducía syscalls Linux a syscalls NT en vivo, sin kernel invitado. Solo funciona en Windows NT/10/11.
- WSL2 (2019) — abandonó la traducción y embebió un kernel Linux real en Hyper-V.
Ninguno de estos atacó Windows 9x, un sistema con un modelo de privilegios cooperativo, sin IDT suficientemente larga para syscalls Linux estándar y con una arquitectura 16/32 bits híbrida. Somerville eligió precisamente ese objetivo. El repositorio público encaja con la narrativa de seis años: un trabajo largo, silencioso, sin sponsors corporativos, que culmina en un lanzamiento autoeditado.
💭 Clave: wsl9x no usa virtualización. Ambos kernels comparten el mismo ring 0 cooperativamente. Un bug en cualquiera de los dos tira todo el sistema.
Arquitectura técnica de wsl9x
La ingeniería detrás de wsl9x se articula en tres componentes. Cada uno resuelve un problema que no existe en sistemas operativos modernos.
1. Kernel Linux 6.19 parcheado
El primer componente es un kernel Linux 6.19 modificado, basado en el modo User-Mode Linux (UML). UML normalmente compila el kernel como binario de userspace y ejecuta los syscalls mapeando a POSIX del host. Somerville tomó ese árbol y reemplazó las llamadas POSIX por APIs nativas de Windows 9x. El resultado se compila en la branch win9x-um-6.19 y produce un vmlinux.elf que no corre en ring 3 como un UML clásico, sino en ring 0 junto al kernel de Windows.
2. Driver VxD
El segundo componente es un driver VxD, el formato nativo de drivers de Windows 9x. Este driver carga el vmlinux.elf desde disco usando interrupciones DOS. Ahí comienza el verdadero acto de malabarismo: Windows 9x no tiene una IDT (Interrupt Descriptor Table) suficientemente extensa como para alojar un vector 0x80, que es la interrupción que Linux usa históricamente para syscalls en i386.
Para sortearlo, el driver instala un handler de General Protection fault y detecta syscalls Linux a partir de las violaciones de protección que produce la tentativa de int 0x80 en un sistema que no la tiene mapeada. Los page faults se tratan en el mismo handler, creando un puente bidireccional entre el kernel Linux invitado y el kernel Windows anfitrión.
3. Cliente userspace wsl.com
El tercer componente es userspace: un cliente wsl.com que corre en la ventana de DOS de Windows 95, lanza procesos Linux y se comunica con el driver VxD vía buffers compartidos. La experiencia del usuario final recuerda al wsl.exe moderno: un prompt con bash, ls y herramientas GNU básicas, pero corriendo encima de Windows 95.
flowchart TB
U["Userspace: wsl.com"] -->|"syscall attempt"| V["Driver VxD (ring 0)"]
V -->|"GP fault handler"| K["Linux 6.19 kernel parcheado"]
K -->|"APIs Win9x"| W["Windows 95 kernel (ring 0)"]
W -->|"shared memory"| K
V -->|"loads vmlinux.elf"| K
Datos y cifras
- Kernel Linux invitado: 6.19 (branch custom
win9x-um-6.19). - Hosts soportados: Windows 95, 98 y ME.
- Arquitectura: i386 únicamente (no hay build para x86_64).
- Composición del código: C 64%, Assembly 35.5%, Makefile 0.5%.
- Licencia: GPL-3.
- Commits en main: 33.
- Último commit: 23 de abril de 2026.
- Toolchain de build: cross compiler
i386-linux-musl+ Open Watcom v2. - Dependencia adicional: imagen de disco Windows 9x pre-instalada.
- Tiempo de desarrollo declarado: 6 años (extendiendo doslinux).
- Proyecto precursor: doslinux (binarios Linux sobre DOS).
- Métricas de lanzamiento: 701 puntos y 161 comentarios en Hacker News en 8 horas.
- Autora: Hailey Somerville ([email protected]).
- Repositorio oficial: codeberg.org/hails/wsl9x.
- Declaración del README: Proudly written without AI.
⚠️ Ojo: wsl9x requiere una instalación previa de Windows 95/98/ME y un cross toolchain específico. No hay imagen preempaquetada ni installer mágico — compilar es parte de la experiencia.
Impacto y análisis
Más allá del efecto wow, wsl9x plantea preguntas serias sobre ingeniería de sistemas. La primera es técnica: demuestra que el límite entre kernel invitado y kernel anfitrión puede colapsarse por completo cuando ambos toleran compartir ring 0 y memoria. Es el opuesto filosófico de un hipervisor; es cooperación mutua en el mismo espacio de privilegios. Ningún sistema de producción se construye así porque el costo es evidente: un solo bug en cualquiera de los dos kernels tira todo el sistema. Pero la viabilidad técnica queda probada.
La segunda pregunta es cultural. En un año dominado por agentes de IA que escriben código, modelos de 10 trillones de parámetros y herramientas como Claude Code u Oh-My-ClaudeCode que delegan la ingeniería a LLMs, wsl9x reivindica la programación artesanal y el conocimiento profundo. Seis años de lectura de manuales, parches de kernel y assembly i386 son, por definición, difíciles de delegar a un modelo. La frase Proudly written without AI se viralizó precisamente porque tocó una fibra generacional: hay todavía dominio del sistema que solo se gana puliendo código a mano durante años.
La tercera es estética. Somerville eligió el sistema operativo menos glamoroso de la historia —Windows 9x, descontinuado desde 2006, sin seguridad real, sin memoria protegida consistente— y lo convirtió en host de un kernel Linux moderno. Es retrocomputing con un propósito: mostrar que la distancia entre 1995 y 2026 no es un abismo técnico, sino una negociación de interfaces.
Qué sigue
El repositorio de wsl9x sigue activo, con commits posteriores al lanzamiento inicial. Somerville no ha prometido un roadmap público, pero la dirección natural del proyecto apunta a ampliar la cobertura de syscalls soportadas, mejorar el shell interactivo y eventualmente permitir programas más complejos como servidores web básicos o compiladores corriendo dentro de la ventana DOS.
Para la comunidad, el proyecto abre posibilidades en retrocomputing: museos de informática, emuladores modernos de Windows 9x como 86Box o PCem, y preservacionistas de software podrían usar wsl9x para ejecutar herramientas GNU modernas dentro de entornos de época, útil para análisis forense, recuperación de datos o experiencia educativa. Microsoft, por su parte, no ha comentado. Es improbable que lo haga: Windows 95 salió hace treinta años y oficialmente no existe soporte. Pero la existencia misma de wsl9x recuerda que las APIs de Windows 9x siguen documentadas lo suficiente como para que un único desarrollador independiente construya sobre ellas un subsystem completo de Linux.
Para Hailey Somerville, wsl9x ya cumplió su función: demostrar que se puede, llegar a portada de Hacker News, y dejar un artefacto de código que vivirá en repositorios mientras exista GPL-3.
📖 Resumen en Telegram: Ver resumen
Preguntas frecuentes
¿Qué es wsl9x exactamente?
Es un proyecto open source que permite ejecutar un kernel Linux 6.19 parcheado dentro de Windows 95, 98 o ME, compartiendo ring 0 con el propio Windows. Combina un driver VxD, un kernel Linux modificado desde la branch User-Mode Linux y un cliente userspace llamado wsl.com.
¿Necesito una máquina física con Windows 95 para usarlo?
No necesariamente. Puede ejecutarse sobre emuladores como 86Box, PCem o DOSBox-X que soporten Windows 9x. Lo que sí se requiere es una imagen de disco Windows 9x pre-instalada, cross toolchain i386-linux-musl y Open Watcom v2 para compilar los componentes.
¿Funciona en Windows XP, 10 u 11?
No. wsl9x depende explícitamente del modelo de privilegios cooperativo de Windows 9x y del formato de drivers VxD. Windows XP en adelante usan NT, que tiene una IDT completa, memoria protegida y un modelo de drivers distinto (WDM / WDF). Para Windows moderno ya existen WSL1, WSL2 y Hyper-V.
¿Por qué el autor enfatiza Proudly written without AI?
Es una declaración estética y cultural en un año donde la programación asistida por modelos es default. Somerville resalta que seis años de trabajo con parches de kernel y assembly i386 fueron escritos a mano, sin asistencia de LLMs, como una forma de reivindicar el oficio tradicional.
¿Se puede correr Docker, Kubernetes o servidores modernos encima?
No en estado actual. La cobertura de syscalls es limitada y el hardware anfitrión (i386, sin VT-x, sin memoria moderna) no soporta las demandas de stacks como Docker. Sirve para utilidades GNU básicas, shells, compiladores pequeños y demostración técnica.
¿Cómo se diferencia de CoLinux y Cygwin?
CoLinux (2004) cargaba el kernel Linux como driver en Windows XP, funcionando como antepasado de WSL2 con kernel sideloaded. Cygwin (1995) es solo un runtime POSIX recompilado, sin kernel Linux real. wsl9x es distinto porque apunta a Windows 9x específicamente, comparte ring 0 con el anfitrión y parchea el kernel Linux para hablar APIs Win9x en vez de POSIX.
Referencias
- Codeberg · hails/wsl9x — repositorio oficial del proyecto con código fuente, README y licencia GPL-3.
- Hacker News — hilo de discusión con 701 puntos y 161 comentarios que viralizó el proyecto el 22 de abril de 2026.
- social.hails.org — instancia de Mastodon donde Hailey Somerville anunció wsl9x mediante un toot el día del lanzamiento.
- Codeberg · hails/doslinux — proyecto precursor de wsl9x, base de seis años de desarrollo previo.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
0 Comentarios