GNU Hurd es una colección de servidores de microkernel escritos como parte de GNU , para el microkernel GNU Mach . Ha estado en desarrollo desde 1990 por el Proyecto GNU de la Free Software Foundation , diseñado como reemplazo del kernel de Unix , [ 3 ] y publicado como software libre bajo la Licencia Pública General de GNU . Cuando el kernel de Linux demostró ser una solución viable, el desarrollo de GNU Hurd se ralentizó, alternando en ocasiones entre la inactividad y una renovada actividad e interés. [ 4 ]
El diseño de Hurd consiste en un conjunto de protocolos y procesos de servidor (o demonios , en la terminología de Unix) que se ejecutan en el microkernel GNU Mach. [ 3 ] Hurd pretende superar al kernel de Unix en funcionalidad, seguridad y estabilidad, manteniendo al mismo tiempo una gran compatibilidad con él. El Proyecto GNU eligió el microkernel multiservidor [ 5 ] para el sistema operativo, debido a las ventajas percibidas sobre la arquitectura monolítica tradicional del kernel de Unix , [ 6 ] una visión que algunos desarrolladores habían defendido en la década de 1980. [ 4 ]
Nombre y logotipo
En diciembre de 1991, el arquitecto principal del Hurd describió el nombre como un acrónimo recursivo mutuo : [ 7 ]
Es hora de explicar el significado de "Hurd". "Hurd" significa "Hird of Unix-Replacing Daemons" (Hird de demonios que reemplazan a Unix). Y, a su vez, "Hird" significa "Hurd of Interfaces Representing Depth" (Hird de interfaces que representan profundidad). Que yo sepa, este es el primer software cuyo nombre se basa en un par de acrónimos mutuamente recursivos.
Como tanto hurd como hird son homófonos de la palabra inglesa herd , el nombre completo GNU Hurd también es un juego de palabras con herd of gnus , lo que refleja cómo funciona el núcleo. [ 8 ]
El logotipo se llama Hurd boxes y también refleja la arquitectura. El logotipo es un grafo donde los nodos representan los servidores del núcleo Hurd y las aristas dirigidas son mensajes IPC . [ 7 ]
Historia del desarrollo
Richard Stallman fundó el Proyecto GNU en septiembre de 1983 con el objetivo de crear un sistema operativo GNU libre . [ 9 ] Inicialmente se escribieron los componentes necesarios para el desarrollo del núcleo: editores , shell , compilador , depurador , etc. Para 1989, se creó la GPL y el único componente principal que faltaba era el núcleo. [ 10 ] [ 11 ]
El desarrollo del Hurd comenzó en 1990 tras un intento fallido de crear un núcleo en 1986, basado en el sistema operativo de investigación TRIX desarrollado por el profesor Steve Ward y su grupo en el Laboratorio de Ciencias de la Computación (LCS) del MIT . [ 12 ] Según Thomas Bushnell , el arquitecto inicial del Hurd, su plan inicial era adaptar el núcleo 4.4BSD -Lite y, en retrospectiva, «ahora me resulta perfectamente obvio que esto habría tenido un éxito espléndido y el mundo sería un lugar muy diferente hoy en día». [ 13 ] En 1987, Richard Stallman propuso utilizar el micronúcleo Mach desarrollado por Richard Rashid en la Universidad Carnegie Mellon . El trabajo en este se retrasó tres años debido a la incertidumbre sobre si la CMU liberaría el código Mach bajo una licencia adecuada. [ 12 ]
Con el lanzamiento del núcleo Linux en 1991, los principales usuarios de los componentes de espacio de usuario de GNU pronto pasaron a ser los sistemas operativos basados en el núcleo Linux ( distribuciones Linux ), lo que dio lugar a la acuñación del término GNU/Linux .
El desarrollo de Hurd ha avanzado lentamente. A pesar del anuncio optimista de Stallman en 2002, que predecía el lanzamiento de GNU/Hurd ese mismo año, [ 14 ] Hurd aún no se considera adecuado para entornos de producción. El desarrollo en general no ha cumplido las expectativas, y todavía existen numerosos errores y funcionalidades faltantes. [ 15 ] Esto ha dado como resultado un producto inferior al que muchos, incluido Stallman, esperaban. [ 16 ] En 2010, tras veinte años de desarrollo, Stallman afirmó no ser muy optimista respecto a GNU Hurd. «Ha progresado en cierta medida, pero para ser realmente superior requeriría resolver muchos problemas profundos», aunque añadió que «terminarlo no es crucial» para el sistema GNU, dado que ya existía un núcleo libre ( Linux ), y completar Hurd no resolvería el principal problema pendiente para un sistema operativo libre: la compatibilidad con dispositivos. [ 17 ]
El proyecto Debian , entre otros, ha trabajado en el proyecto Hurd para producir distribuciones binarias de sistemas operativos GNU basados en Hurd para sistemas compatibles con IBM PC .
Después de años de estancamiento, el desarrollo se reactivó en 2015 y 2016, con cuatro lanzamientos durante esos dos años. [ 18 ] Desde entonces, no se ha realizado ningún lanzamiento, pero las distribuciones toman instantáneas para producir lanzamientos de distribución. [ 19 ] [ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ]
El 20 de agosto de 2015, en medio del Google Summer of Code , se anunció que GNU Guix había sido portado a GNU Hurd. [ 25 ]
Arquitectura

