[ English | French | German | Japanese | Spanish | Italian ] | |
What\'s New ChangeLogs Documentation GNU Hurd Installation Getting Help Source Code Development History GNU Mach Installation Source Code GNU MIG Source Code Related Projects |
Preguntas Frecuentemente Formuladas sobre the GNU HurdEste documento intenta responder a aquellas preguntas que más frecuentemente inquietan a los usuarios cuando están instalando, usando, compilando, desarrollando y hablando sobre the GNU Hurd así como su distribución binaria Debian/GNU Hurd. Asegúrese de haber leído este documento antes de pedir que alguien le ayude. The GNU Hurd está en desarrollo contínuo y todavía no ha sido publicada una versión estable. Le prevenimos de que: hay mucho trabajo todavía por terminar; encontrará bugs; su sistema se colgará. Dicho esto, usted puede contribuir en cualquier aspecto: desarrollo de the Hurd y Mach, portando aplicaciones, documentando y, lo más importante, reportando errores. Si tiene alguna pregunta no contestada por este documento y usted cree que debería estar, mándela, y, si es posible, con respuesta. Cada sección es copyright de su respectivo autor(es). Se le concede permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Libre Documentación de GNU, versión 1.1 o posterior publicada por la Fundación del Software Libre; sin Secciones Invariantes, y sin textos recubridores. Una copia de la licencia está incluida en el fichero COPYRIGHT. Each section is copyright its respective author(s). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the file COPYRIGHT. Neal H Walfield neal@cs.uml.edu Traducción al Español: Gonzalo Fernández Hernández <gonzalofh@terra.es> Table Of Content
2. Instalación
4. Uso
6. Portando
7. Compilando
8. Desarrollo
1. Generalidades1.1. ¿Qué es un Micronúcleo Multiservidor?{NHW} Un Micronúcleo no tiene nada que ver con el tamaño del núcleo. Más bien, se refiere a los servicios que éste presta. Se admite generalmente que es un conjunto de interfaces que permiten a los procesos comunicarse entre sí y una forma de comunicarse con el hardware. Los "drivers por software", como me gusta llamarlos, se implementan en el espacio de usuario como servidores. Los ejemplos más obvios de estos son la pila TCP/IP, el sistema de ficheros ext2 y NFS. En el caso de the Hurd, los usuarios ya tienen acceso a unos servicios que, en un núcleo monolítico, nunca podrían usar, pero ahora, como el servidor se ejecuta en el espacio de usuario, es como si el usuario lo hubiera iniciado, pudiendo entonces, por ejemplo, montar un sistema de ficheros ftp en su directorio home. Para más información sobre el diseño de the Hurd, lea el artículo de Thomas Bushnell, BSG: ``Hacia una nueva estrategia en el diseño de sistemas operativos'', disponible en: http://www.gnu.ai.mit.edu/software/hurd/hurd-paper.html 1.2. Gramaticalmente, ¿Qué es the Hurd?{NHW} "Hurd", como acrónimo, viene de "Hird of Unix-Replacing Daemons". Hird, a su vez, viene de "Hurd of Interfaces Representing Depth". Nosotros consideramos "Hurd" más o menos como si fuera un nombre propio en Inglés: requiere un artículo, como en "the Hurd". Por ejemplo: "The ext2 filesystem is provided by the Hurd, not by Mach.". Nótese que las formas siguientes son incorrectas: "Hurd", "HURD", "The HURD", y "the hurd". Decimos "the GNU Hurd" en vez de "the Hurd" cuando queremos remarcar que the Hurd es un paquete de GNU. Una vez que esto está claro, usamos la forma apocopada, sin "GNU". El sistema operativo entero no sólo incluye el núcleo y los servidores del sistema, si no también muchos más programas. Este sistema se llama "GNU", o "el sistema operativo GNU". Los programas de GNU se pueden ejecutar también en núcleos de otros sistemas operativos. Hablamos de "GNU/Hurd" cuando queremos ponér énfasis en el hecho de que es el sistema GNU ejecutándose sobre Hurd, y como contraste con el sistema GNU/Linux que usa Linux como núcleo. Para terminar, hay un "Debian GNU/Hurd". Esto se refiere a la distribución del sistema GNU creada por los desarrolladores de Debian. Por ejemplo: "¿Qué usas en tu computador de escritorio? Debian GNU/Hurd, por supuesto". Los franceses normalmente escriben "le Hurd"-- esto es porque tratan el nombre como masculino singular, en mayúsculas como en Inglés. Cuando nos referimos al micronúcleo, decimos "Mach" y lo usamos como nombre propio. Por ejemplo: "Mach uses the device drivers found in version 2.0.x of Linux.". A veces se dice "The Mach microkernel" en vez de "Mach". 1.3. ¿Hay alguna lista de correo?{NHW} Hay cuatro listas de correo principales:
Puede suscribirse de la manera habitual. 1.4. ¿Dónde puedo reportar errores?{NHW} Use el sistema de reporte de errores de Debian. Puede encontrar más sobre él en http://www.debian.org/Bugs. 1.5. ¿Hay alguna lista de cosas por hacer?{NHW} Sí, de hecho, hay varias:.
1.6. ¿Para cuando la próxima versión estable?{NHW} Nadie parece saberlo. De todas formas, the Hurd es definitivamente ejecutable, pruébelo y ayúdenos a alcanzar nuevas versiones. 1.7. ¿Por qué es "/usr" un enlace simbólico a "."?{MB} La distinción entre "/" y "/usr" tiene razones históricas. Nos remontamos a cuando los sistemas Unix eran inicializados desde dos cintas, una pequeña cinta root y una gran cinta user. Hoy en día, nos gusta usar particiones diferentes para esos dos espacios. The Hurd se deshace de esa basura histórica. Creemos que hemos encontrado una solución más flexible llamada shadow filesystems. Desafortunadamente, el soporte para los shadowed filesystems no está todavía implementado. 2. Instalación2.1. ¿Dónde puedo obtener Debian GNU/Hurd?{NHW} Como GNU/Hurd es un port oficial e inestable de Debian, puede encontrar los binarios en su mirror local de Debian. De todas formas, hay varios paquetes básicos que no compilan limpiamente a partir del código fuente y tiene varios apaños(hacks) desafortunados. Se puede encontrar en: ftp://alpha.gnu.org/gnu/hurd/debian Una vez instalado correctamente, puede configurar apt en los ficheros añadiendo las líneas siguientes a su fichero /etc/apt/sources.list. Por ejemplo: deb ftp://alpha.gnu.org/gnu/hurd/debian unstable main deb http://http.us.debian.org/debian unstable main Como descargar todos los paquetes puede durar bastante tiempo (hay más de un gigabyte en ficheros), Philip Charles ha creado CDs de Debian GNU/Hurd. Pueden encontrarse distribuidores en: http://www.debian.org/ports/hurd/hurd-cd 2.2. ¿Cómo se instala Debian GNU/Hurd?{NHW} Consulte alguna de las guías de instalación. La guía más actualizada puede está disponible en: http://web.walfield.org/papers/hurd-installation-guide/ 2.3. ¿Qué tipo de hardware soporta?{NHW} Por el momento, the GNU Hurd sólo se ejecuta sobre máquinas IA32, de todas formas, portarlo a otras arquitecturas no debería de ser difícil: el código há sido escrito en todo momento teniendo en mente su portabilidad. Con respecto a los drivers, GNU Mach usa un subconjunto de los drivers del núcleo Linux 2.0.x. Puede encontrar una guía relativamente completa de la compatibilidad con el hardware en: http://www.nongnu.org/thug/gnumach_hardware.html Si usted tiene problemas, es probable que:
En el primer caso, debería empezar a quitar dispositivos o jugar con la BIOS. En el segundo caso, GNU Mach no soporta módulos cargables del núcleo. Por lo tanto, usted tendrá que compilar un nuevo núcleo y sólo activar aquellos drivers de dispositivos que en realidad necesite. 2.4. ¿Qué tipo de partición debo usar para mis particiones GNU/Hurd?{MB} Debería usar un sistema de ficheros ext2. Usted también puede usar ufs, al estilo de BSD. El número del tipo de la partición ext2 es 0x83 (el mismo que en Linux), no 0x63 (GNU HURD). Thomas explica el porqué de que 0x63 sea una mala elección: Algún día puede que hagamos un nuevo formato de sistema de fichero, que probablemente se llamará the GNU Hurd filesystem format, y que bien podría usar ese código de partición. Prescindiendo de lo dicho, señala Roland, siempre es un error usar ese código para una partición ext2. 2.5. ¿Cómo llamo a mis particiones?{MB,NHW} Sabía que me iba a preguntar eso. Si yo tuviera que reducir este FAQ a sólo una pregunta, habría elegido ésta. Es muy fácil, pero debe saber que en realidad hay varios convenios de nomenclatura incompatibles. Primero, the Hurd: si el disco en cuestión es un disco SCSI, debe saber el número del dispositivo SCSI; si es un disco IDE, debe saber en qué controladora está el disco y si es maestro o esclavo. The Hurd usa el convenio de nomenclatura de BSD, en el cuál los discos están ordenados de acuerdo a su localización física, numéricamente, empezando desde cero. Este esquema de nomenclatura es bastante similar al encontrado en Linux. Ahí, el disco maestro en la controladora primaria se designa por "hda" y el esclavo por "hdb". En la controladora secundaria, se designan al maestro y al esclavo como "hdc" y "hdd" respectivamente. Bajo the Hurd, `hda' se convertirá en "hd0", "hdb" será referenciado como "hd1", etc. En the Hurd, al igual que en BSD, se llama "tajadas(slices)" a las particiones y están numeradas empezando desde el 1. De esta forma, para dar nombre a una partición, tomaremos el nombre del disco, añadiremos una "s" y el número de partición. De nuevo, es parecido a Linux, excepto en que no hay "s". Por ejemplo, "hda1" sería "hd0s1". GRUB, el cargador de arranque, usa una nomenclatura totalmente diferente: pregunta a la BIOS y añade cada disco en orden a un array. Tanto los discos como las particiones se enumeran usando arrays que empiezan por cero. El formato es: "hd (<disco>, <partición>)". De esta manera, "hd (0, 1)" se refiere a la segunda partición del primer lector detectado por la BIOS. Como Grub tiene auto-completar, no hay mucho donde dudar. 2.6. ¿Puedo usar particiones mayores a 2GB?{MB} No, no por el momento. Los servidores de sistema de ficheros necesitan ser modificados para que no mapeen todo el espacio de almacenamiento en la memoria, lo que no es demasiado difícil. Para ficheros grandes, se necesita modificar algunas interfaces, lo que es un poco más difícil pero se puede hacer. 2.7. ¿Cuánta memoria de intercambio(swap) necesito?{NHW} Normalmente, mucha; si se agota, Mach se inestabiliza(pánico del núcleo). Yo tengo al menos 128 MB de ram y 256 MB de swap en todas las máquinas con GNU/Hurd. 2.8. ¿Puedo compartir mi espacio de intercambio(swap) entre GNU/Linux y GNU/Hurd?{NHW} Sí. El paginador por defecto reconoce y respeta las particiones de intercambio de Linux. Paginará sobre una partición raw(volcado directo), i.e. en el caso de que no reconociera la partición swap de Linux. Por lo tanto: TENGA CUIDADO. 2.9. ¿Por qué me sale "Operation not permitted error"?{MB} Olvidó poner como propietario del sistema de ficheros de la partición de the GNU/Hurd a "hurd". The Hurd usa información adicional en los inodos para posicionar los traductores. Para realizar esto, la partición debe ser marcada como "propiedad de the Hurd". Esto se hace normalmente pasando la opción "-o hurd" a "mke2fs" al crear el sistema ext desde otro sistema operativo(los sistemas de ficheros creados en GNU/Hurd activan esta opción automáticamente). Si usted no consigue hacerlo, puede también usar el script "e2os". 2.10. Después de terminar la "instalación nativa", tuve que escribir de eessttaa ffoorrmmaa. En particular, tuve que poner "rreebboooott" para reiniciar.{MB} Es divertido, ¿no cree? Además del servidor de "terminal" de rescate en "/tmp/console", otro servidor de "terminal" fue iniciado y está tomando la entrada del teclado. Después de un reinicio, este problema desaparece puesto que sólo permanecerá un servidor de "terminal". Si "tar" soportara un traductor, no tendríamos este problema... Incluso si no ha experimentado este problema justo después de la instalación, reinicie inmediatamente para no dar con este error accidentalmente. 3. Configuración3.1. ¿Cómo puedo añadir una partición de intercambio(swap)?{MB} A una partición de intercambio se le llama también fichero de paginación. Normalmente, basta con añadir una partición de intercambio a "/etc/fstab", de la misma forma en la que lo haría en Linux. Puede paginar en una partición de intercambio de Linux y the Hurd respetará la firma de intercambio de Linux (ambas versiones). The Hurd puede felizmente paginar en cualquier otro espacio de disco que usted asigne mediante volcado directo(raw) y sobreescribir todo lo que encuentre. Así que tenga cuidado! Si usted quiere paginar en un fichero o asegurarse de que antes verifica la firma de intercambio de Linux, deberá editar "/boot/servers.boot". Su sintaxis es: el nombre del fichero del dispositivo de la partición más, opcionalmente, el fichero de intercambio dentro de una partición ext2fs, seguido por un espacio y por una de las siguientes: "$(add-raw-paging-file)", "$(add-linux-paging-file)", o "$(add-paging-file)". La primera opción funciona con cualquier partición o fichero y no respeta ninguna firma ni otros datos. La segunda, hará una verificación de seguridad y sólo usará el fichero en el caso de que se hubiera encontrado una firma de intercambio de Linux. La tercera, busca una firma de intercambio primero, y usa una paginación de volcado directo(raw) en el caso de que no la hubiera encontrado. Ésta es la opción por defecto para las entradas de "/etc/fstab". 3.2. ¿Cómo puedo configurar una red? ¿Cómo puedo configurar un dispositivo de bucle(loopback)?{MB} En el primer caso, asegúrese de que GNU Mach detectó su tarjeta de red. Y tanto en el primero como en el segundo caso, necesitará configurar "pfinet". Puede encontrar la documentación necesaria en: http://www.debian.org/ports/hurd/hurd-doc-server#pfinet No se olvide de rellenar "/etc/resolv.conf", "/etc/hosts", etc. Por supuesto, tan sólo necesita hacerlo si la rutina de instalación no lo ha hecho por usted. 3.3. ¿Cómo puedo pasar opciones a "serverboot"?{MB} Déselas al núcleo (i.e. en la línea de comandos de GRUB) y éste se lo pasará automáticamente a "serverboot". 3.4. ¿Puedo usar la versión de GNU/Linux de `e2fsck' en una partición GNU/Hurd?{MB} Sí, al menos a partir de "e2fsprogs-1.05". Compruebe antes la versión con "e2fsck -V". {NHW} No intente defragmentar su partición porque esta utilidad no entiende de traductores. 3.5. ¿Por qué no me funcionan las tuberías(pipes)?{MB} Use "settrans -fgc /servers/socket/1 /hurd/pflocal", con eso debería funcionar. 4. Uso4.1. ¿Dónde está la documentación?{NHW} No hay ni páginas del manual(man) ni nodos de información(info) para los comandos y traductores de the Hurd. La documentación se encuentra dentro de los binarios y puede ser leída pasando la opción "--help" a un determinado comando. Por ejemplo: # /hurd/ext2fs --help mostrará qué tipos de opciones acepta el traductor de ext2fs. 4.2. ¿Qué es un traductor(translator)?{MB} Hay un texto sobre traductores disponible en: http://www.debian.org/ports/hurd/hurd-doc-translator Léaselo y pregunte en las listas de correo para más información. 4.3. ¿Qué es el login shell?{MB} En the Hurd existe el concepto de usuario no registrado(not-logged). Este usuario no tiene ni ids de usuario ni ids de grupos. Esto viene del hecho de que the Hurd soporta conjuntos de uid y gid, y por lo tanto, una posibilidad es el conjunto vacío. Mejor que denegar el acceso en este caso, los sistemas de ficheros de the Hurd ofrecen una cuarta terna de permisos (i.e. rwx) que es usada para determinar los privilegios de los usuarios sin credenciales. Ésta, no obstante, debe ser activada fichero por fichero. Por defecto, se usa la terna de permisos para "otros(other)". El login shell de the Hurd es una sesión de consola(shell) que se ejecuta sin uids ni gids. Para restringir el acceso a sus ficheros, puede activar y cambiar la cuarta terna de permisos, o también puede cambiar la login shell del usuario "login" en el archivo de passwords a "/bin/loginpr" que implementa la petición estándar de registro. 4.4. ¿Cómo puedo usar un teclado no-US?{NHW} Eche un vistazo a: ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/keymap.tar.gz 4.5. ¿Cómo puedo activar el color en la consola?{NHW} Si usted está usando el micronúcleo GNU Mach, puede cambiar su terminal a "mach-color". Por ejemplo: # export TERM=mach-color 4.6. ¿Cómo puedo activar las consolas virtuales?{NHW} No hay soporte para consolas virtuales por el momento. Puede, no obstante, usar "screen". Es mucho más flexible de todas formas. Kalle Olavi Niemitalo <tosi@ees2.oulu.fi> empezó a trabajar en un texto en color. Su objetivo era el de proporcionar un programa lleno de características que multiplexe la consola en el espacio de usuario leyendo del dispositivo /dev/kdb. Véase: http://stekt.oulu.fi/~tosi/ {MB} Aquí tiene algunas opciones útiles para añadir a su fichero ~/.screenrc para conseguir emular las terminales virtuales de Linux de una forma más fidedigna: bindkey ^[O0 select 0 bindkey ^[O1 select 1 bindkey ^[O2 select 2 bindkey ^[O3 select 3 bindkey ^[O4 select 4 bindkey ^[O5 select 5 bindkey ^[O6 select 6 bindkey ^[O7 select 7 bindkey ^[O8 select 8 bindkey ^[O9 select 9 # Desafortunadamente, Mach ignora los modificadores con los # cursores. Esto se puede arreglar; no obstante, por el momento, # usaremos otras teclas para retroceder y bifurcar. # ^[, es ALT y "," # ^[. es ALT y "." bindkey ^[, prev bindkey ^[. next 4.7. ¿Cuál es el estado de X?{MB} ¡Funciona! Los paquetes están disponibles en cualquier mirror ftp de Debian. XFree86 4.0.2 está disponible, al igual que algunos de los servidores de la v3. Las instrucciones de cómo utilizar los paquetes están en el archivo de la lista de correo: http://lists.debian.org/debian-hurd-0007/msg00013.html 4.8. ¿Por qué no funciona X?{MB} Pruebe con "export LD_LIBRARY_PATH=/usr/X11R6/lib". Es un problema del enlazador(linker). GNU/Hurd espera que se use `RPATH' , no obstante, Debian toma ciertas medidas para evitarlo. Nótese que esto no es atajado en los binarios suid por razones de seguridad. Esperamos corregirlo mediante el uso de "RUNPATH", que está especificado en el nuevo estándar ELF. 4.9. ¿Qué son esos pids extraños "2" y "3"?{MB} Dos es el núcleo, tres es el paginador por defecto y cuatro es el sistema de ficheros raíz(root). 4.10. ¿Por qué "ps aux" me devuelve unos resultados extraños?{MB} Pruebe con "ps Aux". 4.11. Se me ha colgado un proceso y lo quiero matar, pero "ps" también se me ha colgado.{MB} Interrúmpalo y pásele la opción "-M". {NHW} Por defecto, "ps" obtiene información del servidor proc y de los propios procesos(por medio de su puerto de mensajes). Si un proceso se ha colgado, no será capaz de responder a su puerto de mensajes y por lo tanto, ps esperará indefinidamente la respuesta. La opción "-M" le dice a ps que no pida información que pueda requerir el uso de puertos de mensaje. 4.12. ¿Dónde están...{MB} "fdisk" y "dmesg" no han sido portados todavía. En vez de "free", use "vmstat" y "vminfo". Para los mensajes del núcleo, lea directamente "/dev/klog". Dese cuenta de que, una vez leído, habrá desaparecido su contenido para siempre. {NHW} "ifconfig" no existe. Pruebe a usar: # /hurd/pfinet --help Para dhcp, eche un vistazo a hurd/trans/pump.c; este es el comienzo de un cliente dhcp para the Hurd. 4.13. ¿Hay un sistema de ficheros "/proc"?{MB} No. Puede que se haga una emulación de ese sistema de ficheros algún día para programas que lo necesiten. Si se está preguntando sobre el directorio "/proc" vacío, es un vestigio de un paquete de GNU/Linux (específicamente, "base-files"). Puede probar el hardware disponible con la utilidad devprobe. 4.14. ¿Por qué no funciona el comando "df"?{NHW} Funciona, sólo tiene que ponerle a que sistema de ficheros se refiere. E.g. # df / 4.15. ¿Por qué están muriendo mis traductores?{NHW} Pruebe a pasarle la bandera "-ap" a settrans. Por defecto, settrans sólo activa un traductor pasivo, de esta forma, ninguna salida se mostrará en su terminal. Usando `-ap', sin embargo, activa ambos traductores, activo y pasivo, lo que significa que el traductor empieza inmediatamente y su stderr está conectada a su terminal. Adicionalmente, el mayor problema es pasar rutas relativas a traductores pasivos. Usted no puede predecir cuál será el directorio de trabajo de un traductor cuando éste se ha activado como traductor pasivo. 4.16. ¿Por qué no puedo "leer" un directorio?{MB} Es importante entender que no hay nada especial para los directorios en the Hurd, son tan sólo archivos. Esto concuerda con el concepto de traductor en el cual el traductor puede aparecer como un directorio pero comportarse también como un archivo. 5. Resolución de problemas5.1. Cuando el soporte de APM de la BIOS suspende mis discos duros, the Hurd es incapaz de despertarse. ¿Qué le pasa?{MB} La versión actual de GNU Mach no soporta APM, lo siento. Por favor, desactive APM en la configuración de su BIOS. 5.2. ¿Qué son esos mensajes sobre "default pager", "paging", y "pager request"?{MB} El paginador por defecto(default pager) gestiona la ubicación de memoria virtual. Si no puede ubicar una página nueva por falta de memoria, pueden ocurrir cosas terribles. Cuando vea algún error referido a este tema, o necesita más memoria(asegúrese de que tiene memoria de intercambio(swap)) o bien es que ha encontrado un agujero en la memoria(memory leak). 5.3. ¿Qué es un gratuitous error?{MB} Esto proviene de "strerror(EGRATUITOUS)". Si usted consulta la documentación de glibc, le dirá que este código de error no tiene ningún propósito. Esto, sin embargo,no es del todo cierto. Usted sólo obtiene ese código cuando pasa algo terrible. Thomas explica: Más exactamente, `EGRATUITOUS' oficialmente significa que algún servidor ha respondido de una forma imposible o violando el protocolo. Hay algunos casos en que the Hurd devuelve `EGRATUITOUS', pero en los que se podría haber cogido probablemente otro en vez de ese. Si usted puede reproducir este mensaje de error, por favor, reporte el fallo. 5.4. ¿Qué significa "/dev/hd0s1: MOUNTED READ-ONLY; MUST USE 'fsysopts --writable'"?{NHW} En este caso, /dev/hd0s1 no ha sido desmontado límpiamente. The Hurd ejecutará "fsk -p" en el arranque, en todas las particiones que encuentre en /etc/fstab, y por lo tanto, debe considerar el añadir esta partición a ese fichero. Si está seguro de que la partición está bien, puede ejecutar: # fsysopts /home --writable para pedirle al traductor de /home que cambie del modo de sólo-lectura al modo de lectura/escritura. Ténga en cuenta que el comando será enviado al sistema de fichero y no al dispositivo de almacenamiento (e.g. /dev/hd0s1). 5.5. Cuando GNU/Hurd se cuelga, GNU Mach automáticamente reinicia. ¿Hay alguna forma de hacer que pause para que pueda anotar el error?{MB} Pase la opción "-H" a init (añádalo en la línea de comando de arranque(boot)), e "init" le dirá a Mach que entre en el debugger del núcleo en vez de reiniciar. En la petición de comandos del debugger ("db>"), puede escribir "reboot" en cualquier momento para reiniciar. 6. Portando6.1. ¿Qué programas ya han sido portados?{NHW} Muchos, eche un vistazo al archivo de Debian. Muchos programas, no obstante, no es que necesariamente necesiten ser portados; si no que nunca se han compilado. 6.2. ¿Es fácil portar programas?{NHW} Portar aplicaciones a GNU/Hurd es relativamente fácil asumiendo que la aplicación cumpla POSIX, ya que GNU/Hurd intenta por todos los medios ser un sistema operativo conforme a POSIX. El error más común cometido por los programadores es asumir que MAXPATHLEN y PATH_MAX están definidas. En la mayoría de sistemas operativos, tienen un valor de algunos miles, sin embargo, en GNU/Hurd, no hay un máximo, y, por lo tanto, no están definidas. Lo que se debe hacer es mandar un patch al autor original que ubique la memoria dinámicamente. 6.3. ¿Cómo puedo ayudar?{NHW} Jeff Bailey hace un importante esfuerzo para compilar todos los paquetes de Debian. Eche un vistazo a: http://people.debian.org/~jbailey/oasis/group/Debian/index.html para ver lo que ya está hecho y cómo puede usted ayudar. 7. Compilando7.1. ¿Dónde puedo conseguir el código fuente?{NHW} El código fuente está almacenado en un CVS en: :pserver:anoncvs@subversions.gnu.org:/cvsroot/hurd No necesita ninguna clave para entrar. Los módulos que le interesan son: "hurd", "gnumach" y "mig". Puede encontrar una interfaz web en: http://savannah.gnu.org/cgi-bin/viewcvs/hurd/ Para obtener el código fuente del paquete Debian más reciente, consulte en cualquier mirror de Debian. 7.2. ¿Puedo hacer una compilación cruzada?{NHW} Sí. Si usted está ejecutando Debian GNU/Linux en una arquitectura IA32, es muy fácil porque hay compilador cruzado muy barato; todo lo que necesita es instalar los paquetes de Debian de gcc-i386-gnu y mig-i386-gnu. Cuando esté ejecutando configure, tendrá que especificar las herramientas directamente: # MIG=/usr/bin/i386-gnu-mig CC=/usr/bin/i386-gnu-gcc \ ../src/hurd/configure ... Si usted está ejecutando otra distribución, tendrá que hacerlo por el camino largo. Puede encontrar instrucciones en el CÓMO-HACER de la Compilación Cruzada en: http://hurddocs.sourceforge.net/howto/cross.html Farid Hajji <farid.hajji@ob.kamp.net> támbien nos habla de sus experiencias en: http://lists.debian.org/debian-hurd-0012/msg00062.html 7.3. ¿Algún consejo general?{NHW} Sí, no se ha probado el incorporar el árbol de código fuente. Pruebe con: # ../src/hurd/configure ... 8. Desarrollo8.1. ¿Qué es OSKit-Mach?{NHW} Hay dos versiones de Mach: GNU Mach and OSKit-Mach. El primero usa los drivers de Linux 2.0.x mientras que el otro usa el OSKit de la Universidad de Utah. Si todo sale bien, OSKit-Mach será estable y se convertirá en el núcleo oficial. Puede encontrar más sobre el OSKit en: http://www.cs.utah.edu/flux/oskit 8.2. ¿Dónde está la documentación?{NHW} Se escribieron varios libros sobre el núcleo Mach(Mach kernel). La información que contenían todavía es pertinente y debe ser considerada como bibliografía básica por los programadores(hackers) potenciales. Puede encontrarse en: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html La documentación de the Hurd es bastante insuficiente. El comienzo de un libro, "The GNU Hurd" está en el directorio doc del código fuente de the Hurd. Puede leerlo mediante: # info hurd Aunque lo más importante es, por supuesto, el código fuente; no quiere decir, sin embargo, que no apreciemos que la gente escriba más documentación. Para iniciarse, eche un vistazo a <hurd>/doc/navigating. 8.3. ¿Cómo puedo asegurarme de que mi código cumple POSIX?{NHW} Desafortunadamente, usted tiene que comprar el estándar POSIX a la IEEE. Puede encontrar The Single Unix Specification versión 2, un superconjunto de POSIX, disponible de forma gratuita en internet. Pruebe: http://www.unix-systems.org/online.html 8.4. ¿A quién le envio mis parches?{NHW} Si son parches de the Hurd, Mach o MIG, envíelos a la lista de correo bug-hurd. Si son de otros paquetes, el BTS de Debian es buen sitio. En este caso, asegúrese de avisar a la lista de correo debian-hurd del fallo. 8.5. ¿En qué formato deben estar los parches para the Hurd y GNU Mach?{MB} Todos los parches deben ser enviados en formato diff de contexto unificado(opción "-u" de GNU diff). Nos sería de gran ayuda que también usase la opción "-p" que incluye información de la función cambiada por el parche. Los cambios similares pueden ser agrupados juntos en un fichero, pero los cambios que no tienen nada que ver entre sí deben ser enviados en ficheros separados. Los parches pueden ser incluídos en el mensaje o como un adjunto MIME. No deben estar comprimidos y/o empaquetados a no ser que sean muy grandes, y si son muy grandes probablemente es mejor ponerlos en-linea en algún sitio y mandar sólamente una URL. Escriba una entrada en el fichero de modificaciones(ChangeLog) para cada cambio, seguido del formato de los archivos existentes. Por ejemplo: 2000-12-02 Marcus Brinkmann <marcus@gnu.org> * ops.c (op_readlink): Antes de volver,mira si el buffer apuntado por transp es nuestro. Si no, le hacemos munmap. (op_read): Lo mismo para bp. (op_readdir): No ubica un buffer aquí. En vez de ello, inicializa BUF y BUFSIZE a 0 y deja que lo haga el servidor(eh, MIG). munmap a BUF antes de retornar. El nombre del fichero y el nombre de la función cambiada debería de ser escrita entera, y no abreviada o cambiada de otra forma(como foo.{c,h}), porque haría imposible la búsqueda de los cambios de un fichero o función. El nombre de las variables locales se escriben en mayúsculas. Hay dos espacios entre frases. Puede usar ``C-x 4 a'' en Emacs para añadir una entrada nueva a ChangeLog. Si hace esto con la marca en una función, Emacs pondrá automáticamente el nombre de fichero y de la función por usted. No mande un parche para el fichero ChangeLog. Mejor incluya las entradas de ChangeLog en el mensaje que contiene el parche. Distintos parches para los ficheros ChangeLog normalmente están en conflicto. Si tiene el árbol de código fuente original en el directorio "hurd-orig", y el árbol de código fuente modificado en el directorio "hurd", el comando siguiente producirá un buen parche (por favor, asegúrese de que no hay ficheros de más(como copias de seguridad) en el árbol modificado, o no ponga la opción "-N"). Necesitará recoger las entradas de ChangeLog de manera separada. # diff -x ChangeLog -Nurp hurd-orig hurd Las respuestas fueron dadas por:
|
Return to GNU's home page.
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
Please send comments on these web pages to web-hurd@gnu.org, send other questions to gnu@gnu.org.
Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Each section is copyright its respective author(s). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts.
Updated: $Date: 2007/01/20 15:38:11 $ $Author: tschwinge $