El núcleo Linux es un núcleo libre y de código abierto [ 16 ] : 4 similar a Unix que se utiliza en muchos sistemas informáticos en todo el mundo. El núcleo fue creado por Linus Torvalds en 1991 y pronto fue adoptado como el núcleo del sistema operativo GNU (SO), que fue creado como un reemplazo libre para Unix . Desde finales de la década de 1990, se ha incluido en muchas distribuciones de sistemas operativos , muchas de las cuales se llaman Linux . Un ejemplo de este sistema operativo con núcleo Linux es Android , que se utiliza en muchos dispositivos móviles y embebidos.
La mayor parte del código del núcleo está escrito en C, con soporte de la Colección de Compiladores GNU (GCC), que cuenta con extensiones más allá del estándar C. [ 16 ] : 18 [ 17 ] El código también contiene código ensamblador para lógica específica de la arquitectura, como la optimización del uso de la memoria y la ejecución de tareas. [ 16 ] : 379–380 El núcleo tiene un diseño modular , de modo que los módulos pueden integrarse como componentes de software , incluso con carga dinámica. El núcleo es monolítico en un sentido arquitectónico, ya que todo el núcleo del sistema operativo se ejecuta en el espacio del núcleo .
Linux se distribuye bajo la Licencia Pública General GNU versión 2, aunque contiene archivos bajo otras licencias compatibles . [ 15 ]
Historia

