Red Hot Cyber

La ciberseguridad se comparte. Reconozca el riesgo, combátalo, comparta sus experiencias y anime a otros a hacerlo mejor que usted.
Buscar

La historia del kernel de Linux (2 de 2). Los primeros hackers hasta la versión 1.0.

Redazione RHC : 13 julio 2025 12:27

Artículo de Pietro Cornelio y Massimiliano Brolli

Artículos anteriores:La historia del kernel de Linux (1 de 2). De Torvalds a la comunidad hacker

En el primer artículo conocimos a Linus Torvalds, su adolescencia y su excesivo interés por las computadoras. También hemos visto que, tras trabajar en un sistema operativo MINIX (que no se podía modificar como código fuente), creó primero un shell y luego controladores hasta definir un sistema operativo primordial que, en aquel momento, aún no era autónomo.

Inmediatamente después de compartir el embrión de lo que luego se convertiría en Linux en el grupo de noticias comp.os.minix, todo empezó a cambiar rápidamente, y es a partir del 17 de septiembre de 1991 que retomamos esta emocionante historia.

Después del correo electrónico al grupo de noticias

«No creo que más de una o dos personas lo intentaran», dijo Torvalds cuando «tuvieron que instalar el compilador especial, crear una partición limpia para usarla como partición de arranque, compilar mi núcleo y luego iniciar el shell. Iniciar el shell fue prácticamente todo. Podrías usar esa versión.»

Podrías imprimir el código fuente, que no tenía más de 10 000 líneas y menos de 100 páginas si lo imprimías en letra pequeña. Ari Lemke estaba a cargo de subir el sistema operativo al sitio FTP y odiaba el nombre Freax que Torvalds le había dado.

Prefería el otro nombre – Linux – así que colocó el código fuente en un directorio llamado «Linux»; Residiendo en «pub/OS/Linux».

Torvalds corrigió algunos errores, como el que causaba que GCC se bloqueara al quedarse sin memoria, y logró portar el compilador de GCC al sistema operativo Linux para que se pudieran compilar programas pequeños.

Esto significó que los usuarios ya no necesitarían cargar el compilador de GCC antes de iniciar el sistema operativo Linux. A principios de octubre, se lanzó la versión 0.02, que incluía algunas correcciones de errores y algunos programas adicionales. Al mes siguiente, Torvalds lanzó la versión 0.03. ¡!– REEMPLAZAR ANUNCIOS –>

Linus Torvalds dijo años después:

“Podría haberme detenido a finales de 1991. Había hecho muchas cosas que me parecían interesantes. No todo funcionaba a la perfección, pero en mi opinión, en el mundo del software, es fácil perder el interés en un proyecto una vez que se han resuelto los problemas fundamentales. Y eso me estaba pasando. Depurar software no es una actividad muy divertida. Luego sucedieron dos cosas que me mantuvieron en marcha. Primero, destruí accidentalmente mi partición de Minix; segundo, la gente seguía preguntando: «Envíame tus comentarios sobre…» Sistema.

En ese momento, iniciaba Linux, pero usaba Minix como mi entorno de desarrollo principal. Usaba Linux principalmente para leer correos electrónicos y noticias desde mi ordenador de la universidad a través de la emulación de terminal que había creado. El ordenador de la universidad siempre estaba ocupado, así que escribí un programa que lo llamaba automáticamente. Pero en diciembre, accidentalmente me conecté a mi disco duro en lugar del módem. Intentaba conectarme a /dev/tt1, la línea serie. Cometí un error y me conecté automáticamente a /dev/hda1, el disco duro. El resultado fue que sobrescribí accidentalmente las partes más críticas de la partición donde tenía Minix. Fue entonces cuando tuve que tomar una decisión: podía reinstalar Minix o aprovechar la oportunidad y convencerme de que Linux era lo suficientemente bueno como para reemplazarlo. Escribiría programas para compilar Linux directamente en él, y cuando sintiera la necesidad de Minix, simplemente añadiría esa función a Linux. Dejar el entorno de inicio y hacer que un programa sea verdaderamente independiente es un paso significativo. Un paso conceptual tan grande que a finales de noviembre lancé la nueva versión, llamándola .10. Unas semanas después llegó la versión 0.11.

