El núcleo Linux es un núcleo de sistema operativo tipo Unix, monolítico, modular y multitarea. Linux es software libre y de código abierto. Fue originalmente escrito en 1991 por Linus Torvalds para su PC basada en i386, y pronto fue adoptado como el núcleo para el sistema operativo GNU/Linux, que fue creado como un reemplazo libre para Unix.
Linux se proporciona bajo la Licencia Pública General de GNU versión 2, pero contiene archivos bajo otras licencias compatibles. Desde finales de la década de 1990, ha sido incluido como parte de un gran número de distribuciones de sistemas operativos, muchas de las cuales también se denominan comúnmente Linux.
Linux se despliega en una amplia variedad de sistemas informáticos, como sistemas embebidos, dispositivos móviles (incluido su uso en el sistema operativo Android), computadoras personales, servidores, mainframes y supercomputadoras.
Puede ser adaptado para arquitecturas específicas y para varios escenarios de uso utilizando una familia de comandos simples (es decir, sin necesidad de editar manualmente su código fuente antes de la compilación). Usuarios con privilegios también pueden ajustar los parámetros del núcleo en tiempo de ejecución. La mayor parte del código del núcleo de Linux está escrito utilizando las extensiones de GNU del GCC al estándar lenguaje de programación C y con el uso de instrucciones específicas de la arquitectura (ISA) en partes limitadas del núcleo. Esto produce un ejecutable altamente optimizado (vmlinux) con respecto a la utilización del espacio de memoria y los tiempos de ejecución de tareas.
Las discusiones de desarrollo cotidianas tienen lugar en la Linux kernel mailing list (LKML). Los cambios se rastrean utilizando el sistema de control de versiones git, que fue originalmente creado por Torvalds como un reemplazo de software libre para BitKeeper.
En el archivo Léeme de Linux se indica que es un clon del sistema operativo Unix. Sin embargo, Linux es un núcleo semejante al núcleo de un sistema operativo Unix. De hecho, inicialmente se publicó como núcleo semejante a Minix, que a su vez era semejante a Unix, pero con una concepción de micronúcleo en vez de monolítica.
Un micronúcleo contiene una funcionalidad mínima en comparación con un núcleo monolítico tradicional.
Darwin y GNU Hurd tienen núcleos que son una versión de Mach. Minix, sistema operativo en el que se basó inicialmente Linux, también es micronúcleo. Todos ellos tienen en común el traslado de parte de la funcionalidad en espacio privilegiado a espacio de usuario.
La parte de un sistema operativo que se ejecuta sin privilegios o en espacio de usuario es la biblioteca del lenguaje C, que provee el entorno de tiempo de ejecución, y una serie de programas o herramientas que permiten la administración y uso del núcleo y proveer servicios al resto de programas en espacio de usuario, formando junto con el núcleo el sistema operativo.
En un sistema con núcleo monolítico como Linux la biblioteca de lenguaje C consiste en una abstracción de acceso al núcleo. Algunas bibliotecas como la biblioteca de GNU proveen funcionalidad adicional para facilitar la vida del programador y usuario o mejorar el rendimiento de los programas.
En un sistema con micronúcleo la biblioteca de lenguaje C puede gestionar sistemas de archivos o controladores además del acceso al núcleo del sistema.
A los sistemas operativos que llevan Linux se les llama de forma genérica distribuciones Linux. Estas consisten en una recopilación de software que incluyen el núcleo Linux y el resto de programas necesarios para completar un sistema operativo. Las distribuciones más comunes son de hecho distribuciones GNU/Linux o distribuciones Android. El hecho de que compartan núcleo no significa que sean compatibles entre sí. Una aplicación hecha para GNU/Linux no es compatible con Android sin la labor adicional necesaria para que sea multiplataforma.
Las distribuciones GNU/Linux usan Linux como núcleo junto con el entorno de tiempo de ejecución del Proyecto GNU y una serie de programas y herramientas del mismo que garantizan un sistema funcional mínimo. La mayoría de distribuciones GNU/Linux incluye software adicional como entornos gráficos o navegadores web así como los programas necesarios para permitirse instalar a sí mismas. Los programas de instalación son aportados por el desarrollador de la distribución. Se les conoce como gestores de paquetes. Los creadores de una distribución también se pueden encargar de añadir configuraciones iniciales de los distintos programas incluidos en la distribución.
Las distribuciones Android incluyen el núcleo Linux junto con el entorno de ejecución y herramientas del proyecto AOSP de Google. Cada fabricante de teléfonos dispone de su propia distribución de Android a la cual modifica, elimina o añade programas extra: interfaces gráficas, tiendas de aplicaciones y clientes de correo electrónico son algunos ejemplos de programas susceptibles de ser añadidos, modificados o eliminados. Además de las distribuciones de los fabricantes de teléfonos existen grupos de programadores independientes que también desarrollan distribuciones de Android. LineageOS (antes CyanogenMod), Replicant y Pixel Experience son tres ejemplos de distribuciones Android independientes también llamadas custom "ROMs" o firmwares no oficiales.
En abril de 1991, Linus Torvalds, de 21 años, empezó a trabajar en unas simples ideas para un núcleo de un sistema operativo. Comenzó intentando obtener un núcleo de sistema operativo gratuito similar a Unix que funcionara con microprocesadores Intel 80386. Para ello tomó como base al sistema Minix (un clon de Unix) e hizo un núcleo monolítico compatible que inicialmente requería software de Minix para funcionar. El 26 de agosto de 1991 Torvalds escribió en el grupo de noticias comp.os.minix:
Dicho mensaje despertó mucho interés en la comunidad computacional universitaria. En septiembre de 1991 Linux liberó la versión 0.01 del kernel Linux. Tenía 10.239 líneas de código con el que muchas personas quisieron colaborar. El 5 de octubre de ese año (1991), salió la versión 0.02 del kernel, primera versión "oficial" y utilizable que ya corria herramientas básicas como bash, gcc, make, sed, compress, etc.. Luego, en diciembre se lanzó la versión 0.11(1991). Esta versión fue la primera en ser self-hosted (autoalbergada). Es decir, Linux 0.11 podía ser compilado por una computadora que ejecutase Linux 0.11, mientras que las versiones anteriores de Linux se compilaban usando otros sistemas operativos. Cuando lanzó la siguiente versión, Torvalds adoptó la GPL como su propio boceto de licencia, la cual no permite su redistribución con otra licencia que no sea GPL. Antes de este cambio, se impedía el cobro por la distribución del código fuente.
Se inició un grupo de noticias llamado alt.os.linux y el 19 de enero de 1992 se publicó en ese grupo la primera publicación (post). El 31 de marzo, alt.os.linux se convirtió en comp.os.linux. XFree86, una implementación del X Window System, fue portada a Linux, la versión del núcleo 0.95 fue la primera en ser capaz de ejecutarla. Este gran salto de versiones (de 0.1x a 0.9x) fue por la sensación de que una versión 1.0 acabada no parecía estar lejos. Sin embargo, estas previsiones resultaron ser un poco optimistas: desde 1993 hasta principios de 1994 se desarrollaron 15 versiones diferentes de 0.99 (llegando a la versión 0.99r15).
El 14 de marzo de 1994, salió Linux 1.0.0, que constaba de 176.250 líneas de código. En marzo de 1995 se lanzó Linux 1.2.0, que ya estaba compuesto de 310.950 líneas de código.