En 1991, Linus Torvalds era un estudiante de informática matriculado en la Universidad de Helsinki . Durante su estancia allí, comenzó a desarrollar un sistema operativo como proyecto paralelo inspirado en UNIX, para un ordenador personal. [ 18 ] Empezó con un selector de tareas en lenguaje ensamblador Intel 80386 y un controlador de terminal . [ 18 ] El 25 de agosto de 1991, Torvalds publicó lo siguiente en comp.os.minix , un grupo de noticias en Usenet : [ 19 ]
Estoy desarrollando un sistema operativo (gratuito) (solo como hobby, no será grande ni profesional como GNU) para clones AT 386 (486) . Llevo trabajando en él desde abril y ya empieza a estar listo. Me gustaría recibir comentarios sobre lo que les gusta o no les gusta de Minix , ya que mi sistema operativo se parece un poco (mismo diseño físico del sistema de archivos (por razones prácticas), entre otras cosas). Actualmente he portado bash (1.08) y gcc (1.40), y parece que funciona. Esto implica que tendré algo práctico en unos meses [...] Sí, está libre de cualquier código de Minix y tiene un sistema de archivos multihilo. NO es portable [ sic ] (usa el cambio de tareas del 386, etc.), y probablemente nunca admitirá nada más que discos duros AT, ya que es lo único que tengo :-(.
El 17 de septiembre de 1991, Torvalds preparó la versión 0.01 de Linux y la subió a "ftp.funet.fi", el servidor FTP de la Red Finlandesa de Universidades e Investigación ( FUNET ). Ni siquiera era ejecutable, ya que su código aún necesitaba Minix para compilarse y probarse. [ 20 ]
El 5 de octubre de 1991, Torvalds anunció la primera versión "oficial" de Linux, la versión 0.02. [ 21 ] [ 20 ]
Como mencioné hace un mes, estoy trabajando en una versión gratuita de un programa similar a Minix para ordenadores AT-386. Finalmente, ya es utilizable (aunque puede que no lo sea dependiendo de tus necesidades), y estoy dispuesto a compartir el código fuente para una distribución más amplia. Es solo la versión 0.02... pero he logrado ejecutar con éxito bash, gcc, gnu-make, gnu-sed, compress, etc.
En ese momento, el Proyecto GNU había completado muchos componentes para su reemplazo libre de UNIX, GNU , pero su núcleo, el GNU Hurd , estaba incompleto. El proyecto adoptó el núcleo Linux para su sistema operativo. [ 22 ]
Torvalds etiquetó el núcleo con la versión principal 0 para indicar que aún no estaba destinado al uso general. [ 23 ] La versión 0.11, publicada en diciembre de 1991, fue la primera versión en ser autoalojada ; compilada en una computadora que ejecutaba el núcleo Linux.
Cuando Torvalds publicó la versión 0.12 en enero de 1992, adoptó la Licencia Pública General GNU versión 2 (GPLv2) en lugar de su licencia anterior, redactada por él mismo, que no permitía la redistribución comercial. La GPL entró en vigor el 1 de febrero de 1992. [ 24 ] A diferencia de Unix , todos los archivos fuente de Linux están disponibles gratuitamente, incluidos los controladores de dispositivos . [ 25 ]
El éxito inicial de Linux fue impulsado por programadores y evaluadores de todo el mundo. Debido a que Linux implementó una semántica de llamadas al sistema similar a la de Unix y expuso las API POSIX estándar a través de una implementación de la biblioteca estándar de C , Linux podía ejecutar software y aplicaciones que originalmente se habían desarrollado para Unix. [ 26 ]

El 19 de enero de 1992, se envió la primera publicación al nuevo grupo de noticias alt.os.linux . [ 27 ] El 31 de marzo de 1992, el grupo de noticias pasó a llamarse comp.os.linux . [ 28 ]
El hecho de que Linux sea un núcleo monolítico en lugar de un micronúcleo fue el tema de un debate entre Andrew S. Tanenbaum , el creador de MINIX, y Torvalds. [ 29 ] El debate Tanenbaum–Torvalds comenzó en 1992 en el grupo de Usenet comp.os.minix como una discusión general sobre arquitecturas de núcleos. [ 30 ] [ 31 ]
La versión 0.96, publicada en mayo de 1992, fue la primera capaz de ejecutar el Sistema X Window . [ 32 ] [ 33 ] En marzo de 1994, se publicó Linux 1.0.0 con 176.250 líneas de código. [ 34 ] Como indica el número de versión, fue la primera versión considerada adecuada para un entorno de producción . [ 23 ] En junio de 1996, después de la publicación de la versión 1.3, Torvalds decidió que Linux había evolucionado lo suficiente como para justificar un nuevo número principal, y por lo tanto etiquetó la siguiente publicación como la versión 2.0.0. [ 35 ] [ 36 ] Las características significativas de la versión 2.0 incluían el multiprocesamiento simétrico (SMP), soporte para más tipos de procesadores y soporte para seleccionar objetivos de hardware específicos y para habilitar características y optimizaciones específicas de la arquitectura. [ 26 ] La familia de comandos make *config de kbuild habilita y configura opciones para construir ejecutables de kernel ad hoc ( vmlinux ) y módulos cargables. [ 37 ] [ 38 ]
La versión 2.2, publicada el 20 de enero de 1999, [ 39 ] mejoró la granularidad del bloqueo y la administración SMP, y agregó soporte para plataformas m68k , PowerPC , Sparc64 , Alpha y otras de 64 bits. [ 40 ] Además, agregó nuevos sistemas de archivos, incluida la capacidad de solo lectura NTFS de Microsoft . [ 40 ] En 1999, IBM publicó sus parches para el código Linux 2.2.13 para el soporte de la arquitectura S/390 . [ 41 ]
La versión 2.4.0, publicada el 4 de enero de 2001, [ 42 ] incluía soporte para ISA Plug and Play , USB y tarjetas PC . Linux 2.4 añadió soporte para Pentium 4 e Itanium (este último introdujo la ISA ia64 , desarrollada conjuntamente por Intel y Hewlett-Packard para reemplazar la antigua PA-RISC ), y para el nuevo procesador MIPS de 64 bits . [ 43 ] El desarrollo para 2.4.x cambió un poco, ya que se pusieron a disposición más características a lo largo de la serie, incluyendo soporte para Bluetooth , Logical Volume Manager (LVM) versión 1, soporte para RAID , InterMezzo y sistemas de archivos ext3 .
La versión 2.6.0 se lanzó el 17 de diciembre de 2003. [ 44 ] El desarrollo de la versión 2.6.x cambió aún más hacia la inclusión de nuevas características en toda la serie. Entre los cambios que se han realizado en la serie 2.6 se encuentran: integración de μClinux en las fuentes del kernel principal, soporte para PAE , soporte para varias líneas nuevas de CPU , integración de Advanced Linux Sound Architecture (ALSA) en las fuentes del kernel principal, soporte para hasta 2 32 usuarios (en lugar de 2 16 ), soporte para hasta 2 29 ID de proceso (solo 64 bits, las arquitecturas de 32 bits siguen limitadas a 2 15 ), [ 45 ] aumentó sustancialmente el número de tipos de dispositivos y el número de dispositivos de cada tipo, soporte mejorado para 64 bits , soporte para sistemas de archivos que admiten tamaños de archivo de hasta 16 terabytes , preemption en el kernel , soporte para Native POSIX Thread Library (NPTL), integración de User-mode Linux en las fuentes del kernel principal, integración de SELinux en las fuentes del kernel principal, soporte para InfiniBand y mucho más.
A partir de las versiones 2.6.x, el kernel admitía una gran cantidad de sistemas de archivos. Algunos fueron diseñados para Linux, como ext3 , ext4 , FUSE y Btrfs . [ 46 ] Otros eran nativos de otros sistemas operativos como JFS , XFS , Minix, Xenix , Irix , Solaris , System V , Windows y MS-DOS . [ 47 ]
Aunque hasta entonces el desarrollo no había utilizado un sistema de control de versiones , en 2002, los desarrolladores de Linux adoptaron BitKeeper , que se les ofreció gratuitamente a pesar de no ser software libre . En 2005, debido a los intentos de ingeniería inversa , la empresa propietaria del software retiró su apoyo a la comunidad Linux. En respuesta, Torvalds y otros escribieron Git . El nuevo sistema se escribió en cuestión de semanas, y en dos meses se lanzó el primer kernel oficial creado con él. [ 48 ]
En 2005 se formó el equipo estable como respuesta a la falta de un árbol del kernel donde la gente pudiera trabajar en correcciones de errores , y se encargaría de actualizar las versiones estables . [ 49 ] En febrero de 2008 se creó el árbol linux-next para servir como un lugar donde se reunieran los parches que se pretendía fusionar durante el siguiente ciclo de desarrollo. [ 50 ] [ 51 ] Varios mantenedores de subsistemas también adoptaron el sufijo -next para los árboles que contienen código que pretenden enviar para su inclusión en el siguiente ciclo de lanzamiento. A partir de enero de 2014 , la versión en desarrollo de Linux se encuentra en una rama inestable llamada linux-next . [ 52 ]
Torvalds celebró el vigésimo aniversario de Linux en julio de 2011 con el lanzamiento de la versión 3.0.0. [ 35 ] Como 2.6 había sido el número de versión durante 8 años, se tuvo que agregar al kernel una nueva personalidad uname26 que informa 3.x como 2.6.40+x para que los programas antiguos funcionaran. [ 53 ]
La versión 3.0 se publicó el 22 de julio de 2011. [ 54 ] El 30 de mayo de 2011, Torvalds anunció que el gran cambio era "NADA. Absolutamente nada." y pidió: "...asegurémonos de que la próxima versión no sea solo un número nuevo y brillante, sino también un buen kernel." [ 55 ] Después de las 6 a 7 semanas previstas del proceso de desarrollo, se publicaría cerca del 20 aniversario de Linux.
El 11 de diciembre de 2012, Torvalds decidió reducir la complejidad del kernel eliminando el soporte para los procesadores i386 , específicamente al no tener que emular [ 56 ] la instrucción atómica CMPXCHG introducida con el i486 para permitir mutex confiables , lo que convirtió a la serie de kernels 3.7 en la última que aún soportaba el procesador original. [ 57 ] [ 58 ] La misma serie unificó el soporte para el procesador ARM . [ 59 ]
El cambio de numeración de 2.6.39 a 3.0, y de 3.19 a 4.0, no implicó una diferenciación técnica significativa; el número de versión principal se incrementó simplemente para evitar números secundarios grandes. [ 54 ] [ 60 ] Se publicaron kernels estables 3.xy hasta el 3.19 en febrero de 2015. La versión 3.11, publicada el 2 de septiembre de 2013, [ 61 ] agregó muchas características nuevas, como la nueva bandera O_TMPFILE para reducir las vulnerabilidades de archivos temporales, administración dinámica de energía experimental de AMD Radeon , sondeo de red de baja latencia y zswap (caché de intercambio comprimida). [ 62 ]
En abril de 2015, Torvalds lanzó la versión 4.0 del kernel. [ 35 ] Para febrero de 2015, Linux había recibido contribuciones de casi 12 000 programadores de más de 1200 empresas, incluyendo algunos de los mayores proveedores de software y hardware del mundo. [ 63 ] La versión 4.1 de Linux, lanzada en junio de 2015, contiene más de 19,5 millones de líneas de código aportadas por casi 14 000 programadores. [ 64 ]
Linus Torvalds anunció que la versión del kernel 4.22 se numeraría como 5.0 en marzo de 2019, afirmando que "'5.0' no significa nada más que los números 4.x empezaron a ser tan grandes que me quedé sin dedos de las manos y de los pies". [ 65 ] Incluía muchas adiciones importantes, como soporte para AMD Radeon FreeSync y la pantalla NVIDIA Xavier, correcciones para F2FS , EXT4 y XFS , soporte restaurado para archivos de intercambio en el sistema de archivos Btrfs y trabajo continuo en los gráficos Intel Icelake Gen11 y en los SoC NXP i.MX8 . [ 66 ] [ 67 ] Esta versión fue notablemente más grande que las demás, y Torvalds mencionó que "Los cambios generales para todas las versiones 5.0 son mucho mayores". [ 65 ]
Un total de 1991 desarrolladores, de los cuales 334 eran colaboradores por primera vez, agregaron más de 553 000 líneas de código a la versión 5.8, rompiendo el récord que ostentaba anteriormente la versión 4.9. [ 68 ]
Popularidad
Según la encuesta anual de desarrolladores de Stack Overflow de 2019, más del 53 % de todos los encuestados han desarrollado software para Linux y alrededor del 27 % para Android , [ 69 ] aunque solo alrededor del 25 % desarrolla con sistemas operativos basados en Linux. [ 70 ]
La mayoría de los sitios web funcionan con sistemas operativos basados en Linux , [ 71 ] [ 72 ] y las 500 supercomputadoras más potentes del mundo funcionan con Linux. [ 73 ]
Las distribuciones de Linux incluyen el núcleo junto con el software del sistema (por ejemplo, la biblioteca GNU C , systemd y otras utilidades y demonios de Unix ) y una amplia selección de software de aplicación , pero su cuota de uso en ordenadores de escritorio es baja en comparación con otros sistemas operativos.
Android , que se ejecuta sobre un núcleo Linux modificado, representa la mayoría de los sistemas operativos de dispositivos móviles, [ 74 ] [ 75 ] [ 76 ] y se utiliza cada vez más en dispositivos integrados , lo que lo convierte en un importante impulsor de la adopción de Linux. [ 26 ]
Valor

El coste de rediseñar la versión 2.6.0 del kernel de Linux en un entorno de desarrollo propietario tradicional se ha estimado en 612 millones de dólares estadounidenses (467 millones de euros, 394 millones de libras esterlinas) a precios de 2004 utilizando el modelo de estimación de persona-mes COCOMO . [ 77 ] En 2006, un estudio financiado por la Unión Europea elevó el coste de rediseño de la versión 2.6.8 del kernel a 882 millones de euros (1.140 millones de dólares, 744 millones de libras esterlinas). [ 78 ]
Este tema fue retomado en octubre de 2008 por Amanda McPherson, Brian Proffitt y Ron Hale-Evans. Utilizando la metodología de David A. Wheeler, estimaron que el rediseño del kernel 2.6.25 ahora cuesta $1.3 mil millones (parte de un total de $10.8 mil millones para rediseñar Fedora 9). [ 79 ] Nuevamente, García-García y Alonso de Magdaleno de la Universidad de Oviedo (España) estiman que el valor agregado anualmente al kernel fue de aproximadamente €100 millones entre 2005 y 2007 y €225 millones en 2008, costaría también más de €1 mil millones (aproximadamente $1.4 mil millones a febrero de 2010) desarrollarlo en la Unión Europea. [ 80 ]
A fecha de 7 de marzo de 2011 Utilizando las líneas de código ( LOC ) vigentes en ese momento del kernel de Linux 2.6.x y las cifras salariales, junto con los cálculos de David A. Wheeler, el rediseño del kernel de Linux, dado su creciente tamaño, costaría aproximadamente 3.000 millones de dólares (unos 2.200 millones de euros). Cálculo actualizado al 26 de septiembre de 2018. Utilizando las 20.088.609 LOC (líneas de código) vigentes en ese momento para el kernel de Linux 4.14.14 y el salario promedio nacional actual de un programador en EE. UU. de $75.506, se muestra que costaría aproximadamente $14.725.449.000 (£11.191.341.000) reescribir el código existente. [ 81 ]
Distribución
La mayoría de los usuarios de Linux lo hacen a través de una distribución . Algunas distribuciones incluyen el kernel estándar o estable. Varios proveedores (como Red Hat y Debian ) mantienen un árbol de código fuente personalizado. Estos se actualizan generalmente a un ritmo más lento que la rama estándar e incluyen todas las correcciones de la rama estable correspondiente, pero también pueden añadir compatibilidad con controladores o funciones que no se habían publicado en la versión estándar a partir de la cual el proveedor de la distribución creó su rama.
Desarrolladores
Comunidad
La comunidad de desarrolladores del kernel de Linux comprende entre 5000 y 6000 miembros. Según el informe "Estado del desarrollo del kernel de Linux de 2017", un estudio publicado por la Linux Foundation que abarca las contribuciones de las versiones 4.8 a 4.13, aproximadamente 1500 desarrolladores contribuyeron desde unas 200 a 250 empresas en promedio. Los 30 desarrolladores principales contribuyeron con algo más del 16 % del código. En cuanto a las empresas, los principales contribuyentes son Intel (13,1 %), Red Hat (7,2 %), Linaro (5,6 %) e IBM (4,1 %). El segundo y quinto lugar corresponden a las categorías "ninguno" (8,2 %) y "desconocido" (4,1 %). [ 83 ]
En lugar de una hoja de ruta, existen directrices técnicas. En lugar de una asignación centralizada de recursos, hay personas y empresas que tienen un interés común en el desarrollo del kernel de Linux, de forma totalmente independiente: personas como Linus Torvalds y yo no planificamos la evolución del kernel. No nos sentamos a elaborar la hoja de ruta para los próximos dos años ni a asignar recursos a las distintas funcionalidades nuevas. Esto se debe a que no disponemos de recursos. Los recursos pertenecen a las diversas corporaciones que utilizan y contribuyen a Linux, así como a los diversos colaboradores independientes. Son quienes poseen los recursos quienes deciden...
— Andrew Morton , 2005
Conflicto
Conflictos notables entre los desarrolladores del kernel de Linux:
- En julio de 2007, Con Kolivas anunció que dejaría de desarrollar para el kernel de Linux. [ 84 ] [ 85 ]
- En julio de 2009, Alan Cox renunció a su cargo como mantenedor de la capa TTY tras un desacuerdo con Torvalds. [ 86 ]
- En diciembre de 2010, hubo una discusión entre James Bottomley, mantenedor de SCSI de Linux, y Vladislav Bolkhovitin, mantenedor de SCST, sobre qué pila de destino SCSI debería incluirse en el kernel de Linux. [ 87 ] Esto molestó a algunos usuarios de Linux. [ 88 ]
- En junio de 2012, Torvalds dejó muy claro que no estaba de acuerdo con que NVIDIA publicara sus controladores como cerrados. [ 89 ]
- En abril de 2014, Torvalds prohibió a Kay Sievers enviar parches al kernel de Linux por no solucionar errores que causaban una interacción negativa entre systemd y el kernel. [ 90 ]
- En octubre de 2014, Lennart Poettering acusó a Torvalds de tolerar el estilo de discusión brusco en las listas de correo relacionadas con el kernel de Linux y de ser un mal ejemplo a seguir. [ 91 ]
- En marzo de 2015, Christoph Hellwig presentó una demanda contra VMware por infracción de los derechos de autor del núcleo de Linux. [ 92 ] Linus Torvalds dejó claro que no estaba de acuerdo con esta ni con iniciativas similares, calificando a los abogados de enfermedad purulenta. [ 93 ]
- En abril de 2021, se descubrió que un equipo de la Universidad de Minnesota estaba enviando parches de "mala fe" al núcleo como parte de su investigación. Esto resultó en la reversión inmediata de todos los parches enviados por miembros de la universidad. Además, un responsable de mantenimiento principal advirtió que cualquier parche futuro de la universidad sería rechazado de inmediato. [ 94 ] [ 95 ]
- En febrero de 2025, Hector Martin renunció como mantenedor del proyecto Asahi Linux (que agregó soporte para sistemas Apple Silicon a Linux) y subsistemas del kernel relacionados debido a desacuerdos sobre el uso del lenguaje de programación Rust en el kernel. [ 96 ]
- En junio de 2025, el sistema de archivos Bcachefs estaba generando tensión con Torvalds [ 97 ] y en septiembre de 2025 fue eliminado del kernel de Linux a partir de la versión 6.18. [ 98 ]
Los desarrolladores prominentes del kernel de Linux han sido conscientes de la importancia de evitar conflictos entre desarrolladores. [ 99 ] Durante mucho tiempo no hubo un código de conducta para los desarrolladores del kernel debido a la oposición de Torvalds. [ 100 ] Se introdujo un Código de Conflicto del Kernel de Linux el 8 de marzo de 2015. [ 101 ] Fue reemplazado el 16 de septiembre de 2018 por un nuevo Código de Conducta basado en el Pacto del Colaborador . Esto coincidió con una disculpa pública de Torvalds y una breve pausa en el desarrollo del kernel. [ 102 ] [ 103 ] El 30 de noviembre de 2018, cumpliendo con el Código de Conducta , Jarkko Sakkinen de Intel envió parches reemplazando las instancias de "fuck" que aparecían en los comentarios del código fuente con versiones adecuadas centradas en la palabra "hug". [ 104 ]
Los desarrolladores que se sientan tratados injustamente pueden informar de esto al Consejo Asesor Técnico de la Fundación Linux . [ 105 ] En julio de 2013, el mantenedor del controlador USB 3.0, Sage Sharp, pidió a Torvalds que abordara los comentarios abusivos en la comunidad de desarrollo del kernel. En 2014, Sharp se retiró del desarrollo del kernel de Linux, diciendo que "El enfoque en la excelencia técnica, en combinación con los mantenedores sobrecargados y las personas con diferentes normas culturales y sociales, significa que los mantenedores del kernel de Linux a menudo son directos, groseros o brutales para hacer su trabajo". [ 106 ] En la conferencia linux.conf.au (LCA) de 2018, los desarrolladores expresaron la opinión de que la cultura de la comunidad ha mejorado mucho en los últimos años. Daniel Vetter, el mantenedor del controlador del kernel de gráficos Intel drm/i915, comentó que el "lenguaje y las discusiones bastante violentas" en la comunidad del kernel han disminuido o desaparecido. [ 107 ]
Laurent Pinchart solicitó a los desarrolladores comentarios sobre sus experiencias con la comunidad del kernel en la Embedded Linux Conference Europe de 2017. Los problemas planteados se discutieron unos días después en la Maintainers Summit. Shuah Khan , responsable del marco de autodiagnóstico del kernel, se hizo eco de las preocupaciones sobre la falta de coherencia en la forma en que los responsables del kernel respondían a los parches enviados por los desarrolladores. Torvalds sostuvo que nunca habría coherencia en el manejo de los parches porque los diferentes subsistemas del kernel han adoptado, con el tiempo, diferentes procesos de desarrollo. Por lo tanto, se acordó que cada responsable del kernel documentaría las reglas para la aceptación de parches. [ 108 ]
Desarrollo
Linux es evolución, ¡no diseño inteligente !
Código fuente
El código fuente del kernel, también conocido como árbol de código fuente, se gestiona en el sistema de control de versiones Git , también creado por Torvalds. [ 112 ]
A partir de 2021La versión 5.11 del kernel de Linux tenía alrededor de 30,34 millones de líneas de código. Aproximadamente el 14% del código forma parte del "núcleo", que incluye código específico de la arquitectura, código del kernel y código de gestión de memoria, mientras que el 60% son controladores.
Contribuciones
Las contribuciones se envían como parches, en forma de mensajes de texto en la lista de correo del kernel de Linux (LKML) (y a menudo también en otras listas de correo dedicadas a subsistemas particulares). Los parches deben ajustarse a un conjunto de reglas y a un lenguaje formal que, entre otras cosas, describe qué líneas de código se deben eliminar y cuáles se deben agregar a los archivos especificados. Estos parches se pueden procesar automáticamente para que los administradores del sistema puedan aplicarlos para realizar solo algunos cambios en el código o para actualizar incrementalmente a la siguiente versión. [ 113 ] Linux también se distribuye en formatos GNU zip (gzip) y bzip2 .
Un desarrollador que desea modificar el kernel de Linux escribe y prueba un cambio de código. Dependiendo de la importancia del cambio y de la cantidad de subsistemas que modifique, este se enviará como un único parche o en varios parches de código fuente . En el caso de un único subsistema mantenido por un solo responsable, estos parches se envían por correo electrónico al responsable del subsistema con copia a la lista de correo correspondiente. El responsable y los lectores de la lista de correo revisarán los parches y proporcionarán comentarios. Una vez finalizado el proceso de revisión, el responsable del subsistema acepta los parches en el árbol del kernel de Git correspondiente . Si los cambios en el kernel de Linux son correcciones de errores consideradas lo suficientemente importantes, se enviará una solicitud de extracción (pull request) de los parches a Torvalds en pocos días. De lo contrario, se enviará una solicitud de extracción a Torvalds durante la siguiente ventana de fusión. Esta ventana suele durar dos semanas y comienza inmediatamente después del lanzamiento de la versión anterior del kernel. [ 114 ] El árbol de código fuente del kernel de Git nombra a todos los desarrolladores que han contribuido al kernel de Linux en el directorio Credits y todos los mantenedores de subsistemas se enumeran en Maintainers . [ 115 ]
Como ocurre con muchos proyectos de software de código abierto de gran envergadura, los desarrolladores deben adherirse al Pacto del Colaborador , un código de conducta destinado a abordar el acoso a los colaboradores pertenecientes a minorías. [ 116 ] [ 117 ] Además, para evitar ofensas , se exige el uso de terminología inclusiva en el código fuente. [ 118 ]
Lenguaje de programación
Linux está escrito en un lenguaje de programación C especial compatible con GCC , un compilador que extiende el estándar C de muchas maneras, por ejemplo, utilizando secciones de código en línea escritas en el lenguaje ensamblador (con la sintaxis "AT&T" de GCC) de la arquitectura de destino.
En septiembre de 2021, el requisito de versión de GCC para compilar y construir el kernel de Linux aumentó de GCC 4.9 a 5.1, lo que permitió la posibilidad de que el kernel pasara de usar código C basado en el estándar C89 a usar código escrito con el estándar C11 , [ 119 ] y la migración al estándar tuvo lugar en marzo de 2022, con el lanzamiento de Linux 5.18. [ 120 ]
El soporte inicial para el lenguaje de programación Rust se agregó en Linux 6.1, [ 121 ] que se lanzó en diciembre de 2022, [ 122 ] y versiones posteriores del kernel, como Linux 6.2 y Linux 6.3, mejoraron aún más el soporte. [ 123 ] [ 124 ]
Estilo de codificación
Desde 2002, el código debe cumplir con las 21 reglas del estilo de codificación del kernel de Linux. [ 125 ] [ 126 ]
Control de versiones
Como ocurre con la mayoría del software, el núcleo se versiona mediante una serie de números separados por puntos.
Para las primeras versiones, la versión consistía en tres o cuatro números separados por puntos llamados versión principal , versión secundaria y revisión. [ 16 ] : 9 En ese momento, las versiones secundarias impares eran para desarrollo y pruebas, mientras que las versiones secundarias pares eran para producción. El cuarto dígito opcional indicaba un nivel de parche. [ 23 ] Las versiones de desarrollo se indicaban con un sufijo de candidato a versión ( -rc ).
Las convenciones de versionado actuales son diferentes. Se ha eliminado el número impar/par que implicaba desarrollo/producción, y una versión principal se indica con los dos primeros números juntos. Si bien el plazo para el desarrollo de la siguiente versión principal está abierto, el sufijo -rcN se utiliza para identificar la enésima versión candidata para la siguiente versión. [ 127 ] Por ejemplo, el lanzamiento de la versión 4.16 fue precedido por siete 4.16-rcN (de -rc1 a -rc7). Una vez que se lanza una versión estable, su mantenimiento pasa al equipo estable . Las actualizaciones de una versión estable se identifican mediante un esquema de tres números (por ejemplo, 4.16.1, 4.16.2, ...). [ 127 ]
Cadena de herramientas
El núcleo se suele compilar con el conjunto de herramientas GNU . El compilador GNU C, GNU cc, que forma parte de la Colección de Compiladores GNU (GCC), es el compilador predeterminado para la versión principal de Linux. La secuenciación la gestiona GNU make . El ensamblador GNU (a menudo llamado GAS o GNU as) genera los archivos objeto a partir del código ensamblador generado por GCC . Finalmente, el enlazador GNU (GNU ld) produce un archivo ejecutable del núcleo enlazado estáticamente llamado vmlinux . Tanto as como ld forman parte de las Utilidades Binarias GNU (binutils).
Durante mucho tiempo, GNU cc fue el único compilador capaz de compilar Linux correctamente. En 2004, Intel afirmó haber modificado el kernel para que su compilador C también pudiera compilarlo. [ 128 ] En 2009 se informó de otro éxito similar con una versión modificada 2.6.22. [ 129 ] [ 130 ] El soporte para el compilador de Intel se eliminó en 2023. [ 131 ]
Desde 2010, se ha estado trabajando en la compilación de Linux con Clang , un compilador alternativo para el lenguaje C; [ 132 ] al 12 de abril de 2014, el kernel oficial casi podía compilarse con Clang. [ 133 ] [ 134 ] El proyecto dedicado a este esfuerzo se llama LLVMLinux, en honor a la infraestructura del compilador LLVM sobre la que se basa Clang. [ 135 ] LLVMLinux no pretende bifurcar ni Linux ni LLVM, por lo que es un metaproyecto compuesto por parches que finalmente se envían a los proyectos upstream. Al permitir que Linux se compile con Clang, los desarrolladores pueden beneficiarse de tiempos de compilación más cortos. [ 136 ]
En 2017, los desarrolladores completaron la incorporación de parches para admitir la compilación del kernel de Linux con Clang en la versión 4.15, habiendo adaptado el soporte para X86-64 y AArch64 a las ramas 4.4, 4.9 y 4.14 del árbol del kernel estable. El Pixel 2 de Google se lanzó con el primer kernel de Linux compilado con Clang , [ 137 ] aunque existían parches para Pixel (primera generación) . [ 138 ] En 2018, ChromeOS pasó a compilar kernels con Clang por defecto, [ 139 ] mientras que Android hizo que Clang [ 140 ] y el enlazador LLD de LLVM [ 141 ] fueran necesarios para las compilaciones del kernel en 2019. Google cambió su kernel de producción utilizado en todos sus centros de datos para que se compilara con Clang en 2020. [ 142 ] El grupo ClangBuiltLinux coordina correcciones tanto para Linux como para LLVM para garantizar la compatibilidad, ambos compuestos por miembros de LLVMLinux y habiendo incorporado parches de LLVMLinux .
Depuración

Como ocurre con cualquier software, los problemas con el kernel de Linux pueden ser difíciles de solucionar . Los desafíos comunes se relacionan con el acceso al espacio de usuario frente al espacio del kernel, el uso incorrecto de las primitivas de sincronización y la gestión incorrecta del hardware. [ 16 ] : 364
Un error de tipo "oops" es un error no fatal en el núcleo. Tras dicho error, las operaciones continúan con una fiabilidad cuestionable. [ 143 ]
Un pánico (generado por panic() ) es un error fatal. Tras dicho error, el núcleo imprime un mensaje y detiene el ordenador. [ 16 ] : 371
El núcleo permite la depuración mediante la impresión a través de printk () , que almacena los mensajes en un búfer circular (sobrescribiendo las entradas más antiguas con las más recientes). La llamada al sistema syslog(2) permite leer y borrar el búfer de mensajes y establecer el nivel máximo de registro de los mensajes que se enviarán a la consola. [ 144 ] Los mensajes del núcleo también se exportan al espacio de usuario a través de la interfaz /dev/kmsg . [ 145 ]
El mecanismo ftrace permite la depuración mediante el rastreo. Se utiliza para monitorizar y depurar Linux en tiempo de ejecución y puede analizar las latencias del espacio de usuario debidas a un comportamiento anómalo del kernel. [ 146 ] [ 147 ] [ 148 ] [ 149 ] Además, ftrace permite a los usuarios rastrear Linux en el momento del arranque. [ 150 ]
Las kprobes y kretprobes pueden interrumpir la ejecución del kernel (como los depuradores en el espacio de usuario) y recopilar información sin interrumpir la ejecución. [ 151 ] Las kprobes se pueden insertar en el código en (casi) cualquier dirección, mientras que las kretprobes funcionan al retornar una función. Las uprobes tienen propósitos similares, pero también presentan algunas diferencias en su uso e implementación. [ 152 ]
Con KGDB, Linux se puede depurar de forma muy similar a los programas de espacio de usuario. KGDB requiere una máquina adicional que ejecute GDB y que esté conectada al objetivo que se va a depurar mediante un cable serie o Ethernet . [ 153 ]
Proceso de cambio
El proyecto del kernel de Linux integra código nuevo de forma continua. El procedimiento operativo estándar establece que el software incorporado al proyecto debe funcionar y compilarse sin errores.
A cada subsistema del kernel se le asigna un mantenedor responsable de revisar los parches según los estándares del código del kernel y de mantener una cola de parches que se pueden enviar a Torvalds dentro de un plazo de fusión que suele ser de varias semanas.
Torvalds integra los parches en el código fuente de la versión estable anterior del kernel de Linux, creando así la versión candidata (-rc) para la siguiente versión estable. Una vez cerrada la ventana de integración, solo se aceptan correcciones para el nuevo código de la versión de desarrollo. La versión de desarrollo -rc del kernel se somete a pruebas de regresión y, una vez que Torvalds y los mantenedores del subsistema la consideran estable, se publica una nueva versión y el proceso de desarrollo comienza de nuevo. [ 154 ]
Linux principal
El árbol Git que contiene el código fuente del kernel de Linux se denomina mainline Linux . Cada lanzamiento estable del kernel se origina en el árbol mainline, [ 155 ] y se publica frecuentemente en kernel.org . Mainline Linux solo tiene soporte sólido para un pequeño subconjunto de los muchos dispositivos que ejecutan Linux. El soporte fuera del mainline lo proporcionan proyectos independientes, como Yocto o Linaro , pero en muchos casos se necesita el kernel del fabricante del dispositivo. [ 156 ] El uso de un kernel del fabricante probablemente requiere un paquete de soporte de placa .
Mantener un árbol de kernel fuera de la rama principal de Linux ha demostrado ser difícil. [ 157 ]
El término "mainlining" se refiere al esfuerzo de agregar soporte para un dispositivo al núcleo principal, [ 158 ] cuando anteriormente solo existía soporte en una bifurcación o no existía soporte alguno. Esto generalmente incluye agregar controladores o archivos de árbol de dispositivos . Cuando esto se completa, la característica o la corrección de seguridad se considera integrada al núcleo principal . [ 159 ]
Núcleo similar a Linux
El responsable de la rama estable, Greg Kroah-Hartman , ha aplicado el término «similar a Linux» a las bifurcaciones del kernel derivadas de proveedores que añaden millones de líneas de código al kernel principal. [ 160 ] En 2019, Google declaró que quería utilizar el kernel principal de Linux en Android para reducir el número de bifurcaciones del kernel. [ 161 ] El término «similar a Linux» también se ha aplicado al Embeddable Linux Kernel Subset , que no incluye el kernel principal completo de Linux, sino un pequeño subconjunto modificado del código. [ 162 ]
Bifurcaciones de Linux

Hay ciertas comunidades que desarrollan núcleos basados en el Linux oficial. Algunos fragmentos de código interesantes de estas bifurcaciones , que incluyen Linux-libre , Compute Node Linux , INK , L4Linux , RTLinux y User-Mode Linux (UML), se han fusionado con la rama principal. [ 163 ] Algunos sistemas operativos desarrollados para teléfonos móviles inicialmente utilizaron versiones muy modificadas de Linux, incluyendo Google Android , Firefox OS , HP webOS , Nokia Maemo y Jolla Sailfish OS . En 2010, la comunidad Linux criticó a Google por iniciar de hecho su propio árbol de núcleo: [ 164 ] [ 165 ]
Esto significa que los controladores escritos para plataformas de hardware Android no pueden integrarse en el árbol principal del kernel porque dependen de código que solo se encuentra en el árbol del kernel de Google, lo que provoca que no se compilen en el árbol kernel.org. Debido a esto, Google ha impedido que una gran parte de los controladores de hardware y el código de la plataforma se integren en el árbol principal del kernel. De hecho, se ha creado una rama del kernel de la que dependen varios proveedores. [ 166 ]
— Greg Kroah-Hartman , 2010
Actualmente, Android utiliza una versión personalizada de Linux [ 167 ] donde se implementan cambios importantes en los controladores de dispositivos, pero se requieren algunos cambios en el código del núcleo. Los desarrolladores de Android también envían parches a la versión oficial de Linux que finalmente permite el arranque del sistema operativo Android. Por ejemplo, un Nexus 7 puede arrancar y ejecutar la versión principal de Linux. [ 167 ]
En una presentación en el Museo de Historia de la Computación en 2001 , Torvalds dijo lo siguiente en respuesta a una pregunta sobre si las distribuciones de Linux utilizaban exactamente las mismas fuentes del kernel o no:
No son... bueno, sí lo son y no lo son. No hay un único kernel. Cada distribución tiene sus propios cambios. Eso ha estado sucediendo prácticamente desde el primer día. No sé si recuerdas que Yggdrasil era conocido por tener cambios bastante extremos en el kernel e incluso hoy todos los principales proveedores tienen sus propios ajustes porque tienen una parte del mercado que les interesa y, francamente, así es como debe ser. Porque si todos esperan que una persona, yo, pueda rastrear todo, ese no es el propósito de la GPL. Ese no es el propósito de tener un sistema abierto. Así que, de hecho, el hecho de que una distribución decida que algo es tan importante para ellos que agregará parches incluso cuando no está en el kernel estándar, eso es una muy buena señal para mí. Así es, por ejemplo, como se agregó algo como ReiserFS . Y la razón por la que ReiserFS es el primer sistema de archivos con registro que se integró en el kernel estándar no fue porque adore a Hans Reiser . Fue porque SUSE empezó a distribuir ReiserFS como su kernel estándar, lo que me hizo pensar: "Vale". Esto se usa en producción. La gente normal lo hace. Deben saber algo que yo no sé. Así que, en cierto modo, lo que hacen muchas distribuciones es formar parte de esto de "creemos nuestra propia rama" y "hagamos nuestros cambios". Y gracias a la GPL, puedo tomar las mejores partes de ellas. [ 168 ]
— Linus Torvalds , 2001
Apoyo a largo plazo

La última versión y las versiones anteriores se mantienen por separado. La mayoría de las últimas versiones del kernel fueron supervisadas por Torvalds. [ 169 ]
La comunidad de desarrolladores del kernel de Linux mantiene un kernel estable aplicando correcciones a los errores de software descubiertos durante el desarrollo de la siguiente versión estable. Por lo tanto, www.kernel.org siempre muestra dos versiones estables del kernel. La siguiente versión estable del kernel de Linux se publica aproximadamente entre 8 y 12 semanas después.
Algunas versiones están designadas para soporte a largo plazo como versiones de corrección de errores durante dos o más años. [ 170 ]
Tamaño
Algunos proyectos han intentado reducir el tamaño del kernel de Linux. Uno de ellos es TinyLinux . En 2014, Josh Triplett inició el árbol de código fuente -tiny para una versión de tamaño reducido. [ 171 ] [ 172 ] [ 173 ] [ 174 ]
Arquitectura y características


Aunque parezca contradictorio, el núcleo de Linux es a la vez monolítico y modular. Se clasifica como monolítico desde el punto de vista arquitectónico, ya que todo el sistema operativo se ejecuta en el espacio del núcleo. Su diseño es modular, puesto que puede ensamblarse a partir de módulos que, en algunos casos, se cargan y descargan en tiempo de ejecución. [ 16 ] : 338 [ 175 ] Admite características que antes solo estaban disponibles en núcleos de código cerrado de sistemas operativos no libres.
El resto del artículo utiliza la convención de las páginas de manual de los sistemas operativos UNIX y similares . El número que sigue al nombre de un comando, interfaz u otra función especifica la sección (es decir, el tipo de componente o función del sistema operativo) a la que pertenece. Por ejemplo, execve(2) se refiere a una llamada al sistema, y exec(3) se refiere a una biblioteca de espacio de usuario.
A continuación se presenta una descripción general del diseño arquitectónico y de sus características más destacadas.
- Computación concurrente y (siempre que haya suficientes núcleos de CPU disponibles para las tareas listas para ejecutarse) incluso ejecución paralela real de muchos procesos a la vez (cada uno de ellos con uno o más hilos de ejecución ) en arquitecturas SMP y NUMA .
- Selección y configuración de cientos de características y controladores del kernel (usando uno de los comandos de la familia make *config antes de la compilación), [ 176 ] [ 38 ] [ 37 ] modificación de parámetros del kernel antes del arranque (generalmente insertando instrucciones en las líneas de un menú del cargador de arranque o un archivo de configuración), y ajuste fino del comportamiento del kernel en tiempo de ejecución (usando la interfaz sysctl(8) a /proc/sys/ ). [ 177 ] [ 178 ] [ 179 ]
- Configuración (nuevamente usando los comandos make *config ) y modificaciones en tiempo de ejecución de las políticas [ 180 ] (a través de nice(2) , setpriority(2) y la familia de llamadas al sistema sched_*(2) ) de los planificadores de tareas que permiten la multitarea preventiva (tanto en modo de usuario como, desde la serie 2.6, en modo kernel [ 181 ] [ 182 ] ); el planificador de plazo virtual más temprano elegible primero (EEVDF), [ 183 ] es el planificador predeterminado de Linux desde 2023 y utiliza un árbol rojo-negro que puede buscar, insertar y eliminar información de procesos ( estructura de tarea ) con una complejidad temporal de O(log n) , donde n es el número de tareas ejecutables. [ 184 ] [ 185 ]
- Gestión avanzada de memoria con memoria virtual paginada y un algoritmo de reemplazo de páginas de uso menos reciente multigeneracional (MGLRU) .
- Mecanismo de sincronización y comunicación entre procesos .
- Un sistema de archivos virtual sobre varios sistemas de archivos concretos ( ext4 , Btrfs , XFS , JFS , FAT32 y muchos más).
- Planificadores de E/S configurables, llamada al sistema ioctl(2) [ 186 ] que manipula los parámetros del dispositivo subyacente de archivos especiales (es una llamada al sistema no estándar, ya que los argumentos, los retornos y la semántica dependen del controlador del dispositivo en cuestión), soporte para E/S asíncrona POSIX [ 187 ] (debido a que escalan mal con aplicaciones multihilo, sin embargo, se tuvo que crear una familia de llamadas al sistema de E/S específicas de Linux ( io_*(2) [ 188 ] ) para la gestión de contextos de E/S asíncrona adecuados para el procesamiento concurrente).
- Virtualización a nivel de sistema operativo (con Linux-VServer ), paravirtualización y virtualización asistida por hardware (con KVM o Xen , y usando QEMU para emulación de hardware); [ 189 ] [ 190 ] [ 191 ] [ 192 ] [ 193 ] [ 194 ] En el hipervisor Xen , el kernel de Linux proporciona soporte para crear distribuciones de Linux (como openSUSE Leap y muchas otras) que funcionan como Dom0 , que son servidores host de máquinas virtuales que proporcionan el entorno de gestión para las máquinas virtuales del usuario ( DomU ). [ 195 ]
- Virtualización de E/S con VFIO y SR-IOV . La E/S de función virtual (VFIO) expone el acceso directo a dispositivos al espacio de usuario en un entorno protegido por memoria segura (IOMMU). Con VFIO, una máquina virtual invitada puede acceder directamente a los dispositivos de hardware en el servidor anfitrión de la máquina virtual. Esta técnica mejora el rendimiento, en comparación con la virtualización completa y la paravirtualización. Sin embargo, con VFIO, los dispositivos no se pueden compartir con varias máquinas virtuales invitadas. La virtualización de E/S de raíz única (SR-IOV) combina las ventajas de rendimiento de VFIO y la capacidad de compartir un dispositivo con varias máquinas virtuales invitadas (pero requiere hardware especial que debe ser capaz de aparecer ante dos o más máquinas virtuales invitadas como dispositivos diferentes). [ 196 ]
- Mecanismos de seguridad para el control de acceso discrecional y obligatorio (SELinux, AppArmor, ACL POSIX y otros). [ 197 ] [ 198 ]
- Varios tipos de protocolos de comunicación por capas (incluido el conjunto de protocolos de Internet ).
- Multiprocesamiento asimétrico mediante el subsistema RPMsg .
La mayoría de los controladores de dispositivos y extensiones del kernel se ejecutan en el espacio del kernel ( anillo 0 en muchas arquitecturas de CPU ), con acceso completo al hardware. Algunas excepciones se ejecutan en el espacio de usuario ; ejemplos notables son los sistemas de archivos basados en FUSE /CUSE y partes de UIO. [ 199 ] [ 200 ] Además, el Sistema X Window y Wayland , el sistema de ventanas y los protocolos de servidor de visualización que la mayoría de la gente usa con Linux, no se ejecutan dentro del kernel. Por otro lado, la interfaz real con las GPU de las tarjetas gráficas es un subsistema dentro del kernel llamado Direct Rendering Manager (DRM).
A diferencia de los núcleos monolíticos estándar, los controladores de dispositivos se configuran fácilmente como módulos y se cargan o descargan mientras el sistema está en funcionamiento; además, pueden interrumpirse bajo ciertas condiciones para gestionar correctamente las interrupciones de hardware y brindar un mejor soporte al multiprocesamiento simétrico . [ 182 ] Por elección propia, Linux no cuenta con una interfaz binaria de aplicación de controlador de dispositivo estable . [ 201 ]
Linux normalmente utiliza protección de memoria y memoria virtual y también puede manejar acceso a memoria no uniforme , [ 202 ] el proyecto ha absorbido μClinux , lo que también permite ejecutar Linux en microcontroladores sin memoria virtual. [ 203 ]
El hardware está representado en la jerarquía de archivos. Las aplicaciones de usuario interactúan con los controladores de dispositivos a través de entradas en los directorios /dev o /sys . [ 204 ] La información del proceso se asigna al directorio /proc . [ 204 ]
Interfaces

Linux comenzó como un clon de UNIX y busca cumplir con POSIX y la Especificación Única de UNIX . [ 206 ] El núcleo proporciona llamadas al sistema y otras interfaces específicas de Linux. Para ser incluido en el núcleo oficial, el código debe cumplir con un conjunto de reglas de licencia. [ 10 ] [ 15 ]
La interfaz binaria de aplicaciones (ABI) de Linux entre el núcleo y el espacio de usuario tiene cuatro grados de estabilidad (estable, en pruebas, obsoleto, eliminado); [ 207 ] Se espera que las llamadas al sistema nunca cambien para preservar la compatibilidad con los programas de espacio de usuario que dependen de ellas. [ 208 ]
Los módulos de kernel cargables (LKM), por diseño, no pueden depender de una ABI estable. [ 201 ] Por lo tanto, deben recompilarse siempre que se instale un nuevo ejecutable del kernel en un sistema; de lo contrario, no se cargarán. Los controladores integrados que están configurados para convertirse en parte integral del ejecutable del kernel ( vmlinux ) se enlazan estáticamente durante el proceso de compilación.
No existe garantía de estabilidad de la API del kernel a nivel de código fuente [ 201 ] y, por ello, el código del controlador del dispositivo , así como el de cualquier otro subsistema del kernel, debe mantenerse actualizado con la evolución del kernel. Todo desarrollador que realice un cambio en la API está obligado a corregir cualquier código que falle como resultado de dicho cambio. [ 209 ]
API de kernel a espacio de usuario
El conjunto de la API del kernel de Linux que se refiere a las interfaces expuestas a las aplicaciones de usuario se compone fundamentalmente de llamadas al sistema específicas de UNIX y Linux . [ 210 ] Una llamada al sistema es un punto de entrada al kernel de Linux. [ 211 ] Por ejemplo, entre las específicas de Linux se encuentra la familia de llamadas al sistema clone(2) . [ 212 ] La mayoría de las extensiones deben habilitarse definiendo la macro en un archivo de cabecera o cuando se compila el código del espacio de usuario. [ 213 ]_GNU_SOURCE
Las llamadas al sistema solo pueden invocarse mediante instrucciones de ensamblaje que permiten la transición del espacio de usuario no privilegiado al espacio del kernel privilegiado en el anillo 0. Por esta razón, la biblioteca estándar de C (libC) actúa como un envoltorio para la mayoría de las llamadas al sistema de Linux, al exponer funciones de C que, si es necesario, [ 214 ] entran de forma transparente al kernel, que se ejecutará en nombre del proceso que realiza la llamada. [ 210 ] Para las llamadas al sistema no expuestas por libC, como el mutex rápido del espacio de usuario , [ 215 ] la biblioteca proporciona una función llamada syscall(2) , que puede usarse para invocarlas explícitamente. [ 216 ]
Los pseudosistemas de archivos (por ejemplo, los sistemas de archivos sysfs y procfs ) y los archivos especiales (por ejemplo, /dev/random, /dev/sda, /dev/tty, y muchos otros) constituyen otra capa de interfaz para las estructuras de datos del núcleo que representan dispositivos de hardware o lógicos (software). [ 217 ] [ 218 ]
ABI de kernel a espacio de usuario
Debido a las diferencias entre las cientos de implementaciones del sistema operativo Linux, los objetos ejecutables, aunque se compilen, ensamblen y enlacen para ejecutarse en una arquitectura de hardware específica (es decir, que utilicen el conjunto de instrucciones del hardware de destino), a menudo no pueden ejecutarse en distintas distribuciones de Linux. Este problema se debe principalmente a las configuraciones específicas de cada distribución y a un conjunto de parches aplicados al código del kernel de Linux, así como a las diferencias en las bibliotecas del sistema, los servicios (demonios), las jerarquías del sistema de archivos y las variables de entorno.
El estándar principal en cuanto a compatibilidad de aplicaciones y binarios de las distribuciones de Linux es la Base Estándar de Linux (LSB). [ 219 ] [ 220 ] La LSB va más allá de lo que concierne al núcleo de Linux, ya que también define las especificaciones de escritorio, las bibliotecas X y Qt, que tienen poco que ver con él. [ 221 ] La versión 5 de la LSB se basa en varios estándares y borradores (POSIX, SUS, X/Open, Jerarquía del Sistema de Archivos (FHS), y otros). [ 222 ]
Las partes del LSB más relevantes para el núcleo son la ABI general (gABI), [ 223 ] especialmente la ABI del sistema V [ 224 ] [ 225 ] y el formato ejecutable y de enlace (ELF), [ 226 ] [ 227 ] y la ABI específica del procesador (psABI), por ejemplo la especificación del núcleo para X86-64. [ 228 ] [ 229 ]
La ABI estándar para que los programas de usuario x86_64 invoquen llamadas al sistema consiste en cargar el número de llamada al sistema en el registro rax , y los demás parámetros en rdi , rsi , rdx , r10 , r8 y r9 , y finalmente colocar la instrucción de ensamblaje de la llamada al sistema en el código. [ 230 ] [ 231 ] [ 232 ]
API en el kernel

Existen varias API internas del kernel entre los subsistemas del kernel. Algunas están disponibles solo dentro de los subsistemas del kernel, mientras que un conjunto algo limitado de símbolos del kernel (es decir, variables, estructuras de datos y funciones) se expone a módulos de carga dinámica (por ejemplo, controladores de dispositivos cargados bajo demanda) ya sea que se exporten con las macros EXPORT_SYMBOL() y EXPORT_SYMBOL_GPL() [ 234 ] [ 235 ] (esta última reservada para módulos publicados bajo una licencia compatible con GPL). [ 236 ]
Linux proporciona API en el núcleo que manipulan estructuras de datos (por ejemplo, listas enlazadas , árboles radix , [ 237 ] árboles rojo-negro , [ 238 ] colas ) o realizan rutinas comunes (por ejemplo, copiar datos desde y hacia el espacio de usuario, asignar memoria, imprimir líneas en el registro del sistema, etc.) que se han mantenido estables al menos desde la versión 2.6 de Linux. [ 239 ] [ 240 ] [ 241 ]
Las API integradas en el núcleo incluyen bibliotecas de servicios comunes de bajo nivel utilizados por los controladores de dispositivos:
- Interfaces SCSI y libATA : respectivamente, un protocolo de comunicación basado en paquetes punto a punto para dispositivos de almacenamiento conectados a dispositivos USB, SATA, SAS, Fibre Channel, FireWire y ATAPI, [ 242 ] y una biblioteca en el núcleo para admitir controladores y dispositivos host [S]ATA. [ 243 ]
- Direct Rendering Manager (DRM) y Kernel Mode Setting (KMS) : para interactuar con las GPU y admitir las necesidades del hardware de vídeo acelerado en 3D moderno, [ 244 ] y para configurar la resolución de pantalla, la profundidad de color y la frecuencia de actualización [ 245 ].
- Búferes DMA ( DMA-BUF ) – para compartir búferes para acceso directo a memoria de hardware a través de múltiples controladores de dispositivos y subsistemas [ 246 ] [ 247 ] [ 248 ]
- Video4Linux – para hardware de captura de vídeo
- Arquitectura de sonido avanzada de Linux (ALSA) – para tarjetas de sonido
- Nueva API para controladores de interfaz de red
- mac80211 y cfg80211 – para controladores de interfaz de red inalámbrica [ 249 ] [ 250 ]
ABI en el núcleo
Los desarrolladores de Linux optaron por no mantener una ABI estable dentro del kernel. Los módulos compilados para una versión específica del kernel no se pueden cargar en otra versión sin ser recompilados. [ 201 ]
Gestión de procesos
Linux, al igual que otros núcleos , tiene la capacidad de gestionar procesos, incluyendo su creación, suspensión, reanudación y terminación. A diferencia de otros sistemas operativos, el núcleo de Linux implementa los procesos como un grupo de hilos llamados tareas. Si dos tareas comparten el mismo TGID , se denominan grupo de tareas en la terminología del núcleo. Cada tarea está representada por una estructura de datos task_struct . Cuando se crea un proceso, se le asigna un identificador único global llamado PID , que no puede ser compartido [ 251 ] [ 252 ].
Se puede crear un nuevo proceso llamando a la familia de llamadas al sistema clone [ 253 ] o a la llamada al sistema fork . El kernel puede suspender y reanudar los procesos enviando señales como SIGSTOP y SIGCONT . Un proceso puede terminar por sí mismo llamando a la llamada al sistema exit , o puede ser terminado por otro proceso enviando señales como SIGKILL , SIGABRT o SIGINT .
Si el ejecutable está vinculado dinámicamente a bibliotecas compartidas, se utiliza un enlazador dinámico para encontrar y cargar los objetos necesarios, preparar el programa para su ejecución y luego ejecutarlo. [ 254 ]
La biblioteca de subprocesos POSIX nativa (NPTL) [ 255 ] proporciona la interfaz de subprocesos estándar POSIX ( pthreads ) al espacio de usuario. El kernel no tiene conocimiento de procesos ni subprocesos, pero sí de tareas ; por lo tanto, los subprocesos se implementan en el espacio de usuario. En Linux, los subprocesos se implementan como tareas que comparten recursos, mientras que si no los comparten, se consideran procesos independientes.
El núcleo proporciona los mecanismos futex(7) (mutex rápido en el espacio de usuario) para el bloqueo y la sincronización en el espacio de usuario. [ 256 ] La mayoría de las operaciones se realizan en el espacio de usuario, pero puede ser necesario comunicarse con el núcleo mediante la llamada al sistema futex(2) . [ 215 ]
A diferencia de los subprocesos del espacio de usuario descritos anteriormente, los subprocesos del kernel se ejecutan en el espacio del kernel. [ 257 ] Son subprocesos creados por el propio kernel para tareas especializadas; tienen privilegios como el kernel y no están vinculados a ningún proceso o aplicación.
Programación
El planificador de procesos de Linux es modular, en el sentido de que permite diferentes clases y políticas de planificación. [ 258 ] [ 259 ] Las clases de planificador son algoritmos de planificación conectables que se pueden registrar con el código base del planificador. Cada clase planifica diferentes tipos de procesos. El código central del planificador itera sobre cada clase en orden de prioridad y elige el planificador de mayor prioridad que tiene una entidad planificable de tipo struct sched_entity lista para ejecutarse. [ 16 ] : 46–47 Las entidades pueden ser hilos, grupos de hilos e incluso todos los procesos de un usuario específico.
Linux proporciona tanto la preempción del usuario como (seleccionable, hasta) [ 260 ] [ 261 ] preempción completa del kernel . [ 16 ] : 62–63 La preempción reduce la latencia , aumenta la capacidad de respuesta, [ 262 ] y hace que Linux sea más adecuado para aplicaciones de escritorio y en tiempo real . Esto tiene un costo en el rendimiento, ya que el trabajo que se interrumpe empeora el comportamiento de la caché. [ 261 ]
Para tareas normales, por defecto, el kernel utiliza la clase Completely Fair Scheduler (CFS)., introducido en la versión 2.6.23. [ 184 ] El planificador se define como una macro en un encabezado C como SCHED_NORMAL. En otros núcleos POSIX, una política similar conocida como SCHED_OTHERasigna segmentos de tiempo de CPU (es decir, asigna segmentos absolutos del tiempo del procesador dependiendo de la prioridad predeterminada o calculada dinámicamente de cada proceso). El CFS de Linux elimina los segmentos de tiempo absolutos y asigna una proporción justa del tiempo de CPU, en función de parámetros como el número total de procesos ejecutables y el tiempo que ya se han ejecutado; esta función también tiene en cuenta una especie de ponderación que depende de sus prioridades relativas (valores nice). [ 16 ] : 46–50
Con la preempción del usuario, el planificador del kernel puede reemplazar el proceso actual con la ejecución de un cambio de contexto a uno diferente que, por lo tanto, adquiere los recursos de computación para su ejecución (CPU, memoria, etc.). Lo hace de acuerdo con el algoritmo CFS (en particular, usa una variable llamada vruntime para ordenar entidades y luego elige la que tiene el vruntime más pequeño, - es decir, la entidad planificable que ha tenido la menor porción de tiempo de CPU), a la política del planificador activo y a las prioridades relativas. [ 263 ] Con la preempción del kernel, el kernel puede preemptionarse a sí mismo cuando un manejador de interrupciones regresa, cuando las tareas del kernel se bloquean y siempre que un subsistema llama explícitamente a la función schedule().
El kernel también contiene dos clases de planificación en tiempo real compatibles con POSIX [ 264 ]SCHED_FIFO llamadas ( primero en entrar, primero en salir en tiempo real ) y SCHED_RR( ronda rotativa en tiempo real ), ambas tienen precedencia sobre la clase predeterminada. [ 258 ] Se agregó una política de planificación adicional conocida como SCHED_DEADLINE, que implementa el algoritmo de plazo más temprano primero (EDF), en la versión 3.14 del kernel, publicada el 30 de marzo de 2014. [ 265 ] [ 266 ]SCHED_DEADLINE tiene precedencia sobre todas las demás clases de planificación.
Los parches en tiempo real PREEMPT_RT, incluidos en la rama principal de Linux desde la versión 2.6, proporcionan un planificador determinista , la eliminación de la desalojo de interrupciones y la interrupción (cuando sea posible), mutexes PI (es decir, primitivas de bloqueo que evitan la inversión de prioridad), [ 267 ] [ 268 ] soporte para temporizadores de eventos de alta precisión (HPET), actualización de lectura-copia preemptiva (RCU), subprocesos IRQ (forzados) y otras características menores. [ 269 ] [ 270 ] [ 271 ]
En 2023, Peter Zijlstra propuso reemplazar CFS con un planificador de plazo virtual más temprano elegible primero (EEVDF), [ 272 ] [ 273 ] para evitar la necesidad de parches "latency nice" de CFS. [ 274 ] El planificador EEVDF reemplazó a CFS en la versión 6.6 del kernel de Linux. [ 183 ]
Sincronización
El núcleo tiene diferentes causas de concurrencia (por ejemplo, interrupciones, mitades inferiores, expropiación de tareas del núcleo y de los usuarios, multiprocesamiento simétrico). [ 16 ] : 167
Para proteger regiones críticas (secciones de código que deben ejecutarse atómicamente), ubicaciones de memoria compartida (como variables globales y otras estructuras de datos con alcance global) y regiones de memoria que pueden ser modificadas asincrónicamente por hardware (por ejemplo, con el calificador de tipo C volatile ), Linux proporciona un amplio conjunto de herramientas. Estas consisten en tipos atómicos (que solo pueden ser manipulados por un conjunto de operadores específicos), spinlocks , semáforos , mutexes , [ 275 ] [ 16 ] : 176–198 [ 276 ] y algoritmos sin bloqueo (por ejemplo, RCU ). [ 277 ] [ 278 ] [ 279 ] La mayoría de los algoritmos sin bloqueo se construyen sobre barreras de memoria con el propósito de imponer el orden de la memoria y evitar efectos secundarios no deseados debido a la optimización del compilador . [ 280 ] [ 281 ] [ 282 ] [ 283 ]
El código PREEMPT_RT incluido en la versión principal de Linux proporciona mutexes RT , un tipo especial de mutex que no deshabilita la expropiación y admite la herencia de prioridad. [ 284 ] [ 285 ] Casi todos los bloqueos se convierten en bloqueos durmientes cuando se utiliza la configuración para operación en tiempo real. [ 286 ] [ 271 ] [ 285 ] La herencia de prioridad evita la inversión de prioridad al otorgar a una tarea de baja prioridad que mantiene un bloqueo contencioso la prioridad de un proceso en espera de mayor prioridad hasta que se libere dicho bloqueo. [ 287 ] [ 288 ]
Linux incluye un validador de bloqueo del kernel llamado Lockdep . [ 289 ] [ 290 ]
Interrumpe
Aunque la gestión de interrupciones podría considerarse una sola tarea, se divide en dos. Esta división se debe a las diferentes restricciones de tiempo y a las necesidades de sincronización de las tareas que la componen. La primera parte consiste en una rutina de servicio de interrupción asíncrona (ISR), conocida en Linux como la mitad superior , mientras que la segunda parte la lleva a cabo uno de los tres tipos de las denominadas mitades inferiores ( softirq , tasklets y colas de trabajo ). [ 16 ] : 133–137
Las rutinas de servicio de interrupción de Linux se pueden anidar. Una nueva IRQ puede entrar en una ISR de alta prioridad que interrumpe cualquier otra ISR de menor prioridad.
Memoria
El núcleo de Linux gestiona tanto la memoria física como la virtual. Divide la memoria física en zonas, [ 291 ] cada una de las cuales tiene un propósito específico.
- ZONE_DMA : esta zona es adecuada para DMA .
- ZONE_NORMAL : para operaciones de memoria normales.
- ZONE_HIGHMEM : parte de la memoria física a la que solo puede acceder el kernel mediante una asignación temporal.
Esas zonas son las más comunes, pero existen otras. [ 291 ]
Linux implementa memoria virtual con tablas de páginas de 4 o 5 niveles . [ 292 ] El núcleo no es paginable (lo que significa que siempre reside en la memoria física y no se puede intercambiar al disco) y no hay protección de memoria (no hay señales SIGSEGV , a diferencia del espacio de usuario), por lo tanto, las violaciones de memoria conducen a inestabilidad y fallos del sistema. [ 16 ] : 20 La memoria de usuario es paginable por defecto, aunque la paginación para áreas de memoria específicas se puede deshabilitar con la familia de llamadas al sistema .mlock()
La información del marco de página se mantiene en estructuras de datos apropiadas (de tipo struct page) que se rellenan inmediatamente después del arranque y se conservan hasta el apagado, independientemente de si están asociadas a páginas virtuales. El espacio de direcciones físicas se divide en diferentes zonas, según las restricciones arquitectónicas y el uso previsto. También se admiten sistemas NUMA con múltiples bancos de memoria. [ 293 ]
Pequeños bloques de memoria se pueden asignar dinámicamente en el espacio del kernel a través de la familia de kmalloc()API y liberarse con la variante apropiada de kfree(). vmalloc()y kvfree()se utilizan para grandes bloques virtualmente contiguos. alloc_pages()asigna el número deseado de páginas completas.

El kernel solía incluir los asignadores SLAB, SLUB y SLOB como alternativas configurables. [ 295 ] [ 296 ] El asignador SLOB se eliminó en Linux 6.4 [ 297 ] y el asignador SLAB se eliminó en Linux 6.8. [ 298 ] El único asignador restante es SLUB, que busca la simplicidad y la eficiencia, [ 296 ] es compatible con PREEMPT_RT [ 299 ] y se introdujo en Linux 2.6.
Sistema de archivos virtual
Dado que Linux admite numerosos sistemas de archivos con diferentes características y funcionalidades, es necesario implementar un sistema de archivos genérico que sea independiente de los sistemas de archivos subyacentes. El sistema de archivos virtual interactúa con otros subsistemas de Linux, el espacio de usuario o las API y abstrae las diferentes implementaciones de los sistemas de archivos subyacentes. VFS implementa llamadas al sistema como create, open, read, writey close. VFS implementa un superbloque genérico [ 300 ] y un bloque de inodos que es independiente del que tiene el sistema de archivos subyacente.
En este subsistema, los directorios y archivos se representan mediante una struct fileestructura de datos . Cuando el espacio de usuario solicita acceso a un archivo, se devuelve un descriptor de archivo (un valor entero no negativo), pero en el espacio del kernel se trata de una struct fileestructura. Esta estructura almacena toda la información que el kernel conoce sobre un archivo o directorio.
sysfs y procfs son sistemas de archivos virtuales que exponen información de hardware e información de tiempo de ejecución de programas en el espacio de usuario . Estos sistemas de archivos no están presentes en el disco; en su lugar, el kernel los implementa como una función de devolución de llamada o rutina que se ejecuta cuando el espacio de usuario accede a ellos.
Arquitecturas compatibles

Aunque no fue diseñado originalmente para ser portátil , [ 19 ] [ 301 ] Linux es ahora uno de los núcleos de sistemas operativos más ampliamente portados, ejecutándose en una amplia gama de sistemas, desde la arquitectura ARM hasta las computadoras centrales IBM z/Architecture . El primer porte se realizó en la plataforma Motorola 68000. Las modificaciones al núcleo fueron tan fundamentales que Torvalds consideró la versión de Motorola como una bifurcación y un "sistema operativo similar a Linux". [ 301 ] Esto llevó a Torvalds a liderar una importante reestructuración del código para facilitar el porte a más arquitecturas informáticas. El primer Linux que, en un único árbol de código fuente, tenía código para más de i386, soportaba la plataforma DEC Alpha AXP de 64 bits. [ 302 ] [ 303 ] [ 301 ]
Linux se utiliza como sistema operativo principal en la supercomputadora Summit de IBM . En octubre de 2019, todos los sistemas de la lista TOP500 de las supercomputadoras más rápidas del mundo ejecutaban sistemas operativos basados en el núcleo Linux, [ 73 ] mientras que la primera supercomputadora basada en Linux apareció en la lista en 1998. [ 304 ]
Linux también se ha adaptado a varios dispositivos portátiles como el iPhone 3G y el iPod . [ 305 ]
Dispositivos compatibles
En 2007, se inició el proyecto LKDDb para crear una base de datos completa de hardware y protocolos conocidos por los núcleos de Linux. [ 306 ] La base de datos se crea automáticamente mediante análisis estático del código fuente del núcleo. Posteriormente, en 2014, se lanzó el proyecto Linux Hardware para recopilar automáticamente una base de datos de todas las configuraciones de hardware probadas con la ayuda de usuarios de diversas distribuciones de Linux. [ 307 ]
Parches en vivo
Las actualizaciones del kernel se pueden aplicar sin reiniciar el sistema mediante tecnologías de parcheo en vivo como Ksplice , kpatch y kGraft . La compatibilidad inicial con el parcheo en vivo del kernel se integró en la rama principal del kernel de Linux en la versión 4.0, publicada el 12 de abril de 2015. Esta función, conocida como livepatch , utiliza la funcionalidad ftrace del kernel y proporciona una infraestructura común para los parches en caliente suministrados a través de módulos del kernel, junto con interfaces para herramientas de gestión del espacio de usuario. En su implementación inicial en Linux 4.0, la compatibilidad con livepatch se limitaba a la arquitectura x86 y proporcionaba una infraestructura básica en lugar de un modelo completo de consistencia para el parcheo en vivo.
Seguridad
Los errores del núcleo presentan posibles problemas de seguridad. Por ejemplo, pueden permitir la escalada de privilegios o crear vectores de ataque de denegación de servicio . A lo largo de los años, se han encontrado y corregido numerosos errores que afectan a la seguridad del sistema. [ 308 ] Con frecuencia se implementan nuevas características para mejorar la seguridad del núcleo. [ 309 ] [ 310 ]
Las capacidades (7) ya se han presentado en la sección sobre procesos e hilos. Android las utiliza y systemd proporciona a los administradores un control detallado sobre las capacidades de los procesos. [ 311 ]
Linux ofrece una gran cantidad de mecanismos para reducir la superficie de ataque del kernel y mejorar la seguridad, conocidos colectivamente como Módulos de Seguridad de Linux (LSM). [ 312 ] Estos comprenden el módulo Security-Enhanced Linux (SELinux), cuyo código fue desarrollado originalmente y luego publicado por la NSA , [ 313 ] y AppArmor [ 198 ] entre otros. SELinux se desarrolla y mantiene activamente en GitHub . [ 197 ] SELinux y AppArmor brindan soporte a las políticas de seguridad de control de acceso, incluido el control de acceso obligatorio (MAC), aunque difieren profundamente en complejidad y alcance.
Otra característica de seguridad es Seccomp BPF (SECure COMPuting with Berkeley Packet Filters), que funciona filtrando parámetros y reduciendo el conjunto de llamadas al sistema disponibles para las aplicaciones de espacio de usuario. [ 314 ]
Los críticos han acusado a los desarrolladores del kernel de encubrir fallos de seguridad, o al menos de no anunciarlos; en 2008, Torvalds respondió a esto con lo siguiente: [ 315 ] [ 316 ]
Personalmente, considero que los fallos de seguridad son simplemente "fallos normales". No los oculto, pero tampoco tengo ningún motivo para pensar que sea buena idea rastrearlos y anunciarlos como algo especial... Una de las razones por las que me niego a participar en todo este circo de la seguridad es que creo que glorifica —y, por lo tanto, fomenta— el comportamiento incorrecto. Convierte a los expertos en seguridad en "héroes", como si quienes no se limitan a corregir fallos normales no fueran tan importantes. De hecho, todos los fallos normales y corrientes son mucho más importantes, simplemente porque hay muchos más. No creo que se deba glorificar ni considerar una vulnerabilidad de seguridad espectacular como algo más "especial" que un fallo repentino y espectacular debido a un mal sistema de bloqueo.
Las distribuciones de Linux suelen publicar actualizaciones de seguridad para corregir vulnerabilidades en el núcleo de Linux. Muchas ofrecen versiones con soporte a largo plazo que reciben actualizaciones de seguridad para una versión específica del núcleo de Linux durante un período prolongado.
En 2024, investigadores revelaron que el kernel de Linux contenía una grave vulnerabilidad, CVE-2024-50264, ubicada en el subsistema AF_VSOCK. Este fallo es una vulnerabilidad de uso después de la liberación de memoria, un tipo de problema de corrupción de memoria que ocurre cuando un programa continúa utilizando memoria después de haberla liberado. [ 317 ] [ 318 ] Estas vulnerabilidades son particularmente peligrosas en el kernel, ya que pueden permitir a los atacantes escalar privilegios. El fallo se resolvió en mayo de 2025. [ 319 ]
Legal
Términos de licencia
Inicialmente, Torvalds publicó Linux bajo una licencia que prohibía cualquier uso comercial. [ 320 ] Esto cambió en la versión 0.12 con el cambio a la Licencia Pública General GNU versión 2 (GPLv2). [ 24 ] Esta licencia permite la distribución y venta de versiones de Linux, posiblemente modificadas o no modificadas, pero requiere que todas esas copias se publiquen bajo la misma licencia y vayan acompañadas de —o que, previa solicitud, se proporcione acceso gratuito a— el código fuente completo correspondiente. [ 321 ] Torvalds ha descrito la concesión de la licencia GPLv2 a Linux como «lo mejor que he hecho». [ 320 ]
El núcleo de Linux está licenciado explícitamente solo bajo la Licencia Pública General GNU versión 2 (GPL-2.0-only) con una excepción explícita de llamada al sistema (Linux-syscall-note), [ 10 ] [ 13 ] [ 14 ] sin ofrecer al licenciatario la opción de elegir ninguna versión posterior, que es una extensión común de la GPL. El código aportado debe estar disponible bajo una licencia compatible con la GPL . [ 15 ] [ 209 ]
Hubo un debate considerable sobre la facilidad con la que se podría cambiar la licencia para usar versiones posteriores de la GPL (incluida la versión 3), y si este cambio es siquiera deseable. [ 322 ] El propio Torvalds indicó específicamente al publicarse la versión 2.4.0 que su propio código se publica solo bajo la versión 2. [ 323 ] Los términos de la GPL establecen que si no se especifica ninguna versión, entonces se puede usar cualquier versión, [ 324 ] y Alan Cox señaló que muy pocos otros colaboradores de Linux habían especificado una versión particular de la GPL. [ 325 ]
En septiembre de 2006, una encuesta a 29 programadores clave del kernel indicó que 28 preferían la GPLv2 al borrador vigente de la GPLv3. Torvalds comentó: «Creo que un grupo de personas ajenas... creían que yo personalmente era la excepción porque públicamente no he sido un gran fan de la GPLv3». [ 326 ] Este grupo de desarrolladores de kernel de alto perfil, incluidos Torvalds, Greg Kroah-Hartman y Andrew Morton , comentaron en los medios de comunicación sobre sus objeciones a la GPLv3. [ 327 ] Se refirieron a cláusulas relativas a DRM / tivoización , patentes, «restricciones adicionales» y advirtieron sobre una balcanización del «Universo del Código Abierto» por parte de la GPLv3. [ 327 ] [ 328 ] Torvalds, quien decidió no adoptar la GPLv3 para el kernel de Linux, reiteró su crítica incluso años después. [ 329 ]
Módulos del kernel cargables
Se debate si algunos módulos de núcleo cargables (LKM, por sus siglas en inglés) deben considerarse obras derivadas según la ley de derechos de autor y, por lo tanto, si están o no sujetos a los términos de la GPL.
De acuerdo con las reglas de la licencia, los LKM que utilizan solo un subconjunto público de las interfaces del kernel [ 234 ] [ 235 ] son obras no derivadas, por lo que Linux proporciona a los administradores del sistema los mecanismos para cargar objetos binarios fuera del árbol en el espacio de direcciones del kernel. [ 15 ]
Hay algunos módulos cargables fuera del árbol que hacen un uso legítimo de la característica del kernel dma_buf . [ 330 ] El código compatible con GPL ciertamente puede usarlo. Otro posible caso de uso sería Nvidia Optimus que empareja una GPU rápida con una GPU integrada de Intel, donde la GPU de Nvidia escribe en el framebuffer de Intel cuando está activa. Pero Nvidia no puede usar esta infraestructura porque requiere eludir una regla que solo pueden usar los LKM que también son GPL. [ 236 ] Alan Cox respondió en LKML , rechazando una solicitud de uno de los ingenieros de Nvidia para eliminar esta imposición técnica de la API. [ 331 ] Torvalds declaró claramente en LKML que "[Afirmo que los módulos del kernel solo binarios SON derivados "por defecto"". [ 332 ]
Por otro lado, Torvalds también ha dicho que "[un] área gris en particular es algo como un controlador que fue escrito originalmente para otro sistema operativo (es decir, claramente no es una obra derivada de Linux en su origen). ESA es un área gris, y _esa_ es el área donde personalmente creo que algunos módulos pueden considerarse no obras derivadas simplemente porque no fueron diseñados para Linux y no dependen de ningún comportamiento especial de Linux". [ 333 ] Los controladores gráficos propietarios , en particular, son objeto de mucha discusión.
Cuando se cargan módulos propietarios en Linux, el kernel se marca a sí mismo como "contaminado" [ 334 ] y, por lo tanto, los desarrolladores a menudo ignoran los informes de errores de los kernels contaminados.
Bloques binarios de firmware
El kernel oficial, es decir, la rama git de Torvalds en el repositorio kernel.org, contiene blobs binarios publicados bajo los términos de la licencia GNU GPLv2. [ 10 ] [ 15 ] Linux también puede cargar blobs binarios, firmware propietario, controladores u otros módulos ejecutables desde el sistema de archivos y enlazarlos al espacio del kernel. [ 335 ]
Cuando sea necesario (por ejemplo, para acceder a los dispositivos de arranque o para mayor velocidad), el firmware puede integrarse en el kernel, es decir, integrarse en vmlinux ; sin embargo, esta no siempre es una opción viable debido a problemas técnicos o legales (por ejemplo, no está permitido hacerlo con firmware que no sea compatible con la GPL, aunque esto es bastante común). [ 336 ]
Marca
Linux es una marca registrada de Linus Torvalds en Estados Unidos, la Unión Europea y otros países. [ 337 ] [ 338 ] En 1996, se inició una batalla legal por la marca registrada cuando William Della Croce, un abogado que nunca participó en el desarrollo de Linux, comenzó a solicitar el pago de derechos de licencia por el uso de la palabra Linux . Tras demostrarse que la palabra era de uso común mucho antes del supuesto primer uso de Della Croce, la marca registrada fue otorgada a Torvalds. [ 339 ] [ 340 ] [ 341 ]
Retirada de los mantenedores rusos
En octubre de 2024, durante la invasión rusa de Ucrania , el desarrollador del kernel Greg Kroah-Hartman eliminó de sus funciones como mantenedores a algunos desarrolladores del kernel cuyas direcciones de correo electrónico sugerían una conexión con Rusia. [ 342 ] [ 343 ] Linus Torvalds respondió que no apoyaba la agresión rusa y que no revertiría el parche, insinuando que los opositores al parche eran trolls rusos . [ 344 ] James Bottomley, un desarrollador del kernel, emitió una disculpa por el manejo de la situación y aclaró que la acción fue consecuencia de las sanciones estadounidenses contra Rusia . [ 345 ]
Véase también
- Linux : Familia de sistemas operativos tipo Unix que utilizan el núcleo Linux.
- Historial de versiones del kernel de Linux : historial de versiones del kernel de Linux.
- Comparación de sistemas operativos
- Comparación de núcleos de sistemas operativos
- Microkernel : núcleo que proporciona menos servicios que un núcleo tradicional.
- Minix 3 – Sistema operativo tipo Unix
- macOS – Sistema operativo para ordenadores Apple
- Microsoft Windows – Sistema operativo de computadora
Notas
- ↑ con extensiones GNU ; [ 5 ] C11 (gnu11) desde 5.18, [ 6 ] C89 (gnu89) antes [ 7 ]
- ↑ ver Rust para Linux [ 8 ]
- ↑ En general, el código fuente de Linux se proporciona bajo los términos de lalicencia GPL-2.0 únicamente, con una excepción explícita para las llamadas al sistema. [ 13 ] [ 14 ] Aparte de eso, los archivos individuales pueden proporcionarse bajo una licencia diferente que debe ser compatible con la licencia GPL-2.0 únicamente (es decir, la Licencia Pública General de GNU versión 2) o una licencia dual, siendo una de las opciones la GPL versión 2 o una licencia compatible con GPLv2. [ 15 ]
Referencias
- ↑ "Logotipos y mascotas de Linux" . Linux Online. 2008. Archivado del original el 15 de agosto de 2010. Consultado el 19 de septiembre de 2024 .
- ↑ Greg Kroah-Hartman (4 de julio de 2026). "Linux 7.1.3" . Consultado el 7 de julio de 2026 .
- ↑ Greg Kroah-Hartman (2 de abril de 2026). "Linux 6.18.21" . Consultado el 8 de abril de 2026 .
- ↑ Linus Torvalds (12 de julio de 2026). "Linux 7.2-rc3" . Consultado el 14 de julio de 2026 .
- ↑ Russell, Paul Rusty . "Extensiones GNU" . Guía poco fiable para hackear el kernel de Linux . Consultado el 4 de agosto de 2025 .
- ↑ MaskRay (12 de mayo de 2024). "Explorando las extensiones GNU en el kernel de Linux" . MaskRay . Archivado del original el 29 de julio de 2025. Recuperado el 4 de agosto de 2025 .
- ↑ Bergmann, Arnd (3 de marzo de 2022). "Kbuild: move to -std=gnu11" . Lista de correo del kernel de Linux (Lista de correo). Archivado del original el 16 de julio de 2023. Recuperado el 19 de octubre de 2025 .
- ^ Leemhuis, Thorsten (10 de diciembre de 2025). "Kernel de Linux: compatibilidad con Rust aprobada oficialmente" . heise.de . Consultado el 12 de diciembre de 2025 .
- ↑ "torvalds/linux: árbol de código fuente del kernel de Linux" . GitHub . Archivado del original el 4 de junio de 2018. Consultado el 6 de mayo de 2026 .
- 1 2 3 4 "COPIANDO" . git.kernel.org . Archivado del original el 2 de septiembre de 2021. Recuperado el 2 de septiembre de 2021 .
- ↑ "Licencia Pública General GNU v2.0 solamente" . spdx.org . Archivado del original el 16 de julio de 2022. Recuperado el 2 de septiembre de 2021 .
- ↑ "Nota sobre llamadas al sistema Linux" . spdx.org . Archivado del original el 30 de enero de 2023. Consultado el 2 de septiembre de 2021 .
- 1 2 "GPL-2.0" . git.kernel.org . Archivado del original el 16 de julio de 2023 . Recuperado el 2 de septiembre de 2021 .
- 1 2 "Linux-syscall-note" . git.kernel.org . Archivado del original el 18 de enero de 2023. Recuperado el 2 de septiembre de 2021 .
- 1 2 3 4 5 6 "Reglas de licenciamiento del kernel de Linux" . La documentación del kernel de Linux . Archivado del original el 7 de marzo de 2020. Recuperado el 6 de enero de 2020 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Love, Robert (2010). Desarrollo del kernel de Linux (3.ª ed.). Upper Saddle River, NJ: Addison-Wesley . ISBN 978-0-672-32946-3. LCCN 2010018961 . OCLC 268788260 . OL 25534863M .
- ↑ "Extensiones a la familia de lenguajes C" . gcc.gnu.org . Archivado del original el 20 de noviembre de 2020. Consultado el 13 de noviembre de 2020 .
- 1 2 Richardson, Marjorie (1 de noviembre de 1999). "Entrevista: Linus Torvalds" . Linux Journal. Archivado del original el 14 de mayo de 2011. Recuperado el 20 de agosto de 2009 .
- 1 2 Torvalds, Linus Benedict (26 de agosto de 1991). "¿Qué te gustaría ver más en minix?" . Grupo de noticias : comp.os.minix . Usenet: 1991Aug25.205708.9541@klaava.Helsinki.FI . Archivado del original el 9 de mayo de 2013 . Recuperado el 14 de septiembre de 2016 .
- 1 2 Welsh, Matt; Dalheimer, Matthias Kalle; Kaufman, Lar (1999). "1: Introducción a Linux". Running Linux (3.ª ed.). Sebastopol, California: O'Reilly Media, Inc. pág. 5. ISBN 1-56592-976-4OCLC 50638246
- ↑ "Fuentes de kernel tipo minix gratuitas para 386-AT - Grupos de Google" . groups.google.com . 5 de octubre de 1991. Archivado del original el 1 de marzo de 2021. Consultado el 19 de marzo de 2020 .
- ↑ Williams, Sam (marzo de 2002). «Capítulo 9: La Licencia Pública General de GNU» . Free as in Freedom: Richard Stallman's Crusade for Free Software . O'Reilly . ISBN 0-596-00287-4. Consultado el 12 de noviembre de 2010 .
- 1 2 3 Christine Bresnahan y Richard Blum (2016). LPIC-2: Guía de estudio para la certificación del Linux Professional Institute: Examen 201 y examen 202. John Wiley & Sons. pág. 107. ISBN 9781119150794.
- 1 2 Torvalds, Linus . "Notas de la versión de Linux v0.12" . Archivos del núcleo de Linux. Archivado del original el 19 de agosto de 2007. Recuperado el 21 de febrero de 2007 .
- ↑ Fred Hantelmann (2016). Guía de inicio de LINUX: Una introducción completa . Springer Science & Business Media. pág. 1. ISBN 9783642607493.
- 1 2 3 Fred Hantelmann (2016). Guía de inicio de LINUX: Una introducción completa . Springer Science & Business Media. pág. 16. ISBN 9783642607493.
- ↑ Summers, David W. (19 de enero de 1992). "Problemas con las particiones" . Grupo de noticias : alt.os.linux . Usenet: 1992Jan19.085628.18752@cseg01.uark.edu . Archivado del original el 2 de junio de 2013. Recuperado el 7 de enero de 2007 .
- ↑ Clegg, Alan B. (31 de marzo de 1992). "¡Ya está aquí!" . Grupo de noticias : comp.os.linux . Usenet: 1992Mar31.131811.19832@rock.concert.net . Archivado del original el 2 de junio de 2013 . Recuperado el 7 de enero de 2007 .
- ↑ «Apéndice A: El debate Tanenbaum-Torvalds» . Open Sources: Voices from the Open Source Revolution . O'Reilly . 1999. ISBN 1-56592-582-3Consultado el 22 de noviembre de 2006 .
- ↑ Tanenbaum, Andy (29 de enero de 1992). "LINUX está obsoleto" . Grupo de noticias : comp.os.minix . Usenet: 12595@star.cs.vu.nl . Archivado del original el 17 de octubre de 2011. Recuperado el 10 de mayo de 2006 .
- ↑ Tanenbaum, Andy (12 de mayo de 2006). "Debate Tanenbaum-Torvalds: Parte II" . Universidad VU de Ámsterdam . Archivado del original el 5 de agosto de 2015. Recuperado el 6 de enero de 2007 .
- ↑ "0.96 sale la semana que viene" . www.krsaborio.net .
- ↑ "refs/tags/v0.96a - pub/scm/linux/kernel/git/nico/archive - Git en Google" . kernel.googlesource.com . Archivado del original el 27 de julio de 2025. Consultado el 3 de mayo de 2025 .
- ↑ Hayward, David (22 de noviembre de 2012). "La historia de Linux: cómo el tiempo ha moldeado al pingüino" . TechRadar . Archivado del original el 19 de marzo de 2020. Recuperado el 26 de marzo de 2020 .
- 1 2 3 Christine Bresnahan y Richard Blum (2016). LPIC-2: Guía de estudio para la certificación del Linux Professional Institute: Examen 201 y examen 202. John Wiley & Sons. pág. 108. ISBN 9781119150794.
- ↑ Torvalds, Linus (9 de junio de 1996). "Linux 2.0 realmente _se_ ha lanzado." LKML (Lista de correo). Archivado del original el 2 de abril de 2015. Recuperado el 8 de marzo de 2015 .
- 1 2 "Sistema de compilación del kernel: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 22 de julio de 2020. Recuperado el 17 de julio de 2020 .
- 1 2 "Kconfig make config — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 17 de julio de 2020. Recuperado el 13 de septiembre de 2020 .
- ↑ Torvalds, Linus (20 de enero de 1999). "2.2.0-final" . LKML (Lista de correo). Archivado del original el 2 de abril de 2015. Recuperado el 8 de marzo de 2015 .
- 1 2 "El maravilloso mundo de Linux 2.2" . 26 de enero de 1999. Archivado del original el 6 de noviembre de 2014. Recuperado el 27 de octubre de 2008 .
- ↑ "Observaciones y notas sobre Linux/390" . linuxvm.org . Archivado del original el 26 de febrero de 2019. Consultado el 29 de marzo de 2020 .
- ↑ Torvalds, Linus (4 de enero de 2001). "Y oh, por cierto." LKML (Lista de correo). Archivado del original el 26 de enero de 2016. Recuperado el 8 de marzo de 2015 .
- ↑ "El maravilloso mundo de Linux 2.4" . Archivado del original el 17 de marzo de 2005. Consultado el 27 de octubre de 2008 .
- ↑ Torvalds, Linus (17 de diciembre de 2003). "Linux 2.6.0" . LKML (Lista de correo). Archivado del original el 2 de abril de 2015. Recuperado el 28 de febrero de 2015 .
- ↑ "proc(5) - Página del manual de Linux" (ver /proc/sys/kernel/pid_max). Archivado del original el 7 de febrero de 2014. Recuperado el 19 de febrero de 2014 .
- ↑ "btrfs Wiki" . btrfs.wiki.kernel.org . Archivado del original el 25 de abril de 2012. Consultado el 17 de julio de 2020 .
- ↑ Fred Hantelmann (2016). Guía de inicio de LINUX: Una introducción completa . Springer Science & Business Media. pp. 1–2 . ISBN 9783642607493.
- ↑ Lista de correo del kernel de Linux (17 de junio de 2005). "Linux 2.6.12" . git-commits-head (Lista de correo). Archivado del original el 26 de enero de 2016. Recuperado el 23 de enero de 2008 .
- ↑ Kroah-Hartman, Greg (3 de agosto de 2006). "Adrian Bunk ahora se hace cargo de la rama estable 2.6.16" . LKML (Lista de correo). Archivado del original el 26 de enero de 2016. Recuperado el 21 de febrero de 2015 .
- ↑ Rothwell, Stephen (12 de febrero de 2008). "Anuncio: Linux-next (o el sueño de Andrew :-))" . LKML (Lista de correo). Archivado del original el 24 de noviembre de 2010. Recuperado el 30 de octubre de 2010 .
- ↑ Corbet, Jonathan (21 de octubre de 2010). "linux-next y el proceso de gestión de parches" . LWN.net . Eklektix, Inc. Archivado del original el 21 de junio de 2010. Recuperado el 30 de octubre de 2010 .
- ↑ "Archivos del núcleo de Linux" . Kernel.org. Archivado del original el 30 de enero de 1998. Consultado el 22 de enero de 2014 .
- ↑ "Agregar una personalidad para informar los números de versión 2.6.x [ LWN.net ] " . lwn.net . Archivado del original el 16 de julio de 2020 . Recuperado el 15 de julio de 2020 .
- 1 2 Torvalds, Linus (21 de julio de 2011). "Lanzamiento de Linux 3.0" . Lista de correo del kernel de Linux . Archivado del original el 18 de octubre de 2019. Recuperado el 16 de mayo de 2013 .
- ↑ Torvalds, Linus (30 de mayo de 2011). "Linux 3.0-rc1" . LKML (Lista de correo). Archivado del original el 31 de mayo de 2011. Recuperado el 1 de julio de 2013 .
- ↑ Torvalds, Linus (10 de abril de 2001). "Re: [ PARCHE ] Corrección de i386 rw_semaphores" . yarchive.net . Consultado el 26 de mayo de 2024 .
- ↑ Vaughan-Nichols, Steven J. (13 de diciembre de 2012). "Adiós 386: Linux dejará de dar soporte a los chips i386 con su próxima versión principal" . ZDNet . CBS Interactive . Archivado del original el 17 de febrero de 2015. Consultado el 6 de febrero de 2013 .
- ↑ Fingas, Jon (15 de diciembre de 2012). "Linux dejará de dar soporte a i386 en el kernel 3.8, lo que nos obliga a actualizar nuestro equipo para Doom" . Engadget . AOL . Archivado del original el 2 de abril de 2015. Recuperado el 22 de marzo de 2015 .
- ↑ Vaughan-Nichols, Steven J. (11 de diciembre de 2012). "Llega Linux 3.7, los desarrolladores de ARM se regocijan" . ZDNet . CBS Interactive . Archivado del original el 5 de noviembre de 2014. Recuperado el 6 de febrero de 2013 .
- ↑ Torvalds, Linus (12 de abril de 2015). "Lanzamiento de Linux 4.0" . LKML (Lista de correo). Archivado del original el 13 de abril de 2015. Recuperado el 12 de abril de 2015 .
- ↑ Torvalds, Linus (2 de septiembre de 2013). "Linux 3.11" . LKML (Lista de correo). Archivado del original el 26 de febrero de 2014. Recuperado el 3 de septiembre de 2013 .
- ↑ "Linux 3.11" . kernelnewbies.org. 2 de septiembre de 2013. Archivado del original el 14 de noviembre de 2021. Consultado el 21 de enero de 2014 .
- ↑ "La Fundación Linux publica el Informe de Desarrollo de Linux" . Fundación Linux . 18 de febrero de 2015. Archivado del original el 19 de julio de 2016. Consultado el 20 de febrero de 2015 .
- ↑ Michael Larabel (23 de junio de 2014). "El kernel de Linux alcanza los 19,5 millones de líneas de código y sigue en aumento" . Phoronix . Archivado del original el 23 de noviembre de 2020. Consultado el 23 de junio de 2015 .
- 1 2 Torvalds, Linus (3 de marzo de 2019). "Linus Torvalds: Linux 5.0" . LKML . Archivado del original el 25 de agosto de 2024. Recuperado el 25 de agosto de 2024 .
- ↑ Prakash, Abhishek (11 de enero de 2023). "¡Lanzamiento del kernel de Linux 5.0! Descubre las nuevas características" . Es software libre . Archivado del original el 25 de agosto de 2024. Consultado el 25 de agosto de 2024 .
- ↑ Larabel, Michael (6 de enero de 2019). "Las numerosas novedades y mejoras del kernel de Linux 5.0" . www.phoronix.com . Archivado del original el 16 de octubre de 2024. Consultado el 25 de agosto de 2024 .
- ↑ Corbet, Jonathan (3 de agosto de 2020). "Algunas estadísticas del ciclo del kernel 5.8" . LWN - Linux Weekly News . Archivado del original el 4 de septiembre de 2020. Recuperado el 11 de agosto de 2020 .
- ↑ "Encuesta a desarrolladores de Stack Overflow 2019: tecnologías más populares" . Stack Overflow . Archivado del original el 8 de octubre de 2020. Consultado el 17 de marzo de 2020 .
- ↑ "Encuesta para desarrolladores de Stack Overflow 2019: entornos y herramientas de desarrollo" . Stack Overflow . Archivado del original el 7 de marzo de 2020. Consultado el 17 de marzo de 2020 .
- ↑ "Estadísticas de uso y cuota de mercado de los sistemas operativos para sitios web, marzo de 2020" . w3techs.com . Consultado el 17 de marzo de 2020 .
- ↑ "Estadísticas de uso y cuota de mercado de Unix para sitios web, marzo de 2020" . w3techs.com . Consultado el 17 de marzo de 2020 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 "TOP500 Sitios de supercomputadoras: Familia de sistemas operativos / Linux" . Top500.org. Archivado del original el 19 de noviembre de 2012. Recuperado el 10 de agosto de 2025 .
- ↑ «Gartner afirma que las ventas de tabletas representarán menos del 10 % del total de dispositivos en 2014» (Comunicado de prensa). Egham, Reino Unido : Gartner . 15 de octubre de 2014. Archivado del original el 17 de octubre de 2014. Consultado el 19 de octubre de 2014 .
- ↑ Lunden, Ingrid (15 de octubre de 2014). "El crecimiento de las ventas de tabletas se desploma en 2014 mientras que los teléfonos inteligentes Android siguen disparándose: Gartner" . TechCrunch . AOL . Archivado del original el 23 de octubre de 2014. Recuperado el 23 de octubre de 2014 .
- ↑ "Los envíos mundiales de PC superan las previsiones con una leve mejora en la demanda de los consumidores, mientras que Apple asciende al quinto puesto, según IDC" (Comunicado de prensa). Framingham, MA : IDC . 8 de octubre de 2014. Archivado del original el 11 de octubre de 2014. Consultado el 19 de octubre de 2014 .
- ↑ Wheeler, David A. "Núcleo Linux 2.6: ¡Vale la pena!" . Archivado del original el 20 de agosto de 2011 . Recuperado el 18 de enero de 2007 .
- ↑ «Impacto económico del software libre en la innovación y la competitividad del sector TIC de la UE» (PDF) (Tabla 3 en la página 50). Archivado (PDF) del original el 15 de febrero de 2010. Consultado el 8 de enero de 2011 .
- ↑ "Estimación del coste total de desarrollo de una distribución de Linux" (PDF) (Tabla en la página 6). Archivado del original (PDF) el 11 de julio de 2010.
- ↑ "El núcleo de mil millones de dólares" . Linux.slashdot.org. 24 de febrero de 2010. Archivado del original el 15 de mayo de 2011. Consultado el 12 de noviembre de 2010 .
- ↑ Wheeler, David. "El núcleo de Linux: ¡Vale más!" . Archivado del original el 24 de febrero de 2021. Recuperado el 17 de septiembre de 2012 .
- ↑ "Archivos del núcleo de Linux" . www.kernel.org . Archivado del original el 21 de febrero de 2011. Consultado el 28 de febrero de 2023 .
- 1 2 "Estado del desarrollo del kernel de Linux en 2017" . The Linux Foundation . 25 de octubre de 2017. Archivado del original el 27 de mayo de 2020. Recuperado el 27 de mayo de 2020 .
- ↑ "Por qué renuncié: el desarrollador del kernel Con Kolivas" . Revista APC . Revistas ACP. 24 de julio de 2007. Archivado del original el 7 de julio de 2011. Consultado el 15 de agosto de 2011 .
- ↑ Corbet, Jonathan (25 de julio de 2007). "Re: Planes de fusión de -mm para 2.6.23" . LWN.net. Archivado del original el 11 de febrero de 2018. Recuperado el 10 de febrero de 2018 .
- ↑ Cox, Alan (28 de julio de 2009). "Re: [ PARCHE ] kdesu roto" . Archivado del original el 11 de febrero de 2018. Recuperado el 10 de febrero de 2018 .
- ↑ Rodrigues, Goldwyn (22 de enero de 2011). "Una historia de dos objetivos SCSI" . Archivado del original el 15 de febrero de 2018. Recuperado el 14 de febrero de 2018 .
- ↑ Steinmetz, Andreas (17 de enero de 2013). "LIO: la implementación defectuosa del destino iSCSI" . Archivado del original el 15 de febrero de 2018. Recuperado el 14 de febrero de 2018 .
- ↑ Paul, Ryan (19 de junio de 2012). "Linus Torvalds le dice 'que os den' a NVIDIA" . Archivado del original el 15 de febrero de 2018. Recuperado el 14 de febrero de 2018 .
- ↑ John Gold (3 de abril de 2014). "Linus Torvalds suspende a un desarrollador clave de Linux: pánico del kernel cuando un desarrollador de Systemd provoca al oso" . Archivado del original el 24 de marzo de 2019. Recuperado el 24 de marzo de 2019 .
- ↑ Poettering, Lennart (6 de octubre de 2014). "Sobre la enfermedad de la comunidad del kernel de Linux" . Google+ . Archivado del original el 27 de mayo de 2018. Recuperado el 10 de febrero de 2018 .
- ↑ Brodkin, Jon (6 de marzo de 2015). "VMware presuntamente violó la licencia de código abierto de Linux durante años" . Ars Technica . Archivado del original el 15 de febrero de 2018. Recuperado el 14 de febrero de 2018 .
- ↑ McCarthy, Kieren (26 de agosto de 2016). "Tras haber ofendido a todo el mundo, Linus Torvalds llama a sus propios abogados una 'enfermedad purulenta y repugnante'"." . The Register . Archivado del original el 15 de febrero de 2018 . Consultado el 14 de febrero de 2018 .
- ↑ Kroah-Hartman, Greg. " [ PARCHE 000/190 ] Reversión de todas las confirmaciones de umn.edu" . Archivo de la lista de correo del kernel de Linux . Archivado del original el 13 de enero de 2022. Recuperado el 13 de enero de 2022 .
- ↑ Chin, Monica (30 de abril de 2021). "Cómo una universidad logró ser excluida del kernel de Linux" . The Verge. Archivado del original el 13 de enero de 2022. Recuperado el 13 de enero de 2022 .
- ↑ "Rust Drama: La tensión más profunda a la que se enfrenta el núcleo de Linux" . Tedium: El lado aburrido de Internet . Consultado el 9 de febrero de 2026 .
- ↑ Edge, Jake (27 de junio de 2025). "Es posible que Bcachefs deje de formar parte del kernel" . Linux Weekly News . Consultado el 14 de marzo de 2026 .
- ↑ "Linus Torvalds elimina el código Bcachefs del núcleo de Linux" . www.phoronix.com . Consultado el 30 de septiembre de 2025 .
- ↑ Corbet, Jonathan (10 de septiembre de 2007). "KS2007: Relaciones con desarrolladores y proceso de desarrollo" . LWN.net . Archivado del original el 12 de febrero de 2018. Recuperado el 11 de febrero de 2018 .
- ↑ Brodkin, Jon (16 de julio de 2013). "Linus Torvalds defiende su derecho a avergonzar a los desarrolladores del kernel de Linux" . ARS Technica . Archivado del original el 17 de febrero de 2018. Recuperado el 11 de febrero de 2018 .
- ↑ Corbet, Jonathan (9 de marzo de 2015). "El código de conflicto del núcleo" . LWN.net . Archivado del original el 12 de febrero de 2018. Recuperado el 11 de febrero de 2018 .
- ↑ Corbet, Jonathan (18 de septiembre de 2018). "Código, conflicto y conducta" . LWN.net . Archivado del original el 19 de septiembre de 2018. Recuperado el 19 de septiembre de 2018 .
- ↑ Cohen, Noam (19 de septiembre de 2018). «Tras años de correos electrónicos abusivos, el creador de Linux se retira» . The New Yorker . Archivado del original el 20 de febrero de 2020. Consultado el 24 de septiembre de 2018 .
- ↑ Larabel, Michael. "Incluir palabrotas en los comentarios del código del kernel: Linux recibe "abrazos""" . Phoronix . Archivado del original el 21 de abril de 2019 . Consultado el 15 de junio de 2019 .
- ↑ "Código de Conflicto" . Consultado el 4 de febrero de 2018 .
- ↑ Sharwood, Simon (6 de octubre de 2015). «Desarrollador del kernel de Linux que pidió a Linus Torvalds que dejara de abusar verbalmente renuncia por abuso verbal» . The Register . Archivado del original el 29 de marzo de 2020. Recuperado el 4 de febrero de 2018 .
- ↑ Edge, Jake (31 de enero de 2018). "Demasiados señores, pocos administradores" . LWN.net . Archivado del original el 9 de noviembre de 2020. Recuperado el 4 de febrero de 2018 .
- ↑ Corbet, Jonathan (6 de noviembre de 2017). "Criticar a los mantenedores del kernel" . LWN.net . Archivado del original el 26 de enero de 2021. Recuperado el 4 de febrero de 2018 .
- ↑ "Evolución de Linux" (PDF) . 26 de marzo de 2008. Archivado (PDF) del original el 14 de diciembre de 2013. Consultado el 6 de noviembre de 2013 .
- ↑ "Desarrollo perpetuo: un modelo del ciclo de vida del núcleo Linux" (PDF) . 25 de octubre de 2011. Archivado (PDF) del original el 17 de octubre de 2013. Consultado el 6 de noviembre de 2013 .
- ↑ Kroah-Hartman, Greg (12 de febrero de 2008). "Re: Anuncio: Linux-next (o el sueño de Andrew :-))" . Lista de correo del kernel de Linux (Lista de correo). Archivado del original el 2 de febrero de 2017. Recuperado el 30 de enero de 2017 .
- ↑ Robert Love (2010). Desarrollo del núcleo Linux: Desarrollo del núcleo Linux . Pearson Education. pág. 11. ISBN 9780768696790.
- ↑ Robert Love (2010). Desarrollo del núcleo Linux: Desarrollo del núcleo Linux . Pearson Education. pág. 12. ISBN 9780768696790.
- ↑ "Cómo funciona el proceso de desarrollo" . Archivado del original el 9 de diciembre de 2017. Consultado el 4 de febrero de 2018 .
- ↑ Robert Love (2010). Desarrollo del núcleo Linux: Desarrollo del núcleo Linux . Pearson Education. pág. 13. ISBN 9780768696790.
- ↑ "Código de conducta del pacto de colaboradores" . Documentación del kernel de Linux . Archivado del original el 6 de octubre de 2021. Consultado el 6 de octubre de 2021 .
- ↑ "Interpretación del Código de Conducta del Pacto de Colaboradores del Núcleo Linux" . Documentación del Núcleo Linux . Archivado del original el 6 de octubre de 2021. Consultado el 6 de octubre de 2021 .
- ↑ Williams, Dan. " [ PATCH ] CodingStyle: Inclusive Terminology" . Lista de correo del kernel de Linux . Archivado del original el 22 de octubre de 2021 . Recuperado el 22 de octubre de 2021 .
- ↑ Tim Anderson. "El compilador mínimo del kernel de Linux se actualiza a GCC 5.1, lo que permite el uso potencial de C11" . The Register . Consultado el 12 de mayo de 2023 .
- ↑ Larabel, Michael. "Se ha realizado el cambio de C89 a C11/GNU11 con Linux 5.18" . www.phoronix.com . Archivado del original el 12 de mayo de 2023. Consultado el 12 de mayo de 2023 .
- ↑ Proven, Liam. "Linux 6.1: Rust se incorporará al kernel principal" . The Register . Archivado del original el 12 de octubre de 2022. Consultado el 12 de mayo de 2023 .
- ↑ Sharwood, Simon (11 de diciembre de 2022). "Linus Torvalds revela el kernel de Linux 6.1" . The Register . Archivado del original el 12 de mayo de 2023. Recuperado el 12 de mayo de 2023 .
- ↑ Corbet, Jonathan (17 de noviembre de 2022). "Óxido en el kernel 6.2" . LWN.net . Archivado del original el 3 de junio de 2023. Recuperado el 12 de mayo de 2023 .
- ↑ Larabel, Michael. "Más código Rust preparado para Linux 6.3: cada vez más cerca de tener controladores Rust integrados" . Phoronix . Archivado del original el 12 de mayo de 2023. Recuperado el 12 de mayo de 2023 .
- ↑ "Cómo desarrollar el kernel de Linux: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 4 de enero de 2020 .
- ↑ "Estilo de codificación del kernel de Linux — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 5 de enero de 2020. Consultado el 4 de enero de 2020 .
- 1 2 "Cómo funciona el proceso de desarrollo: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 9 de diciembre de 2017. Consultado el 26 de marzo de 2020 .
- ↑ Kubbilun, Ingo A. (2 de junio de 2004). "Parche del kernel de Linux para el compilador de Intel" (en alemán). Pyrillion.org. Archivado del original el 22 de julio de 2011. Recuperado el 12 de noviembre de 2010 .
- ↑ timothy (26 de febrero de 2009). "Proyecto de kernel de Linux de alto rendimiento — LinuxDNA" . Slashdot Linux . Dice Holdings . Archivado del original el 18 de octubre de 2019. Recuperado el 30 de octubre de 2010 .
- ↑ Ryan, Justin (25 de febrero de 2009). "LinuxDNA potencia Linux con el compilador Intel C/C++" . Linux Journal . Belltown Media, Inc. Archivado del original el 9 de noviembre de 2020. Recuperado el 30 de octubre de 2010 .
- ↑ Larabel, Michael (5 de marzo de 2023). "Linux 6.3 deja de dar soporte al compilador Intel ICC" . Phoronix . Archivado del original el 6 de marzo de 2023. Consultado el 6 de marzo de 2023 .
- ↑ Lelbach, Bryce (25 de octubre de 2010). "Clang crea un kernel de Linux funcional (arranca a RL5 con SMP, redes y X, autoalojamiento)" . cfe-dev (Lista de correo). Archivado del original el 7 de septiembre de 2015.
- ↑ Larabel, Michael (12 de abril de 2014). "Linux 3.15 casi se puede compilar con Clang de LLVM" . Phoronix . Archivado del original el 13 de agosto de 2020. Recuperado el 10 de junio de 2014 .
- ↑ Larabel, Michael (22 de agosto de 2014). "Patch by Patch, LLVM Clang mejora en la construcción del kernel de Linux" . Phoronix . Archivado del original el 13 de agosto de 2020. Recuperado el 10 de agosto de 2025 .
- ↑ Edge, Jake (7 de mayo de 2013). "LFCS: El proyecto LLVMLinux" . LWN.net . Archivado del original el 10 de agosto de 2020. Recuperado el 3 de marzo de 2015 .
- ↑ Möller, Jan-Simon (2 de febrero de 2014). "LLVMLinux: El núcleo Linux con alas de dragón" (PDF) . Proyecto LLVM . Archivado (PDF) del original el 3 de agosto de 2020. Recuperado el 3 de marzo de 2015 .
- ↑ Desaulniers, Nick; Hackmann, Greg; Hines, Stephen (18 de octubre de 2017). "Reunión de desarrolladores de LLVM de 2017: Compilación del espacio de usuario de Android y el kernel de Linux con LLVM" (vídeo) . youtube.com . llvm.org. Archivado del original el 31 de diciembre de 2020. Recuperado el 10 de agosto de 2025 .
- ↑ Hackmann, Greg (2 de febrero de 2017). "Serie de parches marlin-nougat-mr1-clang" . Archivado del original el 10 de diciembre de 2020. Recuperado el 6 de diciembre de 2020 .
- ↑ Kaehlcke, Matthias (22 de octubre de 2018). "cros-kernel2: Hacer de clang el compilador predeterminado para las compilaciones del kernel" . Archivado del original el 10 de diciembre de 2020. Recuperado el 6 de diciembre de 2020 .
- ↑ Larabel, Michael (4 de febrero de 2019). "El uso de LLVM Clang para compilar el kernel de Linux vuelve a cobrar fuerza gracias a Google" . Phoronix . Archivado del original el 25 de noviembre de 2020. Consultado el 6 de diciembre de 2020 .
- ↑ Desaulniers, Nick (10 de diciembre de 2019). "vts: kernel: enforce vts_kernel_toolchain for all TARGET_ARCH for R" . Archivado del original el 10 de diciembre de 2020. Recuperado el 6 de diciembre de 2020 .
- ↑ Desaulniers, Nick (19 de noviembre de 2020). "Re: violación de la firma del puntero a función" . LKML . Archivado del original el 14 de abril de 2021. Recuperado el 6 de diciembre de 2020 .
- ↑ Bradford, John (8 de marzo de 2003). "Re: ¿Qué es un OOPS?" . LKML (Lista de correo). Archivado del original el 31 de octubre de 2014. Recuperado el 30 de octubre de 2010 .
- ↑ "syslog(2) - Página del manual de Linux" . man7.org . Archivado del original el 13 de octubre de 2020. Consultado el 15 de agosto de 2020 .
- ↑ "kmsg: exportar registros printk a la interfaz /dev/kmsg [ LWN.net ] " . lwn.net . Archivado del original el 2 de octubre de 2015 . Recuperado el 16 de agosto de 2020 .
- ↑ Vea qué está haciendo su computadora con las utilidades Ftrace , 24 de enero de 2019, archivado del original el 15 de diciembre de 2021 , recuperado el 9 de mayo de 2021
- ↑ Rostedt, Steven (9 de diciembre de 2009). "Depuración del kernel usando Ftrace - parte 1 [ LWN.net ] " . lwn.net . Archivado del original el 9 de noviembre de 2020 . Recuperado el 15 de septiembre de 2020 .
- ↑ "Depuración del kernel usando Ftrace - parte 2 [ LWN.net ] " . lwn.net . Archivado del original el 31 de marzo de 2020 . Recuperado el 15 de septiembre de 2020 .
- ↑ "ftrace - Rastreador de funciones — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 19 de septiembre de 2020. Consultado el 15 de septiembre de 2020 .
- ↑ "Rastreo en tiempo de arranque: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 31 de octubre de 2020. Consultado el 19 de septiembre de 2020 .
- ↑ "Sondas del kernel (Kprobes) — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 11 de octubre de 2020. Consultado el 6 de octubre de 2020 .
- ↑ "Uprobe-tracer: Seguimiento de eventos basado en Uprobe — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 4 de diciembre de 2020. Consultado el 6 de octubre de 2020 .
- ↑ "Uso de kgdb, kdb y los componentes internos del depurador del kernel" . mirrors.edge.kernel.org . Archivado del original el 26 de enero de 2021. Consultado el 3 de noviembre de 2020 .
- ↑ Gene Sally (2010). Pro Linux Embedded Systems . Apress. p. 252. ISBN 9781430272267.
- ↑ Billimoria, Kaiwan N. (2021). Programación del núcleo Linux: Una guía completa sobre los aspectos internos del núcleo, la escritura de módulos del núcleo y la sincronización del núcleo . Birmingham: Packt Publishing, Limited. pág. 55. ISBN 978-1-78995-592-7OCLC 1240585605
- ↑ Vaduva, Alexandru; Gonzalez, Alex; Simmonds, Chris (2016). Linux : desarrollo embebido : aproveche el poder de Linux para desarrollar proyectos embebidos de Linux cautivadores y potentes : un curso en tres módulos . Birmingham, Reino Unido: Packt Publishing . pág. 663. ISBN 978-1-78712-445-5OCLC 960471438
- ↑ Karim Yaghmour (2008). Building embedded Linux systems (2.ª ed.). Sebastopol [California]: O'Reilly Media. pág. 387. ISBN 978-0-596-52968-0OCLC 273049576
- ↑ Yaghmour, Karim (2011). Embedded Android . Sebastopol, CA: O'Reilly Media. pág. 44. ISBN 978-1-4493-2798-9OCLC 812180000 .
- ↑ "SoC (Sistema en un chip)" . Wiki de OpenWrt . 6 de noviembre de 2014. Archivado del original el 23 de agosto de 2022. Consultado el 15 de marzo de 2021 .
- ↑ Corbet, Jonathan (4 de octubre de 2019). "Qué hacer con los números CVE [ LWN.net ] " . lwn.net . Archivado del original el 23 de abril de 2021 . Recuperado el 15 de marzo de 2021 .
- ↑ Amadeo, Ron (20 de noviembre de 2019). "Google describe sus planes para el soporte del kernel principal de Linux en Android" . Ars Technica . Archivado del original el 9 de abril de 2021. Recuperado el 31 de marzo de 2021 .
- ↑ Bruchon, Jody (24 de abril de 2021), jbruchon/elks , archivado del original el 2 de mayo de 2021 , consultado el 27 de abril de 2021
- ↑ "El estado de preempt-rt" . linuxplumbersconf.org . Archivado del original el 15 de octubre de 2016. Consultado el 14 de junio de 2016 .
- ↑ Meyer, David (3 de febrero de 2010). "Desarrollador de Linux explica la eliminación del código del kernel de Android" . ZDNet . CBS Interactive . Archivado del original el 15 de octubre de 2016. Recuperado el 3 de febrero de 2010 .
- ↑ "Capítulo 03: Descripción general de la plataforma maemo" . Descripción general de la tecnología maemo . Nokia . 2008. Archivado del original el 16 de junio de 2008. Consultado el 9 de abril de 2010 .
- ↑ Kroah-Hartman, Greg (2 de febrero de 2010). "Android y la comunidad del kernel de Linux" . Archivado del original el 27 de abril de 2019. Recuperado el 3 de febrero de 2010 .
- ^ Roger Ye (2017). Programación del sistema Android . Publicación de paquetes. pag. 14.ISBN 9781787120389.
- ↑ Torvalds, Linus (19 de septiembre de 2001). "Los orígenes de Linux: Linus Torvalds" . YouTube . Archivado del original el 15 de diciembre de 2021. Consultado el 6 de diciembre de 2020 .
- ↑ "Archivo MAINTAINERS de Linux" .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ^ Alexandru Vaduva, Alex González y Chris Simmonds (2016). Linux: desarrollo integrado . Publicación de paquetes. pag. 663.ISBN 9781787124455.
- ↑ Corbet, Jonathan (17 de diciembre de 2003). "Linux para sistemas pequeños [ LWN.net ] " . lwn.net . Archivado del original el 27 de julio de 2025 . Recuperado el 22 de noviembre de 2024 .
- ↑ "Kernel tinification [ LWN.net ] " . lwn.net . Archivado del original el 12 de noviembre de 2024 . Recuperado el 22 de noviembre de 2024 .
- ↑ Brown, Eric (13 de abril de 2017). "Reduciendo el núcleo y el sistema de archivos de Linux para IoT" . Linux.com . Archivado del original el 6 de octubre de 2024. Recuperado el 22 de noviembre de 2024 .
- ↑ Shizukuishi, Takuya; Matsubara, Katsuya (30 de marzo de 2020). «Una tinificación eficiente del kernel de Linux para minimizar el consumo de recursos» . Actas del 35.º Simposio Anual de la ACM sobre Computación Aplicada . págs. 1228–1237 . doi : 10.1145/3341105.3373913 . ISBN 978-1-4503-6866-7Archivado del original el 20 de enero de 2025. Consultado el 22 de noviembre de 2024 .
- ↑ "README" . git.kernel.org . Consultado el 24 de marzo de 2021 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "KernelBuild - Linux Kernel Newbies" . kernelnewbies.org . Archivado del original el 19 de octubre de 2020. Consultado el 13 de septiembre de 2020 .
- ↑ "La interfaz Sysctl" . Linux.it . Archivado del original el 17 de febrero de 2020. Consultado el 13 de septiembre de 2020 .
- ↑ "sysctl(8) - Página del manual de Linux" . man7.org . Archivado del original el 30 de septiembre de 2020. Consultado el 13 de septiembre de 2020 .
- ↑ "procfs(5) - Página del manual de Linux" . man7.org . Archivado del original el 24 de septiembre de 2020. Consultado el 13 de septiembre de 2020 .
- ↑ "sched(7) - Página del manual de Linux" . man7.org . Archivado del original el 17 de julio de 2020. Consultado el 27 de julio de 2020 .
- ↑ "Preguntas frecuentes: Preemption" . kernelnewbies.org . 22 de agosto de 2009. Archivado del original el 7 de agosto de 2020. Consultado el 7 de mayo de 2015 .
- 1 2 Jonathan Corbet (24 de febrero de 2003). "Portabilidad de controladores: el kernel preemptivo" . LWN.net . Archivado del original el 10 de agosto de 2020. Recuperado el 7 de mayo de 2015 .
- 1 2 "EEVDF Scheduler Merged For Linux 6.6, Intel Hybrid Cluster Scheduling Re-Introduced" . Phoronix . Archivado del original el 11 de septiembre de 2023. Recuperado el 10 de septiembre de 2023 .
- 1 2 Molnár, Ingo (13 de abril de 2007). " [ parche ] Núcleo del planificador modular y planificador completamente justo [ CFS ] " . LKML (Lista de correo). Archivado del original el 3 de noviembre de 2020. Recuperado el 30 de marzo de 2020 .
- ↑ "Planificador completamente justo | Linux Journal" . Linuxjournal.com . Archivado del original el 3 de agosto de 2020. Consultado el 30 de marzo de 2020 .
- ↑ "ioctl(2) - Página del manual de Linux" . man7.org . Archivado del original el 20 de julio de 2020. Consultado el 11 de agosto de 2020 .
- ↑ "aio(7) - Página del manual de Linux" . man7.org . Archivado del original el 12 de abril de 2020. Consultado el 11 de agosto de 2020 .
- ↑ "io_setup(2) - Página del manual de Linux" . man7.org . Archivado del original el 20 de agosto de 2020. Consultado el 11 de agosto de 2020 .
- ↑ "KVM" . Linux-kvm.org . Archivado del original el 28 de marzo de 2020. Consultado el 29 de marzo de 2020 .
- ↑ "Comparison Tech - Wiki de virtualización de Linux" . Virt.kernelnewbies.org . Archivado del original el 3 de agosto de 2020. Consultado el 29 de marzo de 2020 .
- ↑ "Soporte de virtualización a través de KVM en Linux 2.6.20 - Principiantes del kernel de Linux" . Kernelnewbies.org . Archivado del original el 29 de noviembre de 2019. Consultado el 29 de marzo de 2020 .
- ↑ Coekaerts, Wim. "Linux mainline contiene todos los fragmentos de código Xen para la compatibilidad con Dom0 y DomU" . blogs.oracle.com . Archivado del original el 3 de agosto de 2020. Consultado el 29 de marzo de 2020 .
- ↑ "Xen celebra la compatibilidad total con Dom0 y DomU en Linux 3.0 – blog.xen.org" . 7 de junio de 2011. Archivado del original el 7 de junio de 2011. Consultado el 29 de marzo de 2020 .
- ↑ Wilk, Konrad Rzeszutek (31 de enero de 2014). "Linux 3.14 y PVH" . Proyecto Xen . Archivado del original el 29 de marzo de 2020. Recuperado el 29 de marzo de 2020 .
- ↑ "Introducción a la virtualización Xen | Guía de virtualización | openSUSE Leap 15.2" . doc.opensuse.org . Archivado del original el 28 de septiembre de 2020. Consultado el 29 de septiembre de 2020 .
- ↑ "Tecnología de virtualización | Guía de virtualización | openSUSE Leap 15.3" . doc.opensuse.org . Archivado del original el 30 de septiembre de 2021. Consultado el 30 de septiembre de 2021 .
- 1 2 "Proyecto SELinux" . GitHub . Archivado del original el 12 de diciembre de 2019. Recuperado el 10 de enero de 2020 .
- 1 2 "AppArmor" . La documentación del kernel de Linux . Archivado del original el 8 de mayo de 2020. Recuperado el 10 de enero de 2020 .
- ↑ Jake Edge (25 de noviembre de 2008). "Dispositivos de caracteres en el espacio de usuario" . LWN.net . Archivado del original el 26 de enero de 2021. Recuperado el 7 de mayo de 2015 .
- ↑ Jonathan Corbet (2 de mayo de 2007). "UIO: controladores de espacio de usuario" . LWN.net . Archivado del original el 11 de noviembre de 2020. Recuperado el 7 de mayo de 2015 .
- 1 2 3 4 "stable-api-nonsense - árbol de código fuente del kernel de Linux" . git.kernel.org . Archivado del original el 5 de marzo de 2021. Recuperado el 18 de abril de 2020 .
- ↑ Gorman, Mel (15 de febrero de 2004). Comprensión del gestor de memoria virtual de Linux (PDF) . Prentice Hall. pág. 26. ISBN 0-13-145348-3. Archivado (PDF) del original el 3 de mayo de 2019. Recuperado el 27 de enero de 2020 .
- ↑ Greg Ungerer. "Anuncio de la rama principal de uClinux" . Archivado del original el 31 de octubre de 2007. Consultado el 15 de enero de 2008 .
- 1 2 Nguyen, Binh (30 de julio de 2004). "Jerarquía del sistema de archivos de Linux: Capítulo 1. Jerarquía del sistema de archivos de Linux" . El Proyecto de Documentación de Linux. Archivado del original el 2 de diciembre de 2020. Recuperado el 28 de noviembre de 2012 .
- ↑ "Libro README de la Guía de administración" . Repositorios git de Kernel.org .
- ↑ "Versión 5.x del kernel de Linux: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 4 de enero de 2020 .
- ↑ "README\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree" . git.kernel.org . Archivado del original el 1 de octubre de 2020 . Consultado el 18 de abril de 2020 .
- ↑ "syscalls\stable\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree" . git.kernel.org . Archivado del original el 2 de octubre de 2020 . Consultado el 18 de abril de 2020 .
- 1 2 "1.Intro.rst - Documentación/proceso/1.Intro.rst - Código fuente de Linux (v5.8) - Bootlin" . elixir.bootlin.com . Archivado del original el 14 de abril de 2021 . Recuperado el 8 de agosto de 2020 .
- 1 2 "syscalls" . man7 . Archivado del original el 15 de enero de 2020. Recuperado el 28 de enero de 2020 .
- ↑ "intro(2) - Página del manual de Linux" . man7.org . Archivado del original el 17 de julio de 2020. Consultado el 16 de julio de 2020 .
- ↑ "clonar" . man7.org . Archivado del original el 18 de enero de 2020. Consultado el 28 de enero de 2020 .
- ↑ "feature_test_macros" . man7.org . Archivado del original el 19 de enero de 2020. Consultado el 28 de enero de 2020 .
- ↑ "vdso(7) - Página del manual de Linux" . man7.org . Archivado del original el 2 de febrero de 2020. Consultado el 2 de febrero de 2020 .
- 1 2 "futex(2) - Página del manual de Linux" . man7.org . Archivado del original el 31 de enero de 2020. Consultado el 2 de febrero de 2020 .
- ↑ "syscall(2) - Página del manual de Linux" . man7.org . Archivado del original el 21 de enero de 2020. Consultado el 2 de febrero de 2020 .
- ↑ "sysfs(5) - Página del manual de Linux" . man7.org . Archivado del original el 18 de enero de 2020. Consultado el 6 de enero de 2020 .
- ↑ "Reglas sobre cómo acceder a la información en sysfs — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 6 de enero de 2020 .
- ↑ "Especificaciones de referencia de la Fundación Linux" . refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ "Especificaciones LSB" . refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ "Especificación estándar base de escritorio de Linux, parte genérica" . refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ "Referencias normativas" . refspecs.linuxfoundation.org . Archivado del original el 12 de agosto de 2020. Consultado el 3 de febrero de 2020 .
- ↑ "Especificación básica del núcleo estándar de Linux, parte genérica" . refspecs.linuxfoundation.org . Archivado del original el 29 de noviembre de 2019. Consultado el 3 de febrero de 2020 .
- ↑ "Interfaz binaria de aplicación System V - Edición 4.1" (PDF) . Sco.com . Archivado (PDF) del original el 13 de diciembre de 2019. Recuperado el 3 de febrero de 2020 .
- ↑ "Xinuos Inc. | Desarrolladores | Gabi | 17 de diciembre de 2003 | Interfaz binaria de aplicación System V - BORRADOR" . Sco.com . Archivado del original el 3 de febrero de 2020. Consultado el 3 de febrero de 2020 .
- ↑ "Formato ejecutable y de enlace (ELF)" . Refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ "elf(5) - Página del manual de Linux" . man7.org . Archivado del original el 30 de noviembre de 2020. Consultado el 18 de noviembre de 2020 .
- ↑ "Especificación básica estándar de Linux para X86-64" . Refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ "Interfaz binaria de aplicación de System V - BORRADOR" . Refspecs.linuxbase.org . Consultado el 3 de febrero de 2020 .
- ↑ Seyfarth, Ray (2012). Introducción a la programación en lenguaje ensamblador Intel de 64 bits para Linux . CreateSpace Independent Publishing Platform. pág. 170. ISBN 9781478119203.
- ↑ Drysdale, David (9 de julio de 2014). "Anatomía de una llamada al sistema, parte 1 [ LWN.net ] " . lwn.net . Archivado del original el 18 de agosto de 2020 . Recuperado el 16 de julio de 2020 .
- ↑ Drysdale, David (16 de julio de 2014). "Anatomía de una llamada al sistema, parte 2 [ LWN.net ] " . lwn.net . Archivado del original el 6 de agosto de 2020 . Recuperado el 16 de julio de 2020 .
- ↑ Deucher, Alex (7 de octubre de 2014). "Nuevo controlador unificado de código abierto de AMD" . Fundación X.Org . Archivado del original el 21 de enero de 2015. Recuperado el 21 de enero de 2015 .
- 1 2 "Símbolos: una guía poco fiable para hackear el kernel de Linux — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 3 de agosto de 2020. Consultado el 8 de febrero de 2020 .
- 1 2 Corbet, Jonathan (11 de septiembre de 2007). "Símbolos exportados y la API interna [ LWN.net ] " . Lwn.net . Archivado del original el 31 de marzo de 2020 . Recuperado el 15 de marzo de 2020 .
- 1 2 Corbet, Jonathan (28 de febrero de 2020). "Desexportando kallsyms_lookup_name() [ LWN.net ] " . Lwn.net . Archivado del original el 1 de abril de 2020 . Recuperado el 15 de marzo de 2020 .
- ↑ "Árboles I: Árboles de raíz [ LWN.net ] " . lwn.net . Archivado del original el 8 de noviembre de 2020 . Recuperado el 13 de noviembre de 2020 .
- ↑ "Árboles II: árboles rojo-negros [ LWN.net ] " . lwn.net . Archivado del original el 13 de noviembre de 2020 . Recuperado el 13 de noviembre de 2020 .
- ↑ "Guía poco fiable para hackear el kernel de Linux" . Kernel.org (1.ª ed.). 2005. Archivado del original el 16 de febrero de 2020. Consultado el 15 de marzo de 2020 .
- ↑ "Guía poco fiable para hackear el kernel de Linux — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 15 de marzo de 2020 .
- ↑ "Guía poco fiable sobre el bloqueo: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 15 de marzo de 2020 .
- ↑ "Guía de interfaces SCSI: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 2 de junio de 2020. Consultado el 11 de junio de 2020 .
- ↑ "Guía del desarrollador de libATA: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 30 de mayo de 2020. Consultado el 11 de junio de 2020 .
- ↑ "DRM Internals — The Linux Kernel documentation" . Kernel.org . Archivado del original el 1 de junio de 2020 . Consultado el 11 de junio de 2020 .
- ↑ "Configuración del modo del kernel (KMS) — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 11 de junio de 2020. Consultado el 11 de junio de 2020 .
- ↑ "Introducción del mecanismo de compartición de búfer DMA [ LWN.net ] " . lwn.net . Archivado del original el 11 de junio de 2020 . Recuperado el 11 de junio de 2020 .
- ↑ "Compartir búferes de CPU y GPU en Linux*" . 01.org . 12 de mayo de 2016. Archivado del original el 11 de junio de 2020. Consultado el 11 de junio de 2020 .
- ↑ "Compartición de búferes y sincronización: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 1 de junio de 2020. Consultado el 11 de junio de 2020 .
- ↑ "Acerca de mac80211" . Linux Kernel Organization, Inc. Archivado del original el 1 de febrero de 2021. Consultado el 8 de junio de 2014 .
- ↑ "Guía del desarrollador de controladores Linux 802.11 — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 19 de noviembre de 2021. Consultado el 19 de noviembre de 2021 .
- ↑ "clone(2) - Página del manual de Linux" . man7.org . Archivado del original el 15 de julio de 2020. Consultado el 15 de julio de 2020 .
- ↑ Corbet, Jonathan (5 de julio de 2019). "clone3(), fchmodat4() y fsinfo() [ LWN.net ] " . lwn.net . Archivado del original el 15 de junio de 2020 . Recuperado el 15 de julio de 2020 .
- ↑ " [ PATCH v3 1/2 ] fork: add clone3 [ LWN.net ] " . lwn.net . Archivado del original el 16 de julio de 2020 . Recuperado el 16 de julio de 2020 .
- ↑ "ld-linux.so(8) - Página del manual de Linux" . man7.org . Archivado del original el 26 de noviembre de 2020. Consultado el 18 de noviembre de 2020 .
- ↑ "nptl(7) - Página del manual de Linux" . man7.org . Archivado del original el 25 de julio de 2020. Consultado el 25 de julio de 2020 .
- ↑ "futex(7) - Página del manual de Linux" . man7.org . Archivado del original el 15 de julio de 2020. Consultado el 25 de julio de 2020 .
- ↑ Corbet, Jonathan (6 de enero de 2004). "Hilos del kernel simplificados [ LWN.net ] " . lwn.net . Archivado del original el 31 de marzo de 2020 . Recuperado el 15 de agosto de 2020 .
- 1 2 Bar, Moshe (1 de abril de 2000). "El planificador de Linux" . Linux Journal . Belltown Media, Inc. Archivado del original el 2 de febrero de 2021. Recuperado el 14 de abril de 2012 .
- ↑ BKK19-TR03 - El planificador del kernel de Linux - Descripción general , 23 de abril de 2019, archivado del original el 15 de diciembre de 2021 , consultado el 17 de mayo de 2021
- ↑ "¿Es PREEMPT_RT construido más preventivo que PREEMPT_DYNAMIC configurado en completo?" . Stack Overflow .
- 1 2 Corbet, Jonathan (21 de septiembre de 2023). "Revisando los modelos de preempción del kernel (parte 1)" . LWN.net .
- ↑ "Reduciendo la latencia en Linux: Introducción de un kernel preemptivo | Linux Journal" . Linuxjournal.com . Archivado del original el 9 de agosto de 2020. Consultado el 17 de agosto de 2020 .
- ↑ "Planificador CFS: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 1 de mayo de 2021. Consultado el 1 de mayo de 2021 .
- ↑ "Estándar IEEE para tecnología de la información: interfaz de sistema operativo portátil, POSIX.1b, extensiones en tiempo real (IEEE Std 1003.1b-1993)" . Archivado del original el 16 de noviembre de 2010. Recuperado el 17 de marzo de 2016 .
- ↑ Larabel, Michael (24 de enero de 2014). "El kernel de Linux 3.14 ya tiene muchas características interesantes" . Phoronix . Archivado del original el 13 de agosto de 2020. Recuperado el 3 de febrero de 2014 .
- ↑ "Núcleo de Linux 3.14, Sección 1.1. Clase de planificación Deadline para una mejor planificación en tiempo real" . kernelnewbies.org . 30 de marzo de 2014. Archivado del original el 15 de enero de 2021. Consultado el 2 de abril de 2014 .
- ↑ "Diseño de implementación de RT-mutex — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 26 de noviembre de 2021. Consultado el 17 de diciembre de 2021 .
- ↑ "Subsistema RT-mutex con soporte PI — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 26 de noviembre de 2021. Consultado el 17 de diciembre de 2021 .
- ↑ McKenney, Paul (10 de agosto de 2005). "Una visión general de la preempción en tiempo real" . LWN.net . Archivado del original el 10 de agosto de 2020. Recuperado el 5 de febrero de 2012 .
- ↑ "Proyecto OSADL: Linux en tiempo real" . OSADL . Archivado del original el 4 de febrero de 2021. Consultado el 5 de febrero de 2012 .
- 1 2 Rostedt, Steven (24 de octubre de 2018). "El tiempo real llegará a Linux. ¿Qué significa eso para usted?" (PDF) . Archivado (PDF) del original el 27 de julio de 2025. Recuperado el 10 de agosto de 2025 .
- ↑ "El planificador EEVDF podría estar listo para su lanzamiento con Linux 6.6" . Phoronix . Archivado del original el 29 de agosto de 2023. Consultado el 31 de agosto de 2023 .
- ↑ " [ PATCH 00/10 ] sched: EEVDF usando latency-nice [ LWN.net ] " . LWN.net . Archivado del original el 2 de septiembre de 2023 . Recuperado el 10 de septiembre de 2023 .
- ↑ Corbet, Jonathan (9 de marzo de 2023). "Un planificador de CPU EEVDF para Linux [ LWN.net ] " . LWN.net . Archivado del original el 1 de septiembre de 2023 . Recuperado el 31 de agosto de 2023 .
- ↑ "Bloqueo — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 23 de enero de 2022. Consultado el 17 de diciembre de 2021 .
- ↑ "locking.rst - Documentación/kernel-hacking/locking.rst - Código fuente de Linux (v5.11.10) - Bootlin" . elixir.bootlin.com . Archivado del original el 14 de abril de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ McKenney, Paul (17 de diciembre de 2007). "¿Qué es RCU, fundamentalmente? [ LWN.net ] " . lwn.net . Archivado del original el 4 de mayo de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ McKenney, Paul (24 de diciembre de 2007). "¿Qué es RCU? Parte 2: Uso [ LWN.net ] " . lwn.net . Archivado del original el 8 de marzo de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ McKenney, Paul (7 de enero de 2008). "RCU parte 3: la API de RCU [ LWN.net ] " . lwn.net . Archivado del original el 22 de marzo de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ "Modelo de memoria del kernel de Linux" . open-std.org . Consultado el 29 de marzo de 2021 .
- ↑ "Un modelo formal de ordenación de memoria del núcleo (parte 1) [ LWN.net ] " . lwn.net . Archivado del original el 14 de abril de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ "Un modelo formal de ordenación de memoria del núcleo (parte 2) [ LWN.net ] " . lwn.net . Archivado del original el 14 de abril de 2021 . Recuperado el 29 de marzo de 2021 .
- ↑ Stern, Alan. "Explicación del modelo de consistencia de memoria del kernel de Linux" . Archivado del original el 14 de abril de 2021. Recuperado el 29 de marzo de 2021 .
- ↑ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux" . git.kernel.org . Archivado del original el 10 de noviembre de 2021. Consultado el 17 de diciembre de 2021 .
- 1 2 "Tipos de bloqueo y sus reglas — La documentación del kernel de Linux" . Kernel.org . Archivado del original el 4 de noviembre de 2021. Recuperado el 17 de diciembre de 2021 .
- ↑ Corbet, Jonathan (16 de agosto de 2021). "Temas breves: tiempo real, Futexes y ntfs3" . Lwn.net . Archivado del original el 8 de diciembre de 2022. Recuperado el 20 de febrero de 2022 .
- ↑ "Subsistema RT-mutex con soporte PI — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 18 de marzo de 2022. Consultado el 20 de febrero de 2022 .
- ↑ "Diseño de implementación de RT-mutex: la documentación del kernel de Linux" . Archivado del original el 16 de junio de 2020. Consultado el 27 de noviembre de 2021 .
- ↑ "Validador de corrección de bloqueo en tiempo de ejecución — Documentación del kernel de Linux" . Kernel.org . Archivado del original el 15 de diciembre de 2021. Consultado el 17 de diciembre de 2021 .
- ↑ Corbet, Jonathan (3 de marzo de 2009). "Interrupciones, subprocesos y lockdep [ LWN.net ] " . lwn.net . Archivado del original el 27 de noviembre de 2021 . Recuperado el 17 de diciembre de 2021 .
- 1 2 "Memoria física: la documentación del kernel de Linux" . docs.kernel.org . Archivado del original el 29 de enero de 2025. Consultado el 26 de enero de 2025 .
- ↑ "Tablas de páginas — Documentación del kernel de Linux" . www.kernel.org . Consultado el 21 de julio de 2024 .
- ↑ "Memoria física: la documentación del kernel de Linux" . www.kernel.org . Archivado del original el 22 de julio de 2024. Consultado el 21 de julio de 2024 .
- ↑ "Diagrama de la pila de almacenamiento de Linux" . Thomas-krenn.com . Archivado del original el 3 de agosto de 2020. Consultado el 19 de marzo de 2020 .
- ↑ Corbet, Jonathan (11 de abril de 2007). "El asignador SLUB" . Lwn.net . Archivado del original el 9 de marzo de 2022. Recuperado el 20 de febrero de 2022 .
- 1 2 "Asignadores de bloques en el kernel de Linux: SLAB, SLOB, SLUB" (PDF) . Events.static.linuxfound.org . Consultado el 20 de febrero de 2022 .
- ↑ Corbet, Jonathan (28 de abril de 2023). "6.4 Ventana de fusión, parte 1 [ LWN.net ] " . LWN.net . Archivado del original el 12 de mayo de 2023 . Recuperado el 12 de mayo de 2023 .
- ↑ Corbet, Jonathan (12 de enero de 2024). "La primera mitad de la ventana de fusión 6.8 [ LWN.net ] " . lwn.net . Archivado del original el 15 de septiembre de 2024 . Recuperado el 21 de julio de 2024 .
- ↑ "Kernel/Git/Torvalds/Linux.git - Árbol de código fuente del kernel de Linux" . Git.kernel.org . Archivado del original el 10 de noviembre de 2021. Consultado el 10 de noviembre de 2021 .
- ↑ "El Superbloque (Guía de administración del sistema: Administración básica)" . docs.oracle.com . Archivado del original el 29 de enero de 2025. Consultado el 26 de enero de 2025 .
- 1 2 3 Torvalds, Linus (enero de 1999). "The Linux Edge" . Open Sources: Voices from the Open Source Revolution . O'Reilly . ISBN 1-56592-582-3Consultado el 13 de octubre de 2013 .
- ↑ "Adaptación de Linux al DEC Alpha: El núcleo y el shell" . Archivado del original el 5 de septiembre de 2019. Consultado el 5 de octubre de 2019 .
- ↑ "Linux en Alpha: Una elección estratégica" . Archivado del original el 4 de septiembre de 2019. Consultado el 5 de octubre de 2019 .
- ↑ "Avalon Cluster | TOP500 Supercomputer Sites" . Top500.org . Archivado del original el 5 de octubre de 2019. Consultado el 5 de octubre de 2019 .
- ↑ Wang, David (6 de mayo de 2010). "Android ahora funciona en iPhone 3G" . TechHive . IDG . Archivado del original el 22 de julio de 2010. Recuperado el 11 de julio de 2010 .
- ↑ "LKDDb" . Proyecto LKDDb. Archivado del original el 25 de febrero de 2021. Consultado el 26 de enero de 2021 .
- ↑ "Hardware Linux" . Proyecto de hardware Linux. Archivado del original el 26 de enero de 2021. Consultado el 26 de enero de 2021 .
- ↑ Mookhey, KK; Burghate, Nilesh (1 de julio de 2005). Linux: Security, Audit and Control Features . EE. UU.: ISACA . pág. 14. ISBN 1-893209-78-4LCCN 2005284667 . OCLC 69327696 . OL 12217098M . Archivado del original el 2 de junio de 2013 . Recuperado el 31 de diciembre de 2010 .
- ↑ Hatch, Brian (15 de julio de 2008). Hacking Exposed Linux: Linux Security Secrets and Solutions . McGraw-Hill Osborne Media . pág. 524. ISBN 978-0-07-226257-5. OCLC 234073834 . OL 9585473M . Archivado del original el 2 de junio de 2013 . Recuperado el 31 de diciembre de 2010 .
- ↑ Jaeger, Trent (7 de octubre de 2008). Seguridad de sistemas operativos . Morgan and Claypool Publishers. pág. 122. ISBN 978-1-59829-212-1. OCLC 141384425 . OL 12496480M . Archivado del original el 2 de junio de 2013 . Recuperado el 31 de diciembre de 2010 .
- ↑ Corbet, Jonathan (21 de febrero de 2020). "CAP_PERFMON — y nuevas capacidades en general" . lwn.net . Archivado del original el 4 de agosto de 2020. Recuperado el 2 de agosto de 2020 .
- ↑ "Uso del módulo de seguridad de Linux" . Documentación del kernel de Linux . Archivado del original el 2 de mayo de 2020. Consultado el 10 de enero de 2020 .
- ↑ "Preguntas frecuentes sobre SELinux (FAQ)" . Agencia de Seguridad Nacional . Archivado del original el 18 de septiembre de 2019. Consultado el 10 de enero de 2020 .
- ↑ "Seccomp BPF (SECure COMPuting with filters)" . Documentación del kernel de Linux . Archivado del original el 7 de marzo de 2020. Consultado el 10 de enero de 2020 .
- ↑ Andrews, Jeremy (16 de julio de 2008). "Errores de seguridad y divulgación completa" . KernelTrap . Archivado del original el 19 de julio de 2008. Recuperado el 31 de diciembre de 2010 .
- ↑ Spengler, Brad (16 de julio de 2008). "La política no oficial de seguridad por encubrimiento de Linux" . Full Disclosure (Lista de correo). Archivado del original el 7 de agosto de 2020. Recuperado el 31 de diciembre de 2010 .
- ↑ "NVD – CVE-2024-50264" . nvd.nist.gov . 18 de noviembre de 2024. Consultado el 11 de septiembre de 2025 .
- ↑ "CVE-2024-50264" . Ubuntu . 19 de noviembre de 2024. Consultado el 11 de septiembre de 2025 .
- ↑ "CVE-2024-50264" . cve.org . 19 de noviembre de 2024. Consultado el 11 de septiembre de 2025 .
- 1 2 Yamagata, Hiroo (3 de agosto de 1997). "El pragmatista del software libre" . HotWired . Archivado del original el 10 de febrero de 2007. Recuperado el 21 de febrero de 2007 .
- ↑ "GPL-v2" . gnu.org . Archivado del original el 25 de diciembre de 2019. Consultado el 28 de enero de 2020 .
- ↑ Corbet, Jonathan (31 de enero de 2006). "GPLv3 y el kernel" . LWN.net . Archivado del original el 10 de agosto de 2020. Recuperado el 21 de febrero de 2007 .
- ↑ Torvalds, Linus (8 de septiembre de 2000). "Linux-2.4.0-test8" . LKML (Lista de correo). Archivado del original el 15 de mayo de 2020. Recuperado el 21 de febrero de 2007 .
- ↑ "gnu.org" . Gnu.org . Archivado del original el 2 de febrero de 2021. Consultado el 18 de octubre de 2017 .
- ↑ Cox, Alan (20 de enero de 2006). "Re: GPL V3 y Linux" . LKML (Lista de correo). Archivado del original el 26 de enero de 2021. Recuperado el 21 de febrero de 2007 .
- ↑ Shankland, Stephen (25 de septiembre de 2006). "Los mejores programadores de Linux critican duramente la GPL 3" . News.com . CNET . Consultado el 21 de febrero de 2007 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 James EJ Bottomley; Mauro Carvalho Chehab; Thomas Gleixner; Christoph Hellwig; Dave Jones; Greg Kroah-Hartman; Tony Luck; Andrew Morton; Trond Myklebust; David Woodhouse (15 de septiembre de 2006). "Posición de los desarrolladores del kernel sobre GPLv3: Los peligros y problemas de GPLv3" . LWN.net . Archivado del original el 18 de enero de 2021. Recuperado el 11 de marzo de 2015 .
- ↑ Petreley, Nicholas (27 de septiembre de 2006). "¿Una lucha contra el mal o una lucha por llamar la atención?" . linuxjournal.com. Archivado del original el 2 de marzo de 2018. Recuperado el 11 de marzo de 2015 .
- ↑ "Linus Torvalds afirma que la GPL v3 viola todo lo que defendía la GPLv2" . Debconf 2014. 2014. Archivado del original el 8 de mayo de 2018. Consultado el 21 de marzo de 2018 .
- ↑ Clark, Rob; Semwal, Sumit (1 de noviembre de 2012). "Marco de uso compartido de búfer DMA: una introducción" (PDF) . Embedded Linux Conference. Archivado (PDF) del original el 8 de agosto de 2014. Recuperado el 2 de agosto de 2014 .
- ↑ Cox, Alan (10 de octubre de 2012). " [ PATCH ] dma-buf: Use EXPORT_SYMBOL" . Direct Rendering Infrastructure (Lista de correo). Archivado del original el 22 de enero de 2013. Recuperado el 3 de septiembre de 2013 .
- ↑ Torvalds, Linus (10 de diciembre de 2003). "RE: ¿Cláusula de excepción de la GPL de Linux y del módulo binario?" . LKML (Lista de correo). Archivado del original el 15 de junio de 2011. Recuperado el 31 de diciembre de 2010 .
- ↑ Torvalds, Linus (3 de diciembre de 2003). "Re: ¿Cláusula de excepción de la GPL de Linux y del módulo binario?" . LKML (Lista de correo). Archivado del original el 28 de abril de 2020. Recuperado el 12 de noviembre de 2010 .
- ↑ "Núcleos contaminados: la documentación del núcleo de Linux" . Kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 13 de enero de 2020 .
- ↑ "API de firmware de Linux: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 13 de enero de 2020. Consultado el 13 de enero de 2020 .
- ↑ "Firmware integrado: la documentación del kernel de Linux" . Kernel.org . Archivado del original el 10 de junio de 2020. Consultado el 10 de junio de 2020 .
- ↑ "Registro de Linux TM en EE. UU." . uspto.gov . Archivado del original el 24 de febrero de 2021 . Consultado el 6 de septiembre de 2019 .
- ↑ "Registro de Linux TM en la UE" . euipo.europa.eu . Archivado del original el 9 de junio de 2016. Consultado el 28 de noviembre de 2020 .
- ↑ Hughes, Phil (1 de agosto de 1997). "Disputa por la marca registrada de Linux" . Linux Journal . Belltown Media, Inc. Archivado del original el 30 de abril de 2010. Recuperado el 8 de diciembre de 2010 .
- ↑ Hughes, Phil (1 de marzo de 1997). "Acción tomada sobre la marca registrada Linux" . Linux Journal . Belltown Media, Inc. Archivado del original el 3 de marzo de 2010. Recuperado el 8 de diciembre de 2010 .
- ↑ Gisselberg, Tonya (2010). "Historia de la marca registrada de Linux, el sistema operativo" (PDF) . Gisselberg Law Firm, Inc. Archivado del original (PDF) el 11 de julio de 2011. Recuperado el 8 de diciembre de 2010 .
- ↑ Kroah-Hartman, Greg . " [ PARCHE ] MANTENEDORES: Eliminar algunas entradas debido a diversos requisitos de cumplimiento" . Lista de correo del kernel de Linux (Lista de correo) . Consultado el 11 de agosto de 2025 .
- ↑ Purdy, Kevin (24 de octubre de 2024). "La expulsión de programadores rusos genera debate sobre la política del kernel de Linux" . Ars Technica . Consultado el 18 de noviembre de 2024 .
- ↑ Torvalds, Linus (23 de octubre de 2024). "Re: [ PARCHE ] Revertir "MANTENEDORES: Eliminar algunas entradas debido a diversos requisitos de cumplimiento."" . Lista de correo del kernel de Linux (Lista de correo) . Consultado el 11 de agosto de 2025 .
- ↑ Bottomley, James (24 de octubre de 2024). "Re: linux: Adiós de un voluntario de la comunidad Linux" . Lista de correo del kernel de Linux (Lista de correo) . Recuperado el 11 de agosto de 2025 .
Lecturas adicionales
- Torvalds, Linus; Diamond, David (2001). Solo por diversión: La historia de un revolucionario accidental . HarperBusiness . ISBN 978-0066620732.
- Bezroukov, Nikolai. «Cap. 4: Un dictador benevolente» . Retratos de pioneros del código abierto (libro electrónico). Softpanorama. Archivado del original el 13 de octubre de 2005. Recuperado el 3 de octubre de 2005 .
- Corbet, Jonathan (16 de octubre de 2003). "LinkSys y módulos binarios" . Edición semanal de LWN.net. Archivado del original el 1 de agosto de 2016. Consultado el 21 de julio de 2016 .
- "La mascota favorita de Linux para todos" . Archivado del original el 16 de agosto de 2005. Consultado el 16 de junio de 2005 .
- Pranevich, Joseph (diciembre de 2003). "El maravilloso mundo de Linux 2.6" . Archivado del original el 16 de julio de 2003.
- "Cambios en Linux" . Archivado del original el 31 de octubre de 2005. Consultado el 31 de octubre de 2005 .
- "Documento de seminario sobre el núcleo Linux 2.6" . Archivado del original el 2 de febrero de 2007.
- "Controladores de dispositivos Linux" (3.ª ed.). Archivado del original el 27 de julio de 2016. Consultado el 21 de julio de 2016 .
- Comprensión del núcleo de Linux (Libro) (3.ª ed.). ISBN 978-0-596-00565-8Archivado del original el 17 de diciembre de 2005. Consultado el 22 de diciembre de 2005 .
- Rosen, Rami (2014). Linux Kernel Networking (PDF) . Berkeley, CA: Apress. doi : 10.1007/978-1-4302-6197-1 . ISBN 978-1-4302-6196-4Consultado el 10 de agosto de 2025 .
- "Linux: La GPL y los módulos binarios" . Archivado del original el 23 de julio de 2005.
- "Anatomía del núcleo Linux" . IBM . Archivado del original el 27 de junio de 2007. Consultado el 9 de junio de 2007 .
- Tanenbaum, Andrew; Bos, Herbert (2015). Sistemas operativos modernos . Estados Unidos de América: Pearson. pág. 722. ISBN 9781292061429OCLC 892574803
Enlaces externos
- Sitio web oficial

- Índice de la documentación del kernel de Linux
- Páginas man del kernel de Linux
- Bugzilla del kernel y regresiones para cada versión reciente del kernel.
- Kernel Newbies , una fuente de información diversa relacionada con el kernel.
- Cobertura del kernel en LWN.net , una fuente autorizada de información relacionada con el kernel.
- Elixir Cross Referencer de Bootlin , una herramienta de referencia cruzada de código fuente del kernel de Linux.
- Greg Kroah Hartman habla sobre el kernel de Linux en YouTube.
- Sistema de archivos virtual , implementación genérica del sistema de archivos de Linux