Núcleo Linux: Historia y Desarrollo
Núcleo Linux: Historia y Desarrollo
Darwin y GNU Hurd tienen núcleos que son una versión de Mach. CVE-2016-9178
Minix, sistema operativo en el que se basó inicialmente Linux, CVE-2016-9120
también es micronúcleo. Todos ellos tienen en común el traslado de CVE-2016-9084
parte de la funcionalidad en espacio privilegiado a espacio de
CVE-2016-9083
usuario.
CVE-2016-8666
CVE-2016-8660
Sistema operativo CVE-2016-8658
Historia CVE-2016-4557
CVE-2016-4486
En abril de 1991,2 Linus Torvalds, de 21 años, empezó a trabajar en CVE-2016-4485
unas simples ideas para un núcleo de un sistema operativo. Comenzó CVE-2016-4482
intentando obtener un núcleo de sistema operativo gratuito similar a
CVE-2016-4470
Unix que funcionara con microprocesadores Intel 80386. Para ello
tomó como base al sistema Minix (un clon de Unix) e hizo un núcleo CVE-2016-4440
monolítico compatible que inicialmente requería software de Minix CVE-2016-3955
para funcionar.4 El 26 de agosto de 1991 Torvalds escribió en el CVE-2016-3951
grupo de noticias [Link] CVE-2016-3841
CVE-2016-3713
"Estoy haciendo un sistema operativo (gratuito, solo un CVE-2016-3699
pasatiempo, no será nada grande ni profesional como GNU) CVE-2016-3689
para clones AT 386(486). Llevo en ello desde abril y está
empezando a estar listo. Me gustaría saber su opinión sobre las CVE-2016-3672
cosas que les gustan o disgustan en minix, ya que mi SO tiene CVE-2016-3156
algún parecido con él.[...] Actualmente he portado bash(1.08)
y gcc(1.40), y parece que las cosas funcionan. Esto implica CVE-2016-3140
que tendré algo práctico dentro de unos meses..." CVE-2016-3139
CVE-2016-3138
Kernel panic
En Linux, un panic es un error casi siempre insalvable del sistema detectado por el núcleo en oposición a los errores
similares detectados en el código del espacio de usuario. Es posible para el código del núcleo indicar estas condiciones
mediante una llamada a la función de pánico situada en el archivo header sys/systm.h. Sin embargo, la mayoría de las alertas
son el resultado de excepciones en el código del núcleo que el procesador no puede manejar, como referencias a direcciones
de memorias inválidas. Generalmente esto es indicador de la existencia de un bug en algún lugar de la cadena de alerta.
También pueden indicar un fallo en el hardware como un fallo de la RAM o errores en
las funciones aritméticas en el procesador, o por un error en el software. En muchas
ocasiones es posible reiniciar o apagar adecuadamente el núcleo mediante una
combinación de teclas como ALT+SysRq+REISUB.
Lenguajes de programación
Aun cuando Linus Torvalds no ideó originalmente Linux como un núcleo portable, ha
evolucionado en esa dirección. Linux es ahora de hecho, uno de los núcleos más
ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una
handheld) hasta un zSeries (un mainframe masivo). Linux se ha convertido en el
sistema operativo principal de las supercomputadoras de IBM, Blue Gene, lo cual ha
reducido los costos e incrementado considerablemente el rendimiento.21
De todos modos, es importante notar que los esfuerzos de Torvalds también estaban
dirigidos a un tipo diferente de portabilidad. Según su punto de vista, la portabilidad es
la habilidad de compilar fácilmente en un sistema aplicaciones de los orígenes más
diversos; así, la popularidad original de Linux se debió en parte al poco esfuerzo
necesario para tener funcionando las aplicaciones favoritas de todos, ya sean software
libre o de código abierto. iPod ejecutando un núcleo Linux.
Las arquitecturas principales soportadas por Linux son DEC Alpha, ARM, AVR32,
Blackfin, ETRAX CRIS, FR-V, H8, IA64, M32R, m68k, MicroBlaze, MIPS, MN10300, PA-RISC, PowerPC,
System/390, SuperH, SPARC, x86, x86 64 y Xtensa22
Linux dispone de una arquitectura ficticia llamada «User Mode Linux» (UML). Esta arquitectura permite ejecutar Linux
como un proceso más en espacio de usuario. Los procesos ejecutados bajo UML tienen la visión de una máquina propia
disponible para ellos.
Seguridad
Dispone de una interfaz para crear módulos de seguridad llamada Linux Security Module. Con esta interfaz se pueden crear
módulos para aplicar control de acceso obligatorio (MAC, Mandatory Access Control).23
Versiones
Más allá de haber desarrollado su propio código y de integrar los cambios
realizados por otros programas, Linus Torvalds continúa lanzando nuevas
versiones del núcleo Linux. Estos son llamados núcleos “vanilla”, lo que
significa que no han sido modificados por nadie.
Numeración
La versión del núcleo Linux original constaba de cuatro números. Por Infografía del Núcleo Linux
ejemplo, asumamos que el número de la versión está compuesta de esta
forma: A.B.C[.D] (ej.: 2.2.1, 2.4.13 o [Link]).
El número A denota la versión del núcleo. Es el que cambia con menor frecuencia y solo lo hace cuando
se produce un gran cambio en el código o en el concepto del núcleo. Históricamente solo ha sido
modificado cinco veces: en 2004 (versión 1.0), en 2006 (versión 2.0), en 2011 (versión 3.0), en 2015
(versión 4.0) y en 2019 (versión 5.0).
El número B denota la subversión del núcleo.
Antes de la serie de Linux 2.6.x, los números pares indicaban la versión “estable” lanzada. Por ejemplo
una para uso en producción, como el 1.2, 2.4 o 2.6. Los números impares, en cambio, como la serie
2.5.x, son versiones de desarrollo, es decir que no son consideradas de producción.
Comenzando con la serie Linux 2.6.x, no hay gran diferencia entre los números pares o impares con
respecto a las nuevas herramientas desarrolladas en la misma serie del núcleo. Linus Torvalds
dictaminó que este será el modelo en el futuro.
El número C indica una revisión mayor en el núcleo. En la forma anterior de versiones con tres números,
esto fue cambiado cuando se implementaron en el núcleo los parches de seguridad, bugfixes, nuevas
características o drivers. Con la nueva política, solo es cambiado cuando se introducen nuevos
controladores o características; cambios menores se reflejan en el número D.
El número D se produjo cuando un grave error, que requiere de un arreglo inmediato, se encontró en el
código NFS de la versión 2.6.8. Sin embargo, no había otros cambios como para lanzar una nueva
revisión (la cual hubiera sido 2.6.9). Entonces se lanzó la versión [Link], con el error arreglado como
único cambio. Con 2.6.11, esto fue adoptado como la nueva política de versiones. Bug-fixes y parches de
seguridad son actualmente manejados por el cuarto número dejando los cambios mayores para el número
C.
También, algunas veces luego de las versiones puede haber algunas letras como “rc1” o “mm2”. El “rc” se refiere a release
candidate e indica un lanzamiento no oficial. Otras letras usualmente (pero no siempre) hacen referencia a las iniciales de la
persona. Esto indica una bifurcación en el desarrollo del núcleo realizado por esa persona, por ejemplo ck se refiere a Con
Kolivas, ac a Alan Cox, mientras que mm se refiere a Andrew Morton.
El modelo de desarrollo para Linux 2.6 fue un cambio significativo desde el modelo de desarrollo de Linux 2.5.
Previamente existía una rama estable (2.4) donde se habían producido cambios menores y seguros, y una rama inestable
(2.5) donde estaban permitidos cambios mayores. Esto significó que los usuarios siempre tenían una versión 2.4 a prueba de
fallos y con lo último en seguridad y casi libre de errores, aunque tuvieran que esperar por las características de la rama 2.5.
La rama 2.5 fue finalmente declarada estable y renombrada como 2.6. Pero en vez de abrir una rama 2.7 inestable, los
desarrolladores de núcleos eligieron continuar agregando los cambios en la rama “estable” 2.6. De esta forma no había que
seguir manteniendo una rama vieja pero estable y se podía hacer que las nuevas características estuvieran rápidamente
disponibles y se pudieran realizar más pruebas con el último código.
Sin embargo, el modelo de desarrollo del nuevo 2.6 también significó que no había una rama estable para aquellos que
esperaban seguridad y bug fixes sin necesitar las últimas características. Los arreglos solo estaban en la última versión, así
que si un usuario quería una versión con todos los bug fixed conocidos también tendría las últimas características, las cuales
no habían sido bien probadas. Una solución parcial para esto fue la versión ya mencionada de cuatro números (y en
2.6.x.y), la cual significaba lanzamientos puntuales creados por el equipo estable (Greg Kroah-Hartman, Chris Wright, y
quizás otros). El equipo estable solo lanzaba actualizaciones para el núcleo más reciente, sin embargo esto no solucionó el
problema del faltante de una serie estable de núcleo. Distribuidores de Linux, como Red Hat y Debian, mantienen los
núcleos que salen con sus lanzamientos, de forma que una solución para algunas personas es seguir el núcleo de una
distribución.
Como respuesta a la falta de un núcleo estable y de gente que coordinara la colección de corrección de errores, en diciembre
de 2005 Adrian Bunk anunció que continuaría lanzando núcleos 2.6.16 aun cuando el equipo estable lanzara 2.6.17.
Además pensó en incluir actualizaciones de controladores, haciendo que el mantenimiento de la serie 2.6.16 sea muy
parecido a las viejas reglas de mantenimiento para las serie estables como 2.4. El núcleo 2.6.16 será reemplazado
próximamente por el 2.6.27 como núcleo estable en mantenimiento durante varios años.
Dado el nuevo modelo de desarrollo, que mantuvo fija la subversión de 2.6, tras la realización del Linux Kernel Summit de
ese año, Linus Torvalds decidió modificar el sistema de numeración. Se han sustituido los dos primeros números por una
única cifra, de forma que Linux 2.6.39 fue seguida por Linux 3.024
Fechas de publicación
La primera versión del kernel Linux (0.01) fue lanzada el 17 de septiembre de 1991. Tras más de 30 años de desarrollo,
actualmente la última versióne estable corresponde a la 5.16, lanzada el 9 de febrero del 202225 .
8 desarrolladores principales
Linux-libre
Sharp Zaurus, un computador de
Linux es mayormente software libre tal y como se distribuye desde su web y bolsillo con Linux.
repositorio Git. Sin embargo hay fragmentos de código privativo que son empleados
para hacer funcionar los dispositivos de un computador. Por ello Linux no ha podido
ser integrado como un paquete de GNU. La Fundación del Software Libre de América Latina decidió crear y mantener una
bifurcación completamente libre llamada Linux-libre. Esta versión de Linux no incluye ningún complemento de código
cerrado ni funciones ofuscadas que integran binarios en su código. La inclusión de estos binarios en el código de Linux no
incumple la licencia GPL Versión 2 que usa Linux. Dicha licencia fue actualizada para evitar este tipo de uso privativo de la
licencia, parecido a lo que ocurre con los dispositivos TiVo. La nueva licencia es la GPL Versión 3.29
Derechos reservados
Inicialmente, Torvalds distribuyó Linux bajo los términos de una licencia que prohibía la explotación comercial. Pero esta
licencia fue reemplazada, poco tiempo después, por la GNU GPL (versión 2 exclusivamente). Los términos de esta última
licencia permiten la distribución y venta de copias o incluso modificaciones, pero requiere que todas las copias del trabajo
original y trabajos de autoría derivados del original sean publicados bajo los mismos términos, y que el código fuente
siempre pueda obtenerse por el mismo medio que el programa licenciado.
Torvalds se ha referido a haber licenciado Linux bajo la GPL como "la mejor cosa que he hecho" (en inglés, "the best thing
I ever did").30
Sin embargo, la versión oficial del núcleo Linux contiene firmware de código cerrado,31 por ello, el Proyecto Linux-libre,
auspiciado por la FSFLA, publica y mantiene versiones modificadas del núcleo Linux a las que se les ha quitado todo el
software no libre.
Marca
A día de hoy, Linux es una marca registrada de Linus Torvalds en los Estados Unidos.32
Hasta 1994 nadie registró la marca Linux en Estados Unidos. El 15 de agosto de 1994 cuando William R. Della Croce, Jr.
registró la marca Linux, pidió el pago de regalías a los distribuidores de Linux. En 1996, Torvalds y algunas organizaciones
afectadas denunciaron a Della Croce y en 1997 el caso se cerró y la marca fue asignada a Torvalds.33
Desde entonces, el Linux Mark Institute gestiona la marca. En 2005 el LMI envió algunas cartas a empresas distribuidoras
de Linux exigiendo el pago de una cuota por el uso comercial del nombre. Esto es así porque la legislación estadounidense
exige que el dueño de una marca la defienda, por lo que se tuvo que pedir dinero por usar la marca Linux, algunas
compañías de forma totalmente voluntaria han cumplido con dicha exigencia, a sabiendas de que dicho dinero se iba a usar
para caridad o defender la marca Linux.34
Críticas
Soporte de hardware
El núcleo Linux ha sido criticado con frecuencia por falta de controladores para cierto hardware de computadoras de
escritorio. Sin embargo, el progresivo incremento en la adopción de Linux en el escritorio ha mejorado el soporte de
hardware por parte de terceros o de los propios fabricantes, provocando que, en los últimos años, los problemas de
compatibilidad se reduzcan.
Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell o MIPS Technologies35 tienen programadores en el equipo
de desarrolladores del núcleo Linux que se encargan de mantener los controladores para el hardware que fabrican. A este
grupo de programadores también se le suman los que proveen grandes distribuidores de soluciones Linux como Novell o
Red Hat.
Arquitectura monolítica
...Linux es un sistema monolítico. Esto es retroceder un paso gigante hacia la década de 1970. Es como tomar un
programa existente escrito en C y reescribirlo en BASIC. Para mí, escribir un sistema monolítico en 1991 es
verdaderamente una idea pobre.36
Véase también
Portal:Linux. Contenido relacionado con Linux.
Portal:Software Libre. Contenido relacionado con Software Libre.
Historia de Linux
GNU/Linux (el sistema operativo que combina el software GNU, licencia GPL, con el núcleo Linux).
Linux-libre
Disputas de SCO sobre Linux
GNU GRUB
Glibc
Llamada al sistema
LinuxDNA
Linux From Scratch
Proceso de arranque en Linux
Shell (informática)
Qlinux
Referencias
3. «The linux-kernel mailing list FAQ: Why is the
1. «The Linux Kernel Mailing List Archive» ([Link]
Linux kernel written in C/assembly?» ([Link]
[Link]) (en inglés). Consultado el 30 de julio [Link]/web/20160701221623/[Link]
de 2020. g/lkml/#s15-1). [Link] (en inglés). Archivado
2. «Sobre Linux» ([Link] desde el original ([Link] el
x). [Link]. Consultado el 19 de julio de 2012. 1 de julio de 2016. Consultado el 22 de mayo de
2013.
4. Linus Torvalds (1991). «Notes for linux release 15. Linus Torvalds (30 de mayo de 2011). «Linux 3.0-
0.01» ([Link] rc1» ([Link]
oric/old-versions/RELNOTES-0.01) (en inglés). 7/[Link]
Consultado el 11 de junio de 2017. 147415). Archivado desde el original ([Link]
5. [Link], ed. (16 de octubre de 2002). [Link]/[Link]/1147415) el 31
«kernel/git/stable/[Link]» ([Link] de mayo de 2011. Consultado el 30 de mayo de
oday/20130113003817/[Link] 2011.
x/kernel/git/stable/[Link];a=blob;f=firmwar 16. Linus Torvalds (21 de julio de 2011). «Linux 3
e/WHENCE;hb=HEAD). Archivado desde el Pushed Out - Linus Torvalds Google Plus Profile»
original ([Link] ([Link]
ble/[Link];a=blob;f=firmware/WHENCE;hb 2/posts/CJpyYdCqBL8). Consultado el 27 de julio
=HEAD) el 13 de enero de 2013. Consultado el 21 de 2011.
de agosto de 2012. «path: 17. «Linux Kernel 5.8» ([Link]
root/firmware/WHENCE ». s/blog/linux-kernel-5-8/).
6. Linus Torvalds (25 de septiembre de 2006). «Re: 18. GNU/Linux Kernel Híbrido ([Link]
GPLv3 Position Statement» ([Link] o/software/gnulinux-kernel-hibrido/) (en español)
06/9/25/161) (en inglés). Consultado el 22 de 19. Resumen de la afamada discusión entre Linus
mayo de 2013. Torvalds y Andrew Tanenbaum ([Link]
7. Marjorie Richardson (1 de noviembre de 1999). [Link]/web/20140621054711/[Link]
«Interview: Linus Torvalds» ([Link] braham/Linus_vs_Tanenbaum.html) (en inglés)
[Link]/article/3655). Linux Journal (en inglés).
20. Organización de los directorios en Linux ([Link]
Consultado el 20 de agosto de 2009.
[Link]/node/112)
8. «Free as in Freedom by Sam Williams. O'Reilly
21. «IBM100 - Blue Gene - Technical Breakthroughs»
books, 2002» ([Link]
([Link]
edom/[Link]). [Link]. Consultado el 12 de cons/bluegene/breakthroughs/) (en inglés).
noviembre de 2010. Consultado el 22 de diciembre de 2016.
9. Greg Kroah-Hartman (abril de 2008). «Linux 22. /pub/scm / linux/kernel/git/torvalds/[Link] /
Kernel Development: How Fast it is Going, Who is tree ([Link]
Doing It, What They are Doing, and Who is
s/[Link];a=tree;f=arch;h=3ce1e42a1a3b8642
Sponsoring It» ([Link]
8b2511152d21dd5fefb27c6e;hb=HEAD)
912023947/[Link]
lf_kernel_development_2012.pdf) (en inglés). 23. «Linux Security Module Usage — The Linux
Archivado desde el original ([Link] Kernel documentation» ([Link]
[Link]/who-writes-linux-2012) el 12 de septiembre c/html/v4.13/admin-guide/LSM/). [Link]
de 2019. Consultado el 24 de mayo de 2013. (en inglés). Consultado el 26 de octubre de 2017.
«Since 2005, over 3700 individual developers from 24. 29 de mayo de 2011, anuncio de Linux 3.0-rc1 (htt
over 200 different companies have contributed to ps://[Link]/lkml/2011/5/29/204).
the kernel. » 25. [Link]
10. Linus Torvalds (11 de junio de 2017). «Linux 26. «Copia archivada» ([Link]
kernel release 4.x <[Link] ([Link] 120630123427/[Link]
[Link]/pub/scm/linux/kernel/git/torvalds/[Link]/ s-media/announcements/2012/04/linux-foundation-
tree/Documentation/admin-guide/[Link]?id= releases-annual-linux-development-report).
32c1431eea4881a6b17bd7c639315010aeefa452) Archivado desde el original ([Link]
(en inglés). Consultado el 13 de junio de 2017. [Link]/news-media/announcements/2012/04/lin
11. Linux Journal, ed. (1 de octubre de 1994). ux-foundation-releases-annual-linux-development-
«Overview Of The Debian GNU/Linux System» (htt report) el 30 de junio de 2012. Consultado el 20 de
p://[Link]/article/2841) (en inglés). noviembre de 2012. The Linux Foundation
Consultado el 11 de junio de 2017. Releases Annual Linux Development Report
12. Linus Torvalds (25-08-1991) Message from 27. «The Linux Foundation Releases Annual Linux
discussion What would you like to see most in Development Report» ([Link]
minix? ([Link] b/20140329164331/[Link]
[Link]/dlNtH7RRrGA/SwRavCzVE7gJ) news-media/announcements/2013/09/linux-founda
Newsgroups: [Link], Google Groups (en tion-releases-annual-linux-development-report).
inglés). Archivado desde el original ([Link]
13. "Linux Kernel Data 2.6.28 ([Link] [Link]/news-media/announcements/2013/09/lin
[Link]/open/Kernel-Log-Higher-and-Further-The-in ux-foundation-releases-annual-linux-development-
novations-of-Linux-2-6-28--/features/112299/5)." report) el 29 de marzo de 2014. Consultado el 21
de marzo de 2014.
14. "Linux Kernel Data 2.6.36 ([Link]
m/open/features/What-s-new-in-Linux-2-6-36-1103 28. [Link]
[Link]?page=6)." state-of-linux-kernel-development/
29. The Linux Information Project (LINFO) (8 de enero 33. «Linux Timeline» ([Link]
de 2007). «The dangers of tivoization and the le/9065). Linux Journal. 31 de mayo de 2006.
GPLv3» ([Link] (en 34. «Linus gets tough on Linux trademark» ([Link]
inglés). Consultado el 12 de junio de 2017. [Link]/article/2671387/operating-system
30. Yamagata, Hiroo (11 de noviembre de 1997). «The s/[Link]). 5 de
Pragmatist of Free Software: Linus Torvalds septiembre de 2005. Consultado el 11 de junio de
Interview» ([Link] 2017.
84929/[Link] 35. «Who writes Linux» ([Link]
[Link]). Archivado desde el original ([Link] 0100131001507/[Link]
[Link]/linux/[Link]) el 26 de blications/[Link]). Agosto de 2009.
diciembre de 2007. Consultado el 30 de octubre Archivado desde el original ([Link]
de 2011. [Link]/publications/[Link]) el 31 de
31. «Publicado el kernel Linux-Libre 5.3» ([Link] enero de 2010.
[Link]/publicado-el-kernel-linux-libre-5-3/). 36. A. S. Tanenbaum (29 de enero de 1992), «LINUX
masGNULinuX. Consultado el 1 de febrero de is obsolete ([Link]
2020. [Link]/browse_thread/thread/c25870d7a41696d
32. «Registro en Estados Unidos No: 1916230» (http:// 2/f447530d082cd95d?tvc=2)»,
[Link]/assignments/q?db=tm&rno [Link]
=1916230). Oficina de Patentes y Marcas wse_thread/thread/c25870d7a41696d2/f447530d0
Comerciales de Estados Unidos. Consultado el 30 82cd95d?tvc=2, consultado el 30 de octubre de
de octubre de 2011. 2011.
Enlaces externos
Wikimedia Commons alberga una galería multimedia sobre Núcleo Linux.
Sitio web oficial de Linux ([Link]
Código fuente completo de varias versiones de Linux ([Link]
[Link]/)
Kernel Newbies ([Link] (enlace roto disponible en Internet Archive; véase el historial (htt
ps://[Link]/web/*/[Link] la primera versión ([Link]
[Link]/Linux) y la última ([Link]
Noticias y guías para actualizar o cambiar de Kernel ([Link]
Obtenido de «[Link]