A diferencia de la mayoría de los núcleos tipo Unix , Hurd utiliza una arquitectura cliente-servidor , construida sobre un micronúcleo que se encarga de proporcionar los servicios más básicos del núcleo : coordinar el acceso al hardware : la CPU (a través de la gestión y planificación de procesos ), la RAM (a través de la gestión de memoria ) y otros dispositivos de entrada/salida (a través de la planificación de E/S ) para sonido, gráficos, almacenamiento masivo, etc. En teoría, el diseño del micronúcleo permitiría que todos los controladores de dispositivos se construyeran como servidores que trabajan en el espacio de usuario , pero hoy en día la mayoría de los controladores de este tipo todavía están contenidos en el espacio del núcleo GNU Mach . [ 26 ]
Según los desarrolladores de Hurd, la principal ventaja del diseño basado en microkernels es la capacidad de extender el sistema: desarrollar un nuevo módulo no requeriría un conocimiento profundo del resto del kernel, y un error en un módulo no provocaría el fallo de todo el sistema. Hurd proporciona el concepto de traductores , un marco de módulos utilizado para extender la funcionalidad de un sistema de archivos. [ 27 ]
Desde sus inicios, Hurd se desarrolló para usar GNU Mach como microkernel. Esta fue una decisión técnica tomada por Richard Stallman , quien pensó que aceleraría el trabajo al ahorrar gran parte del mismo. Él mismo admitió que se equivocó al respecto. [ 28 ] Otros sistemas tipo Unix que funcionan con el microkernel Mach incluyen OSF/1 , Lites y MkLinux . macOS y NeXTSTEP utilizan kernels híbridos basados en Mach.
Otros micronúcleos
A partir de 2004, se emprendieron diversos esfuerzos para adaptar Hurd a microkernels más modernos. El microkernel L4 fue la opción original en 2004, pero el progreso se estancó. Sin embargo, durante 2005, el desarrollador de Hurd, Neal Walfield, finalizó el marco inicial de gestión de memoria para la adaptación de L4 a Hurd, y Marcus Brinkmann adaptó partes esenciales de glibc ; concretamente, logró que el código de inicio de procesos funcionara, permitiendo la ejecución de programas y, por lo tanto, la de los primeros programas de usuario (programas sencillos como el programa "hola mundo" ) escritos en C.
Desde 2005, Brinkmann y Walfield comenzaron a investigar Coyotos como un nuevo núcleo para HURD. [ 29 ] [ 30 ] En 2006, Brinkmann se reunió con Jonathan Shapiro (uno de los principales arquitectos del sistema operativo Coyotos) para ayudar y discutir el uso del núcleo Coyotos para GNU/Hurd. En discusiones posteriores, los desarrolladores de HURD se dieron cuenta de que Coyotos (así como otros núcleos similares) no son adecuados para HURD. [ 31 ]
En 2007, los desarrolladores de Hurd, Neal Walfield y Marcus Brinkmann, presentaron una crítica de la arquitectura de Hurd, conocida como "la crítica" [ 32 ] , y una propuesta sobre cómo podría diseñarse un sistema futuro, conocida como "el documento de posición" [ 33 ] . En 2008, Neal Walfield comenzó a trabajar en el microkernel Viengoos como un kernel nativo moderno para HURD. A partir de 2009, el desarrollo de Viengoos está en pausa debido a que Walfield no tiene tiempo para trabajar en él. [ 34 ]
Mientras tanto, otros han continuado trabajando en la variante Mach de Hurd. [ 35 ]
extensiones de Unix
En Hurd, varios conceptos tradicionales de Unix se reemplazan o se amplían.
En Unix, cada programa en ejecución tiene un ID de usuario asociado , que normalmente corresponde al usuario que inició el proceso . Este ID determina en gran medida las acciones permitidas al programa. Ningún proceso externo puede cambiar el ID de usuario de un programa en ejecución. Un proceso Hurd, en cambio, se ejecuta con un conjunto de ID de usuario, que puede contener varios, uno o ninguno. Un proceso con privilegios suficientes puede añadir y eliminar ID de otro proceso. Por ejemplo, existe un servidor de contraseñas que proporciona ID a cambio de una contraseña de inicio de sesión correcta.
En lo que respecta al sistema de archivos , se puede designar un programa adecuado como traductor para un solo archivo o para toda una jerarquía de directorios. El programa se encarga de gestionar cada acceso al archivo traducido, o a los archivos que se encuentran dentro de la jerarquía en el segundo caso. Por ejemplo, un traductor de archivos puede simplemente redirigir las operaciones de lectura y escritura a otro archivo, como un enlace simbólico de Unix . El efecto del montaje de Unix se logra configurando un traductor de sistema de archivos (mediante el comando "settrans"). Los traductores también pueden utilizarse para proporcionar servicios al usuario. Por ejemplo, el traductor ftpfs permite encapsular sitios FTP remotos dentro de un directorio. De esta forma, se pueden utilizar herramientas estándar como ls , cp y rm para manipular archivos en el sistema remoto. Existen traductores aún más potentes, como UnionFS , que permite unificar varios directorios en uno solo; así, al listar el directorio unificado se muestra el contenido de todos los directorios.
El Hurd requiere un gestor de arranque compatible con arranque múltiple , como GRUB .
Arquitectura de los servidores
Según la documentación de Debian, hay 24 servidores (18 servidores principales y 6 servidores del sistema de archivos) denominados de la siguiente manera: [ 36 ]
Servidores principales
- auth ( servidor de autenticación ): Recibe solicitudes y contraseñas de los programas y les asigna una ID, que cambia los privilegios del programa.
- fallo ( fallo del servidor): Gestiona todos los errores fatales.
- exec (servidor de ejecución): Traduce una imagen ejecutable (actualmente se admiten ELF y a.out ) a una imagen ejecutable en memoria.
- fifo ( traductor FIFO ): Implementa tuberías con nombre.
- new-fifo (nuevo servidor FIFO): Un servidor alternativo para tuberías con nombre.
- firmlink (el traductor de firmlink): Implementa firmlinks, "a medio camino entre un enlace simbólico y un enlace físico ". [ 37 ]
- fwd (servidor de reenvío): Reenvía las solicitudes a otros servidores, utilizado por servidores fifo y de enlaces simbólicos.
- hostmux (servidor multiplexor de host)
- ifsock (servidor para interfaz de sockets): Ayuda con direcciones de sockets de dominio UNIX.
- init ( servidor init ): Arranque y configuración básicos del sistema.
- magic ( servidor mágico ): Indica que una búsqueda de nombre debe ser resuelta internamente por un proceso cuando el resultado involucra el estado del proceso.
- null (servidor nulo): Implementa /dev/null y /dev/zero.
- pfinet (servidor pfinet): Implementa la familia de protocolos PF_INET.
- pflocal (servidor pflocal): Implementa sockets de dominio UNIX .
- proc (servidor de procesos): Asigna PID y gestiona las acciones a nivel de proceso.
- symlink ( traductor de enlaces simbólicos ): Implementa enlaces simbólicos para sistemas de archivos que no los admiten.
- terminal (servidor de terminal): Un terminal POSIX .
- usermux (servidor multiplexor de usuario): Invoca traductores específicos del usuario.
Servidores de sistema de archivos
- ext2fs
- El traductor del sistema de archivos ext2 . Recibe bloques de disco del microkernel y proporciona archivos y directorios a las aplicaciones.
- isofs
- El traductor para el sistema de archivos ISO 9660. Traduce bloques de un CD o DVD a archivos y directorios para las aplicaciones.
- nfs
- Consulte Sistema de archivos de red .
- FTPS
- Traductor de sistemas de archivos del Protocolo de Transferencia de Archivos .
- tienda
- El traductor de almacenamiento.
Los servidores implementan colectivamente la API POSIX , y cada servidor implementa una parte de la interfaz. Por ejemplo, los distintos servidores de sistema de archivos implementan las llamadas al sistema de archivos. El servidor de almacenamiento funcionará como una capa de envoltura, similar a la capa de bloques de Linux. El equivalente al VFS de Linux se logra mediante las bibliotecas libdiskfs y libpager.
Distribuciones GNU que ejecutan Hurd

