¿Por qué Linux es gratuito?
Para responder esta pregunta es necesario entender la historia de la creación de este sistema operativo.

Primero, UNIX
El sistema operativo Unix fue concebido e implementado en 1969 por AT&T Bell Laboratories en Estados Unidos por Ken Thompson, Dennis Ritchie, Douglas McIlroy y Joe Ossanna.

Lanzado por primera vez en 1971, Unix fue escrito completamente en lenguaje assembly, una práctica común para la época.
Después, estos tipos vieron que era inviable escribir algo tan completo en Assembly. Así que decidieron escribir un lenguaje de alto nivel. Lo llamaron Lenguaje B, de Bell Labs.
Ese lenguaje evolucionó y después fue llamado Lenguaje C, simplemente porque venía después de B.
Más tarde, en 1973, el sistema fue reescrito en el lenguaje de programación C por Dennis Ritchie.
La disponibilidad de una implementación de Unix hecha en lenguaje de alto nivel hizo que su portabilidad a diferentes plataformas de computadora se volviera más fácil. En esa época, la mayoría de los programas era escrita en tarjetas perforadas que tenían que ser insertadas en lotes en computadoras mainframe.

Debido a una ley antimonopolio que le prohibía entrar en el negocio de las computadoras, AT&T se vio obligada a licenciar el código fuente del sistema operativo para quien quisiera.
Como resultado, Unix creció rápidamente y se volvió ampliamente adoptado por instituciones académicas y diversas empresas. En 1984, AT&T se deshizo de Bell Labs; libres de la obligación legal que exigía el licenciamiento de regalías, Bell Labs comenzó a vender Unix como un software propietario, llamado Unix System V.
Richard Stallman decide escribir un sistema operativo

El Proyecto GNU, iniciado en 1983 por Richard Stallman, tuvo el objetivo de crear un "sistema de software completamente compatible con Unix", compuesto enteramente de software libre. Él llamó a este sistema GNU - GNU is Not Unix - un acrónimo recursivo.

Más tarde, en 1985, Stallman fundó la Free Software Foundation y escribió la Licencia Pública General GNU (GNU GPL) en 1989. A principios de la década de 1990, muchos de los programas necesarios en un sistema operativo (como bibliotecas, compiladores, editores de texto, un Unix shell y un sistema de ventanas) fueron completados, aunque los elementos de bajo nivel, como controladores de dispositivo, daemons y el kernel se detuvieron y no fueron completados.
Minix, el Unix para enseñar sistemas operativos
En 1987, el profesor Andrew S. Tanenbaum creó un sistema operativo compatible con UNIX portado a PCs.

Su objetivo era usar este sistema creado en Lenguaje C y Assembly para explicar los principios de su libro de texto, "Operating Systems Design and Implementation" de (1987).
Un resumen de las 12.000 líneas de código del Kernel, gestor de memoria y sistema de archivos de MINIX 1.0 están en el libro. Prentice-Hall también liberó el código fuente de MINIX en disquetes con un manual de referencia. MINIX 1 poseía un sistema de llamadas compatible con la Séptima edición de UNIX.
Minix se popularizó en el ámbito académico de la computación, ya que la mayoría de los estudiantes quería ejecutar el Unix que usaban en las universidades, pero debido al precio del hardware y las licencias de software, era algo prohibitivo.
Linus Torvalds decide hacer su propio sistema compatible con Unix

Linus Torvalds, un estudiante de computación de la Universidad de Helsinki, comenzó el desarrollo del núcleo de su sistema compatible con Unix como un proyecto personal, inspirado por su interés en Minix.
Él se limitó a crear, en sus propias palabras, "un Minix mejor que Minix" ("a better Minix than Minix"). Y después de algún tiempo de trabajo en el proyecto, solo, envió el siguiente mensaje a la lista de discusión de usenet comp.os.minix:

Hola a todos los que usan minix
Estoy haciendo un sistema operativo (gratuito) (es solo un hobby, no es grande ni profesional como GNU) para mi 386(486) AT. He trabajado en él desde abril, y ahora está empezando a estar listo. Me gustaría recibir retroalimentación de las cosas que les gusta/les disgustan en Minix, ya que mi sistema se le parece (mismo diseño físico del sistema de archivos (debido a la practicidad) y otras cosas).
Ya porté bash(1.08) y gcc(1.40), y las cosas parecen funcionar.
Esto implica que tendré algo práctico dentro de algunos meses, y me gustaría saber cuáles son las características que la gente más quiere. Cualquier sugerencia será bienvenida, pero no prometo que la voy a implementar :-)
PD. Sí - no hay ningún código de minix, y hay un sistema de archivos multi-hilo. No es portable (usa el gestor de tareas del 386 etc) y es probable que nunca funcione con cualquier otro disco duro diferente al que tengo. :-(
Traducción libre del email
El 5 de octubre de 1991, Linus Torvalds anunció la primera versión "oficial" del núcleo Linux, versión 0.02.
Casi que Linux no fue creado
Si GNU hubiera sido lanzado antes de 1991, Linus Torvalds probablemente no habría creado Linux y habría utilizado 386BSD.
De cualquier manera, la gente del movimiento del software libre dejó su contribución, ya que en el año 1992, impulsado por el movimiento GNU y Free Software, Linus Torvalds cambió la licencia del núcleo Linux, de una licencia propia a una licencia libre compatible con la GPL del proyecto GNU.
Desde entonces, muchos programadores han contribuido con el desarrollo, ayudando a hacer de Linux el núcleo de enorme éxito colaborativo que es hoy.
Linux es un éxito porque es colaborativo
Al principio era utilizado por programadores o solo por quienes tenían conocimientos y usaban líneas de comando. Hoy eso cambió y existen diversos grupos que crean entornos gráficos para las diversas distribuciones GNU/Linux, que son cada vez más amigables, de manera que una persona con pocos conocimientos puede usar Linux, a través de una distribución GNU/Linux, por ejemplo.
Hoy Linux es un núcleo estable y puede reconocer muchos periféricos sin la necesidad de que el usuario necesite instalar controladores de sonido, video, módem, red, entre otros.
Curiosamente, el nombre Linux fue creado por Ari Lemmke, administrador del sitio ftp.funet.fi que dio ese nombre al directorio FTP donde el núcleo Linux estaba inicialmente disponible. Linus inicialmente lo había bautizado como "Freax".
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.