Los primeros hackers que se unieron a Torvalds

A partir de entonces, tras el interés de la comunidad en Linux, varias personas se unieron al proyecto, ayudando a Torvalds. A continuación, presentamos, extraídos de los archivos C, los nombres de los primeros programadores que ayudaron a Torvalds, tomados del encabezado del código fuente de la versión 0.11 de Linux. Lo único que se hizo en ese momento fue «Theodore Ts’o».

Theodore Ts’o, el primer programador que se unió a Torvalds en el kernel de Linux

linux/kernel/blk_drv/ramdisk.c/* * linux/kernel/blk_drv/ramdisk.c * * Escrito por Theodore Ts’o, 2/12/91 *//* * malloc.c — un asignador de memoria del kernel de propósito general para Linux. * * Escrito por Theodore Ts’o([email protected]), 29/11/91…

Primeros desarrollos recomendados por los usuarios

Aquí, Linus Torvalds comienza a implementar las primeras funciones importantes para resolver los problemas de los usuarios y dijo:

Recuerdo que en diciembre había un tipo en Alemania que solo tenía 2 megabytes de RAM y estaba intentando compilar el kernel, pero no podía ejecutar GCC porque en ese momento este compilador necesitaba más de un megabyte. Me preguntó si Linux se podía compilar con un compilador más pequeño, uno que no necesitara tanta memoria. Así que decidí que, incluso si no necesitaba esa función en particular, se la implementaría. Se llama página a disco y significa que incluso si uno tiene solo 2 megas de RAM pueden simular tener más que eso usando el disco como almacenamiento. Era alrededor de la Navidad de 1991. Recuerdo que el 23 de diciembre intentaba que la función de página a disco funcionara. El 24 de diciembre funcionó bastante bien, pero ocasionalmente bloqueaba la máquina. El 25, funcionó bien. Esa fue la primera función que añadí para satisfacer las necesidades de otros. Y estaba orgulloso de ello.

Pero con cada día que pasaba, la comunidad de usuarios de Linux crecía. Torvalds recibía correos electrónicos de lugares que había soñado con visitar, como Australia y Estados Unidos. La función de página a disco era notable, porque Minix nunca la había implementado. De hecho, se incluyó en la versión 0.12, que se lanzó la primera semana de enero. 1992..

Inmediatamente, la gente empezó a comparar Linux no solo con Minix, sino también con Coherent, un pequeño clon de Unix desarrollado por Mark Williams Company. Desde el principio, la incorporación de la función de página a disco puso a Linux un paso por delante de la competencia. Fue entonces cuando Linux realmente despegó.

De repente, hubo gente que cambió de Minix a Linux. En aquel entonces, Linux no hacía todo lo que hacía Minix, pero sí la mayoría de las cosas que realmente interesaban a la gente. Y tenía una característica que a muchos les resultó muy útil: con la función de página a disco se podían ejecutar programas de mayor tamaño que la memoria.

Torvalds dijo:

«Lo cierto es que para que Linux fuera usable, dependí de un conjunto de herramientas distribuidas libremente en Internet: Yo también trabajé a hombros de gigantes. El más importante de este software libre fue el compilador GCC, con derechos de autor bajo la Licencia Pública General, creación de Richard Stallman, conocida universalmente como GPL (o «copyleft»). Así que abandoné mis antiguos derechos de autor y adopté la GPL, un documento escrito por R. Stallman con la supervisión de algunos abogados (y como hay abogados involucrados, tiene varias páginas). Los nuevos derechos de autor se incluyeron en la versión 0.12, pero recuerdo haberme quedado despierto la noche después del lanzamiento, atormentado por la idea del interés comercial que generaría el sistema.»

Minix vs. Linux

Toda esa atención no fue del todo positiva. Torvalds dijo que, aunque nunca le gustaron las comparaciones, se vio obligado a defender Linux cuando Andrew Tanenbaum empezó a atacarlo, ya que estaba suplantando al suyo.

Interfaz gráfica de usuario de MINIX de unos años después, muy similar a Windows 95. Ambos eran nerds, así que todo este intercambio se produjo por correo electrónico. Torvalds dijo sobre este tema:

«¿Quién lo culparía si estuvieran dando vueltas como locos? Antes de que se crearan los grupos de noticias de Linux, usaba constantemente los grupos de noticias de Minix para publicar anuncios sobre Linux o para encontrar gente interesada en el sistema operativo. ¿Por qué le gustaría eso a Andrew? Él tenía ideas opuestas a las mías sobre cómo debería construirse un sistema operativo. En aquel entonces, Andrew formaba parte de una escuela de informáticos que defendía un enfoque de micronúcleo para los sistemas operativos. Había desarrollado Minix como un micronúcleo, y Amoeba, el sistema en el que trabajaba por aquel entonces, también era del mismo tipo. Este fue un movimiento muy activo a finales de los 80 y principios de los 90. Y el éxito de Linux era una amenaza. Así que Andrew seguía enviando mensajes muy desagradables al grupo de noticias.»

La teoría detrás del micronúcleo es que los sistemas operativos son complejos. Por eso, intentamos eliminar parte de la complejidad con una modularización rigurosa. El principio del enfoque del micronúcleo es que el núcleo, que es la base de un sistema operativo, debe hacer lo mínimo posible.

Su función principal es la comunicación. Todo lo demás que ofrece una computadora son servicios disponibles a través de los canales de comunicación del micronúcleo. En el enfoque del micronúcleo, el espacio de problemas debe dividirse para que ninguna parte sea compleja. Torvalds consideró este enfoque absurdo.

Dijo que las interacciones lo hacían mucho más complejo de lo que podría ser si se incluyeran muchos servicios en el propio núcleo, como es el caso de Linux. Otro problema con Minix era que se podía tener el código fuente, pero las licencias no lo permitían. No se puede hacer mucho con él.

Tomemos a alguien como Bruce Evans, quien había realizado muchas modificaciones en Minix y lo había hecho más usable. No pudo incorporar sus mejoras. Tuvo que limitarse a crear parches. Desde un punto de vista práctico, fue un desastre.

Desde un punto de vista legal, no pudo poner a disposición de los usuarios una imagen de arranque para que pudieran actualizar fácilmente. Así que los usuarios tuvieron que seguir un proceso paso a paso para obtener un sistema usable. Algo terriblemente incómodo.

Linus lee los correos electrónicos del profesor en Pantalla. Tanenbaum

Intercambios con el profesor Tanenbaum

Torvalds comenzó a comunicarse con Andrew Tanenbaum a principios de 1992. Torvalds comentó sobre el primer mensaje de Tanenbaum:«Imagínese conectarse a Internet en una mañana fría y encontrarse con la versión completa de este mensaje»:

De: [email protected] (Andy Tanenbaum) Para: Grupo de noticias: comp.os.minix Asunto: LINUX está obsoleto Fecha: 29 de enero de 1992, 12:12:50 GMT Estuve en EE. UU. un par de semanas, así que no comenté mucho sobre LINUX (no es que hubiera dicho mucho si hubiera estado en casa), pero por si acaso, tengo un par de comentarios que hacer. Ahora. Como muchos saben, MINIX es un hobby para mí, algo que hago por las tardes cuando estoy cansado de escribir libros y no hay grandes guerras, revoluciones ni audiencias del Senado que seguir en directo por CNN. Mi verdadero trabajo es como profesor e investigador en el área de sistemas operativos. Dado mi trabajo, creo saber un poco sobre el futuro de los sistemas operativos en los próximos diez años aproximadamente. Dos cosas son obvias: 1. MICROKERNEL VERSUS SISTEMA MONOLÍTICO. La mayoría de los sistemas operativos antiguos son monolíticos, lo que significa que todo el sistema operativo es un único archivo a.out que se ejecuta en «modo kernel». Este binario contiene la gestión de procesos, la gestión de memoria, el sistema de archivos, etc. Ejemplos de estos sistemas incluyen UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS y muchos otros. La alternativa es un sistema basado en microkernel, donde la mayor parte del sistema operativo se ejecuta como procesos separados, principalmente fuera del kernel. Los procesos se comunican mediante el envío de mensajes. La función del kernel es gestionar el paso de mensajes, las interrupciones y los procesos de bajo nivel. y, a veces, E/S. Ejemplos de este tipo de arquitectura incluyen RC4000, AMOEBA, CHORUS, MACH y Windows/NT (próximamente disponible). Podría extenderme en los méritos relativos de ambas arquitecturas, pero basta con decir que, entre quienes diseñan sistemas operativos, el debate está prácticamente zanjado. El micronúcleo ha ganado; MINIX es un sistema basado en micronúcleo. El sistema de archivos y la gestión de memoria son procesos independientes que se ejecutan fuera del núcleo. La E/S de la unidad también son procesos independientes. LINUX es un sistema monolítico. Un gran retroceso a la década de 1970. 2. PORTABILIDAD: MINIX se diseñó para ser razonablemente portátil y se ha portado de la línea Intel al 680×0 (Atari, Amiga, Macintosh), al SPARC y al ns32016. LINUX está fuertemente ligado al 80×86. Y ese es el camino equivocado. No me malinterpreten, no es que no esté contento con… La existencia de LINUX. Acabará con todos aquellos que quieren convertir MINIX en BSD. Pero, sinceramente, recomendaría a cualquiera que busque un sistema operativo *libre* y **MODERNO** que busque un sistema operativo portátil basado en micronúcleo, quizás algo como GNU. Andy Tanenbaum ([email protected]):«Sabía que tenía que defender mi honor, así que respondí», dijo Tovalds:

De: [email protected] (Linus Benedict Torvalds) Asunto: RE: LINUX está obsoleto Fecha: 29 ene. 92 23:14:26 GMT Organización: Universidad de Helsinki Bueno, con un tema como ese, me temo que tendré que responder. Disculpas a los usuarios de Minix que han oído hablar demasiado de Linux. Me encantaría *ignorar el gancho*, pero… ¡es hora de una buena pelea! En el mensaje «[email protected]» [email protected] (Andy Tanenbaum) escribe: >Llevo un par de semanas en EE. UU., así que no he comentado mucho sobre LINUX (no es que hubiera dicho mucho si hubiera estado en casa), pero por si acaso, tengo un par de comentarios que hacer ahora. >Como muchos saben, MINIX es una afición para mí, algo que hago por las tardes cuando estoy cansado de escribir libros y no hay grandes guerras, revoluciones ni audiencias del Senado que seguir en directo por la CNN. Mi verdadero trabajo es como profesor e investigador en el área de sistemas operativos. ¿Es eso una excusa para las limitaciones de MINIX? Lo siento, pero tú pierdes: tengo muchas más excusas que tú, y aun así, Linux deja a MINIX por los suelos en casi todos los aspectos. Sin mencionar que la mayor parte del mejor código de Minix parece haber sido escrito por Bruce Evans. Respuesta 1: Estarías usando Minix como pasatiempo: mira quién gana dinero con Minix y quién regala Linux. Entonces ven a hablarme de pasatiempos. Haz que Minix esté disponible gratuitamente y una de mis principales objeciones desaparecerá. Linux definitivamente ha sido un pasatiempo (pero uno serio y bueno) para mí: no gano dinero con él y ni siquiera forma parte de mis estudios universitarios. Lo hice todo en mi tiempo libre y en mi propia máquina. Respuesta 2: Tu trabajo es el de profesor e investigador. Esa es una gran excusa para algunos de los bulos de Minix. Solo puedo esperar (y asumir) que Amoeba no sea tan malo como Minix. >1. MICROKERNEL VS. SISTEMA MONOLÍTICO Es cierto, Linux es monolítico, y estoy de acuerdo en que el microkernel es mejor. Si te hubieras limitado a discutir menos, probablemente habría estado de acuerdo con casi todo lo que escribiste. Desde un punto de vista teórico (y estético), Linux sale perdiendo. Si el núcleo GNU hubiera estado listo la primavera pasada, ni siquiera habría empezado mi proyecto: lo cierto es que no estaba listo, y sigue sin estarlo. Linux, sin duda, gana en este aspecto: está disponible aquí y ahora. MINIX es un sistema basado en micronúcleo. [Parte eliminada, pero no tanto como para complicar el asunto]. LINUX es un sistema monolítico. Si este fuera el único criterio para evaluar la «bondad» de un núcleo, tendrías razón. Sin embargo, lo que no dices es que MINIX no maneja muy bien el micronúcleo y tiene problemas con la multitarea real (dentro del núcleo). Si hubiera creado un sistema operativo que tuviera problemas con un sistema de archivos multihilo, no criticaría a los demás tan a la ligera. De hecho, haría todo lo posible para que la gente olvidara mi fiasco. [Sí, sé que hay trucos para el multihilo en Minix, pero son solo trucos, y Bruce Evans me dice que hay muchos problemas.] >2. PORTABILIDAD: «La portabilidad es para quienes no pueden escribir programas nuevos». El hecho es que Linux es más portable que Minix. Te oigo decir: «¿Qué?». Es cierto, pero no en el sentido que te refieres a que hice Linux lo más compatible posible con los estándares (sin tener los estándares POSIX delante). Portar cosas a Linux suele ser mucho más fácil que portarlas a Minix. Estoy de acuerdo en que la portabilidad es algo bueno, pero solo cuando realmente tiene sentido. No tiene sentido intentar que un sistema operativo sea demasiado portable: basta con adherirse a una API portable. La idea de un sistema operativo es tomar las características del hardware y ocultarlas tras una capa de llamadas de alto nivel. Eso es exactamente lo que hace Linux: utiliza un subconjunto de 386 características más amplio que el que parecen utilizar otros núcleos. Claro que esto hace que el núcleo sea menos portable, pero también simplifica mucho la arquitectura. Es el compromiso que hizo posible Linux. También estoy de acuerdo en que Linux lleva la no portabilidad al extremo: recibí mi 386 en enero pasado, y Linux fue en parte un proyecto para aprender sobre la máquina. Muchas cosas deberían haberse hecho más portables, si hubiera sido un proyecto real. Pero no pongo excusas: fue una decisión de diseño, y el pasado abril, cuando comencé el proyecto, no pensé que nadie más querría usarlo. Me alegra decir que me equivoqué, y como mis fuentes están disponibles gratuitamente para todos, cualquiera puede intentar portarlo, aunque no será fácil. P.D.:> Disculpa si parecí demasiado agresivo. Minix está bien si no tienes nada más disponible. Amoeba podría ser una opción viable si tienes entre 5 y 10 386 de repuesto, pero ese no es mi caso. No suelo meterme en discusiones en línea, pero cuando se menciona Linux, me pongo sensible 🙂

Linux, en constante auge: X Window

En 1992, el sistema operativo pasó de ser un juguete a algo integrado en la vida de las personas, sus actividades y sus negocios. El cambio se produjo en la primavera de 1992, aproximadamente un año después de que comenzara con la emulación de terminal, cuando la primera versión del sistema X Window empezó a funcionar en Linux. Esto significó que el sistema operativo pudo soportar una interfaz gráfica que los usuarios podían usar simultáneamente en múltiples ventanas, gracias al diseño de X Window originado en el MIT. Este fue un gran cambio.

«Recuerdo haber bromeado con Lars al respecto, aproximadamente un año antes de que ocurriera, diciéndole que algún día ejecutaríamos X y podríamos hacer cualquier cosa. No pensé que sucedería tan rápido. Fue un hacker llamado Orest Zborowski quien logró portar X a Linux.»

La contribución de Orest no solo hizo que Windows estuviera disponible, sino que también abrió una gran puerta al futuro. Se utilizaron sockets para la red local para permitir el funcionamiento del sistema X Window. Por lo tanto, fue posible partir de esos mismos sockets para hacer que Linux diera el gran salto hacia las redes externas.

Linux y la red

Sin redes, Linux solo podía ser usado por personas que se quedaban en casa y usaban un módem para conectarse, o lo hacían todo localmente. Con gran optimismo, las redes Linux comenzaron a desarrollarse sobre los sockets originales, aunque nunca fueron concebidos para la red.

Torvalds estaba tan convencido de que el objetivo estaba cerca que dio un gran salto en el sistema de numeración de versiones. En marzo de 1992, estaba considerando lanzar la versión 0.13. En cambio, con la interfaz gráfica funcionando, pensó que Linux ya había recorrido el 95 % de su objetivo de lanzar un sistema operativo completo, fiable y con funciones de red.

Así que la nueva versión era la 0.95, pero Linus dijo:

«Vaya, me adelanté. Qué ingenuo… Las redes son una bestia repugnante, y al final tardaron exactamente dos años en arreglarlas, en ponerlas en un formato que pudiera hacerse público. Al añadir las redes, se introducen de repente toda una serie de problemas. Problemas de seguridad, por ejemplo. No sabes quién está ahí fuera ni qué intentas hacer. Tienes que tener mucho cuidado de que nadie te bloquee el ordenador enviándote paquetes basura. Ya no puedes controlar quién intenta contactar con tu máquina. Además, mucha gente tiene configuraciones de sistema muy diferentes. Parecía que íbamos a seguir así para siempre.

A finales de 1993, Linux contaba con funciones de red prácticamente utilizables, aunque algunos usuarios tuvieron serios problemas para que funcionaran.

No podía gestionar redes sin límites de 8 bits.

Como Torvalds había sido tan optimista sobre la numeración de la versión 0.95, pronto se topó con problemas. En los dos años que tardó en llegar a la versión 1.0, la comunidad tuvo que hacer malabarismos con el número de versiones. No había muchos números entre el 95 y el 100, pero seguían lanzando nuevas versiones basadas en correcciones de errores o nuevas funciones.

Cuando llegaron a la versión 0.99, empezaron a añadir niveles de lanzamiento adicionales para indicar los niveles de parche, y luego se decidieron por el alfabeto.

En un momento dado, tenían la versión 0.99, nivel de parche 15. Luego, la versión 0.99, nivel de parche 15B, y así sucesivamente. Avanzaron hasta el nivel de parche 15Z. El nivel de parche 16 finalmente se convirtió en la versión 1.0 de Linux, el punto en que el software se volvió utilizable. Esta versión se lanzó en marzo de 1994 con gran fanfarria en el auditorio de la Facultad de Informática de la Universidad de Helsinki. Fuentes

Redazione
Red Hot Cyber's editorial team consists of a collection of individuals and anonymous sources who actively collaborate by providing advance information and news on cyber security and IT in general.

Lista degli articoli

Artículos destacados

¿Qué es un día cero y el riesgo de ciberataques dirigidos?

Las vulnerabilidades de día cero son uno de los mayores riesgos de ciberseguridad para las organizaciones. Se trata de vulnerabilidades desconocidas y sin parchear que los atacantes explotan para...

¿Qué es una Amenaza Persistente Avanzada (APT)? Un recorrido por actores maliciosos y hackers patrocinados por estados.

Las amenazas persistentes avanzadas (APT) son actores maliciosos que operan en la sombra de internet, llevando a cabo ataques altamente sofisticados y dirigidos. Estos grupos, a menudo asociados con e...

¿Qué son los ataques de denegación de servicio distribuido (DDoS) y cómo podemos protegernos de ellos?

Los ataques de denegación de servicio distribuido (DDoS) son una de las amenazas más comunes para sitios web, servidores y otras infraestructuras en línea. En concreto, este tipo de ata...

Descubriendo la araña dispersa: la amenaza criminal mediante tácticas y técnicas avanzadas

Por Centro de Defensa Cibernética Maticmind (Andrea Mariucci, Riccardo Michetti, Federico Savastano, Ada Spinelli) El actor de amenazas Scattered Spider, UNC9344, apareció en 2022 con dos at...

Probando el exploit: HackerHood prueba el exploit en el servidor WingFTP del CVE‑2025‑47812 con una puntuación de 10

Esta herramienta está diseñada exclusivamente para fines educativos y de pruebas de penetración autorizados. El autor no asume ninguna responsabilidad por el mal uso o los daños ca...