Las distribuciones GNU basadas en Hurd incluyen:
- Arco Hurd
- Abeja GNU/Hurd (descontinuado) [ 38 ]
- Debian GNU/Hurd
- Gentoo GNU Hurd
- CD en vivo de GNU/Hurd [ 39 ]
- Sistema Guix (en desarrollo)
Véase también
Referencias
- ↑ "GNU Hurd adaptado a AArch64 y más noticias sobre Hurd" . osnews.com . Consultado el 22 de abril de 2024 .
- ↑ "COPIANDO – hurd/hurd.git – Hurd" . Git.savannah.gnu.org . Consultado el 25 de febrero de 2019 .
- 1 2 "¿Qué es GNU Hurd?" . GNU . Consultado el 4 de marzo de 2010 .
- 1 2 Tozzi, Christopher (2015-04-20). "30 años después, HURD sigue vivo: GNU actualiza el kernel de Unix de código abierto" . The VAR Guy . Archivado del original el 24 de abril de 2015.
- ↑ "¿Qué es un microkernel multiservidor?" . GNU. 13 de abril de 2013. Consultado el 11 de agosto de 2015 .
- ↑ "ventajas" . GNU . Consultado el 7 de diciembre de 2011 .
- 1 2 Vervloesem, Koen (7 de julio de 2010). "The Hurd: GNU's quest for the perfect kernel" . LWN.net . Recuperado el 5 de octubre de 2012 .
- ↑ "GNU Hurd: Origen del nombre" . GNU . Consultado el 4 de marzo de 2010 .
- ↑ "Historia de GNU" . cs.stanford.edu . Consultado el 3 de septiembre de 2024 .
- ↑ Hillesley, Richard (30 de junio de 2010). "GNU HURD: visiones alteradas y promesas perdidas" . Recuperado el 1 de octubre de 2012 .
- ↑ "Linux y el Proyecto GNU" . GNU . 26 de enero de 2010. Consultado el 4 de marzo de 2010 .
- 1 2 "La historia de GNU Hurd, 'Cómo empezó'"" . GNU . Consultado el 27-08-2006 .
- ↑ Salus, Peter . "El demonio, el GNU y el pingüino" . Archivado del original el 10 de julio de 2023. Consultado el 8 de agosto de 2006 .
- ↑ Ribeiro, John (11 de marzo de 2002). "El software libre ve a GNU perder el control de Linux" . PC World . Archivado del original el 22 de septiembre de 2016. Consultado el 5 de octubre de 2012 .
- ↑ "Estado" . GNU . Consultado el 4 de marzo de 2010 .
- ↑ Stallman, Richard (09-03-2006). "El movimiento del software libre y el futuro de la libertad" (ogg) . Free Software Foundation . Zagreb .
Esta es también la forma que la gente pensaba que era la manera más limpia posible de diseñar núcleos allá por 1990. Bueno, se necesitaron muchísimos años para lograr que este núcleo funcionara, y todavía no funciona bien, y parece que puede haber problemas fundamentales con este diseño, que nadie conocía allá por 1990.
- Richard Stallman. «El movimiento del software libre y el futuro de la libertad; 9 de marzo de 2006» . Free Software Foundation Europe (transcripción de la conferencia). Archivado del original el 12 de enero de 2007.
- ↑ Stallman, Richard (29-07-2010). "RMS AMA" . Reddit . Archivado del original el 05-03-2014 . Recuperado el 07-12-2011 .
- ↑ "La Fundación del Software Libre cambia sus prioridades – SD Times" . SD Times . 17 de enero de 2017. Consultado el 17 de abril de 2017 .
- ↑ "¡Debian GNU/Hurd 2015 publicado!" . lists.debian.org .
- ↑ "¡Debian GNU/Hurd 2017 publicado!" . lists.debian.org .
- ↑ "¡Debian GNU/Hurd 2019 publicado!" . lists.debian.org .
- ↑ "¡Debian GNU/Hurd 2021 publicado!" . lists.debian.org .
- ↑ "¡Debian GNU/Hurd 2023 publicado!" . lists.debian.org .
- ↑ "¡Debian GNU/Hurd 2025 publicado!" . lists.debian.org . Consultado el 23-08-2025 .
- ↑ Ragkousis, Manolis (20 de agosto de 2015). " [ Actualización de GSoC ] Portando Guix a GNU/Hurd" (Lista de correo). guix-devel . Recuperado el 20 de agosto de 2015 .
- ↑ Kousoulos, Constantine (21-03-2007). "Re: ¿Controladores de dispositivos en Mach?" . bug-hurd (Lista de correo).
- ↑ Doeppner, Thomas W. (20 de diciembre de 2010). Sistemas operativos en profundidad: diseño y programación . John Wiley & Sons. pág. 160. ISBN 978-0-471-68723-8Consultado el 29 de noviembre de 2012 .
- ↑ Stallman, Richard (12 de octubre de 2000). "En defensa de Red Hat" . Linux Today . Archivado del original el 23 de junio de 2021. Recuperado el 7 de diciembre de 2011.
Asumo toda la responsabilidad por la decisión técnica de desarrollar el kernel de GNU basado en Mach, una decisión que parece haber sido la responsable de la lentitud del desarrollo. Pensé que usar Mach aceleraría el trabajo ahorrándonos gran parte del mismo, pero me equivoqué.
- ↑ Shapiro, Jonathan S. (27-10-2005). "Re: Un comentario sobre el cambio de kernels" . l4-hurd (Lista de correo).
- ↑ Bachmann, Tom (2006-07-07). "Re: seL4, L4.sec y el lío de coyotes" . l4-hurd (Lista de correo).
- ↑ "Adaptación de Hurd a otro microkernel" . GNU Hurd . Free Software Foundation . Consultado el 6 de mayo de 2017 .
- ↑ Walfield, Neal H.; Brinkmann, Marcus (julio de 2007). "Una crítica del sistema operativo multiservidor GNU Hurd" (PDF) . GNU . Consultado el 7 de diciembre de 2011 .
- ↑ Walfield, Neal H.; Brinkmann, Marcus (2007-01-04). "Mejora de la usabilidad mediante la descomposición del acceso y el refinamiento de políticas" (PDF) . GNU . Recuperado el 2011-12-07 .
- ↑ "viengoos" . GNU . Consultado el 4 de marzo de 2010 .
- ↑ "¿Qué pasó con los micro-kernels L4/Coyotos/viengoos?" . GNU . Consultado el 7 de enero de 2011 .
- ↑ "Descripción preliminar de la interfaz de usuario de GNU/Hurd" . Debian . 1996-10-10 . Consultado el 2010-03-04 .
- ↑ "GNU/Hurd – Documentación" . Debian. 1996-10-10 . Consultado el 2012-07-12 .
- ↑ "GNU Hurd/ hurd/ running/ distrib" . GNU . 2015-05-03 . Consultado el 2017-09-21 .
- ↑ "GNU Hurd/ hurd/ running/ live cd" . GNU . 2013-04-09 . Consultado el 2017-09-21 .
Enlaces externos
- Sitio web oficial
- Sistemas operativos de software libre
- Software del Proyecto GNU
- Sistemas operativos basados en microkernel
- Micronúcleos
- Distribuciones de sistemas operativos arrancables desde medios de solo lectura
- Variantes de Unix
- Sistemas operativos X86-64