¿Se reescribieron todos los comandos de Unix en Linux?


Respuestas:


93

Parece que estás confundiendo dos partes muy diferentes del sistema operativo. Es comprensible, porque a menudo se hace referencia a ellos de manera intercambiable, pero es técnicamente incorrecto, por lo que su pregunta se basa en una premisa defectuosa. Para explorar a fondo y, con suerte, responder a la pregunta que probablemente quiera hacer, se necesita una breve lección de historia.

Primero, estaba UNIX. Básicamente, en aquellos días, UNIX se refería al Sistema AT&T UNIX , que llegó primero. Pero AT&T UNIX se convirtió en no gratuito, por lo que Richard Stallman comenzó el proyecto GNU para escribir un sistema Unix que fuera gratuito . De ahí que el nombre Gnu no sea Unix , abreviado GNU. Los planes para GNU se hicieron públicos en 1983 y el desarrollo comenzó en 1984 .

A principios de la década de 1990, GNU había reimplementado la mayoría de las utilidades de UNIX desde cero. Wikipedia enumera algunos componentes del sistema general que no se reescribieron (TeX, el sistema X Window y el microkernel Mach se mencionan como ejemplos de componentes que no se reescribieron), pero sobre todo, las herramientas de usuario se reescribieron desde cero para cumplir el objetivo de evitar la reutilización de cualquier código AT&T (o más bien, no gratuito), así como ampliar sus capacidades al agregar opciones de línea de comando. Como resultado, las utilidades de GNU eran regularmente más poderosas que las herramientas de las que extrajeron su inspiración original.

En ese momento, a GNU todavía le faltaba un componente vital: un núcleo del sistema operativo , que permitiría que todo funcionara en una computadora real que no ejecutara otro sistema operativo. En 1991, Linus Torvalds comenzó a trabajar en un proyecto de juguete que finalmente se conoció como Linux. Básicamente fue un proyecto escolar aprender sobre la entonces nueva CPU Intel 80386 de 32 bits , y comenzó siendo extremadamente simple, pero finalmente comenzó a transformarse en un núcleo de sistema operativo realmente utilizable. Pero no tenía ningún software de tierra de usuario; Linux por sí solo no proporciona shell, ni instalaciones de inicio del sistema más allá de la inicialización del núcleo, sin editor de texto, sin interfaz gráfica, nada. El núcleo es como el motor de un automóvil; esencial para hacer un automóvil útil, pero inútil por sí solo (para un automóvil útil, necesita cosas como ruedas, transmisión, dirección, un lugar para que el conductor se siente, un tanque de combustible u otro depósito de energía, etc.). El kernel de Linux finalmente se distribuyó bajo la Licencia Pública General de GNU, lo mismo que el software GNU .

Entonces la gente comenzó a emparejar los dos. Obtendría un área de usuario similar a Unix, junto con un núcleo basado en ideas de Unix (incluida una estrecha similitud con POSIX ), completo con el código fuente que podría piratear en todo lo que quisiera, y no costó nada . Especialmente antes de que las distribuciones de Linux se volvieran comunes, tomó un poco de tiempo para que las cosas funcionen, pero se terminó lo suficiente como para ser algo utilizable por aquellos que estaban dispuestos a pasar algún tiempo en ello.

En estos días, GNU proporciona un núcleo propio. Probablemente no hayas oído hablar de él, pero se llama GNU Hurd . Pero Hurd no existía a principios de la década de 1990, cuando Linux comenzó a ganar tracción entre los aficionados y los aficionados al juego, por lo que fue la combinación del kernel de Linux y un país de usuarios mayormente GNU lo que atrajo la mayor atención entre los desarrolladores.

Además, en estos días, muchos sistemas Unix instalan, o permiten que el administrador instale fácilmente, partes de la tierra de usuarios de GNU. Es posible que vea cosas como GNU bash, GNU Compiler Collection, la biblioteca GNU C (vainilla o parcheada), etc. en un sistema que no sea GNU.

Para empeorar las cosas, algunos sistemas usan el kernel de Linux pero no tienen tierra de usuario de GNU. Para un ejemplo ampliamente utilizado de esto, considere el sistema operativo Android , que es básicamente el núcleo de Linux junto con un país de usuario personalizado.

Esto es importante porque desdibuja significativamente la línea entre GNU, Linux y los diversos Unix ( solo hay un UNIX , pero hay muchos Unix y aún más sistemas operativos tipo Unix ). Cuando preguntas sobre Linux, a menudo preguntas sobre el sistema GNU / Linux. Pero considere Debian GNU / kFreeBSD , que ejecuta una tierra de usuarios de GNU sobre el kernel de FreeBSD, sin usar Linux en absoluto. O, por ejemplo, Solaris, en el que puede instalar fácilmente varios paquetes GNU, incluidos, por ejemplo, coreutils . Creo que Mac OS X también incluye partes de la tierra de usuarios de GNU. O considere el Android mencionado anteriormente.

Al final, un sistema GNU utilizable podría ejecutar código no GNU, y un sistema no GNU podría ejecutar código GNU, pero las utilidades GNU no contienen código no GNU.


1
La última vez que usé FreeBSD (hace años) no usaba muchas herramientas GNU, sino su propio conjunto, por ejemplo, BSD make en lugar de GNU make.
reinierpost

55
@reinierpost OSX es muy similar: una instalación simple contiene principalmente versiones BSD de cosas, pero GNU coreutils y similares están fácilmente disponibles a través de MacPorts y otros. XCode utiliza LLVM, pero también gcc. Es complicado :)
MattDMo

1
@reinierpost make no es tan malo como para reemplazarlo. El compilador de C está un poco más involucrado. Al menos FreeBSD 8.0 usa GCC como su compilador predeterminado ; específicamente la versión 4.2.1. Los "problemas de licencia" referidos a la prevención de la integración de versiones más nuevas en el sistema base probablemente se deban al cambio de GPL2 + a GPL3 +, pero no parecía estar seguro.
un CVn

3
@ hunter2 Parece que no era necesario, según los recuentos de votos hasta el momento. ;) Tampoco me propuse escribir una historia completa. Minix desempeñó un papel importante como sistema de arranque y desarrollo de Linux antes de que Linux se convirtiera en autohospedaje, pero ha tenido poca influencia, por ejemplo, en la relación entre Linux, GNU y el UNIX original, que está más en la línea de lo que se trata la pregunta.
un CVn

3
@ hunter2 Si tuviéramos que seguir esa ruta, entonces es absolutamente cierto que UNIX tampoco fue el primero. Pero para responder a la pregunta, esto parecía una aproximación suficientemente buena. La respuesta de una sola oración habría sido algo así como "básicamente todo lo que UNIX excepto TeX y X que encuentras en un sistema Linux fue reescrito como parte de GNU", pero creo que el contexto adicional agrega valor, incluso si hizo que la respuesta fuera significativamente más larga que absolutamente es necesario, y la respuesta aún no cubre todos los detalles.
un CVn el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.