Preguntas Frecuentemente Formuladas sobre the GNU
Hurd
Este 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
address@hidden
Traducción al Español: Gonzalo Fernández Hernández <address@hidden>
1. Generalidades
1.1. ¿Qué
es un Micronúcleo Multiservidor?
1.2. Gramaticalmente,
¿qué es the Hurd?
1.3. ¿Hay
alguna lista de correo?
1.4. ¿Dónde
puedo reportar errores?
1.5. ¿Hay
alguna lista de cosas por hacer?
1.6. ¿Para
cuándo la próxima versión estable?
1.7. ¿Por
qué "/usr" es un enlace blando a
"."?
2. Instalación
2.1. ¿Donde
puedo obtener Debian GNU/Hurd?
2.2. ¿Cómo
se instala Debian GNU/Hurd?
2.3. ¿Qué
tipo de hardware soporta?
2.4. ¿Qué
tipo de partición debo usar para mis particiones
GNU/Hurd?
2.5. ¿Cómo
llamo a mis particiones?
2.6. ¿Puedo
usar particiones mayores a 1GB?
2.7. ¿Cuanta
memoria de intercambio(swap) necesito?
2.8. ¿Puedo
compartir mi espacio de intercambio(swap) entre
GNU/Linux y GNU/Hurd?
2.9. ¿Por
qué me sale "Operation not permitted
error"?
2.10. Después
de terminar la "instalación nativa", tuve
que escribir de eessttaa ffoorrmmaa. En particular,
tuve que poner "rreebboooott" para
reiniciar.
3. Configuración
3.1. ¿Cómo
puedo añadir una partición de intercambio(swap)?
3.2. ¿Cómo
puedo configurar una red? ¿Cómo puedo configurar un
dispositivo de bucle(loopback)?
3.3. ¿Cómo
puedo pasar opciones a "serverboot"?
3.4. ¿Puedo
usar la versión de GNU/Linux de "e2fsck"
en una partición GNU/Hurd?
3.5. ¿Por
qué no me funcionan las tuberías(pipes)?
4. Uso
4.1. ¿Dónde
está la documentación?
4.2. ¿Qué
es un traductor(translator)?
4.3. ¿Qué
es el login shell?
4.4. ¿Cómo
puedo usar un teclado no-US?
4.5. ¿Cómo
activar el color en la consola?
4.6. ¿Cómo
puedo activar consolas virtuales?
4.7. ¿Cúal
es el estado de X?
4.8. ¿Por
qué no funciona X?
4.9. ¿Qué
son esos pids extraños "2" y
"3"?
4.10. ¿Por
qué `ps aux' me devuelve unos resultados extraños?
4.11. Se
me ha colgado un proceso y lo quiero matar, pero
"ps" también se me ha colgado.
4.12. ¿Dónde
están...
4.13. ¿Hay
un sistema de ficheros "/proc"?
4.14. ¿Por
qué el comando "df" no funciona?
4.15. ¿Por
qué están muriendo mis traductores?
4.16. ¿Por
qué no puedo "leer" un directorio?
5. Resolución
de problemas
5.1. Cuando
el soporte de APM de la BIOS suspende los discos
duros, the Hurd es incapaz de despertar. ¿Qué le
pasa?
5.2. What¿Qué
son esos mensajes sobre "default pager",
"paging" y "pager request"?
5.3. ¿Qué
es un gratuitous error?
5.4. ¿Qué
significa "/dev/hd0s1: MOUNTED READ-ONLY; MUST
USE 'fsysopts --writable'"?
5.5. Cuando
GNU/Hurd se cuelga, GNU Mach reinicia el sistema
automáticamente. ¿Hay alguna forma de que se pause
para que yo pueda anotar el error?
6. Portando
6.1. ¿Qué
programas ya han sido portados?
6.2. ¿Es
fácil portar programas?
6.3. ¿Cómo
puedo ayudar?
7. Compilando
7.1. ¿Dónde
puedo conseguir el código fuente?
7.2. ¿Puedo
hacer una compilación cruzada?
7.3. ¿Algún
consejo general?
8. Desarrollo
8.1. ¿Qué
es OSKit-Mach?
8.2. ¿Dónde
está la documentación?
8.3. ¿Cómo
me puedo asegurar de que mi código cumple las normas
POSIX?
8.4. ¿A
quién tengo que enviar los parches?
8.5. ¿En
qué formato deben estar los parches para the Hurd y
GNU Mach?
{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
{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 ordenador 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".
{NHW} Hay cuatro listas de correo principales:
Puede suscribirse de la manera habitual.
{NHW} Use el sistema de reporte de errores de Debian.
Puede encontrar más sobre él en http://www.debian.org/Bugs.
{NHW} Sí, de hecho, hay varias:.
{NHW} Nadie parece saberlo. De todas formas, the Hurd
es definitivamente ejecutable, pruébelo y ayúdenos a
alcanzar nuevas versiones.
{MB} La distinción ente "/" 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.
{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
{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/
{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.freesoftware.fsf.org/thug/gnumach_hardware.html
Si usted tiene problemas, es probable que:
- Esté usando IRQ sharing; GNU Mach no lo soporta
en absoluto.
- Un driver de un dispositivo está monopolizando
el hardware e activando accidentalmente el
dispositivo incorrecto.
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.
{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.
{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.
{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.
{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.
{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.
{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".
{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 accidentalemente..
{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".
{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.
{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".
{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.
{MB} Use "settrans -fgc /servers/socket/1
/hurd/pflocal", con eso debería funcionar.
{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.
{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.
{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. Esta, no obstante, debe ser activado
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.
{NHW} Eche un vistazo a:
ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/keymap.tar.gz
{NHW} Si usted está usando el micronúcleo GNU Mach,
puede cambiar su terminal a "mach-color". Por
ejemplo:
# export TERM=mach-color
{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 <address@hidden>
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
{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
{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.
{MB} Dos es el núcleo, tres es el paginador por
defecto y cuatro es el sistema de ficheros raíz(root).
{MB} Pruebe con "ps Aux".
{MB} Interrúmpalo y pásele la opción
"-M".
{NHW} Por defecto, "ps" obtiene información
deel 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.
{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.
{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.
{NHW} Funciona, sólo tiene que ponerle a que sistema
de ficheros se refiere. E.g.
# df /
{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.
{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.
{MB} La versión actual de GNU Mach no soporta APM, lo
siento. Por favor, desactive APM en la configuración de
su BIOS.
{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).
{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.
{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).
{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.
{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.
{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.
{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.
{NHW} El código fuente está almacenado en un CVS en:
:pserver:address@hidden:/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.
{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 <address@hidden>
támbien nos habla de sus experiencias en:
http://lists.debian.org/debian-hurd-0012/msg00062.html
{NHW} Sí, no se ha probado el incorporar el árbol de
código fuente. Pruebe con:
# ../src/hurd/configure ...
{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
{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.
{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
{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.
{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 una atadura 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 <address@hidden>
* 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:
|