En 1983 Richard Stallman inició el Proyecto GNU, con el propósito de crear un sistema operativo similar y compatible con UNIX y los estándares POSIX. Dos años más tarde, 1985, creó la Fundación del Software Libre (FSF) y desarrolló la Licencia pública general de GNU (GNU GPL), para tener un marco legal que permitiera difundir libremente el software. De este modo el software de GNU fue desarrollado muy rápidamente, y por muchas personas. A corto plazo, se desarrolló una multiplicidad de programas, de modo que a principios de los años 90's había casi bastante software disponible como para crear un sistema operativo completo. Sin embargo, todavía le faltaba un núcleo.
Esto debía ser desarrollado en el proyecto GNU Hurd, pero Hurd demostró desarrollarse muy inactivamente, porque encontrar y reparar errores era muy difícil, debido a las características técnicas del diseño del micronúcleo.
Otro proyecto de sistema operativo software libre, en los años 1980 fue BSD. Este fue desarrollado en la Universidad de Berkeley desde la 6ª edición de Unix de AT&T. Puesto que el código de AT&T Unix estaba contenido en BSD, AT&T presentó una demanda a principios de los años 1990 contra la Universidad de Berkeley, la cual limitó el desarrollo de BSD y redujo el desarrollo. Así a principios de los años 1990 no produjo ningún sistema completo libre.
El futuro de BSD era incierto debido al pleito y detuvo el desarrollo. Además, el Proyecto GNU gradualmente se desarrollaba pero, este carecía de un bien formado núcleo UNIX. Esto dejó un nicho crítico abierto, que Linux llenaría muy pronto.
En 1991 en Finlandia, Linus Torvalds, entonces estudiante de informática de la universidad de Helsinki, decidió realizar la cuantiosa inversión de US$3500 de la época para adquirir un nuevo PC 386 (33 Mhz, 4MB de RAM; una de las más avanzadas de su época). El pago lo realizaría a plazos pues no disponía de tal cantidad de dinero en efectivo.
Habituamente lo utilizaba para acceder a la red de su universidad, pero por desgracia no le gustaba nada el sistema operativo con el cual trabajaba, Minix, así que decidió crear uno él mismo. Como realmente le interesaba aprender el funcionamiento de su nuevo 386, decidió aprovechar esta oportunidad para realizar un programa a bajo nivel prescindiendo de este Minix.
En los primeros intentos consiguió arrancar el ordenador y ejecutar dos procesos que mostraban “AAAAABBBBB ”. Uno lo utilizaría para leer desde el módem y escribir en la pantalla, mientras que el otro escribiría al modem y leería desde el teclado. Con el tiempo acabó el programa y lo utilizaba frecuentemente arrancando desde un disquete. La siguiente necesidad que tuvo fue la de poder descargar y subir archivos de su universidad, pero para implementar eso en su emulador era necesario crear un controlador de disco. Así que después de un trabajo continuo y duro creó un controlador compatible con el sistema de ficheros de Minix. En ese momento se percató que estaba creando algo más que un simple emulador de terminal, así que, descontento con su sistema Minix, emprendió la aventura de crear un sistema operativo partiendo de cero.
De forma privada, Linus nombraba “Linux” a su nuevo sistema, pero cuando decidió hacer una presentación pública (pues ya era capaz de mostrar una shell y ejecutar el compilador gcc) pensó que era demasiado egocéntrico llamarlo así y propuso llamarlo Freax. (aunque después se le siguió conociendo como linux). Después de anunciar en 25 Agosto de 1991 su intención de seguir desarrollando su sistema para construir un reemplazo de Minix, el 17 de septiembre de 1991 sube al servidor de FTP proporcionado por su universidad la versión 0.01 de Linux con 10.000 líneas de código (en la actualidad tiene más de 10 Millones). A partir de ese momento Linux empezó a evolucionar rápidamente.