[Top] | [Contents] | [Index] | [ ? ] |
En este documento se desea proporcionar una guía sencilla y de fácil comprensión sobre cómo instalar el Hurd, con un esfuerzo mínimo.
1. Visión General Hacia donde vamos 2. Manos a la Obra ó Buscando un sitio para nuestro directorio Home Buscando un sitio para nuestro directorio Home 3. El Cargador de Arranque Obteniendo el Grub 4. Instalación Cruzada(Cross Install) Instalación desde otro sistema(CROSS INSTALLING) 5. Iniciando el Hurd 6. Instalación Nativa Terminando la instalación 7. Configuración Haciendo el sistema utilizable 8. Palabras Finales El PUF(Preguntas de uso frecuente) 9. Trabajos Citados Materiales de referencia
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
La distribución Debian GNU/Hurd, al contrario que las distribuciones de otros sistemas operativos, no tiene un bonito programa de instalación. Algún día lo tendrá, incluso puede que tú ayudes a diseñarlo y a programarlo. Sin embargo, hasta entonces, para instalar el sistema GNU/Hurd, necesitarás instalar el sistema base desde otro sistema operativo, más específicamente un sistema compatible con Unix. Tenemos noticia de instalaciones con éxito del Hurd desde diferentes versiones de sistemas GNU/Linux y de BSDs. Desde otro sistema no habría problema, siempre que sea compatible con el entorno Unix. Actualmente la única distribución existente de Hurd está basada en Debian, por eso, una instalación cruzada(CROSS INSTALLING) desde una distribución GNU/Linux puede simplificarte mucho la vida.
La instalación del Hurd emplea un script que se encarga del trabajo pesado. Entre su ejecución y la lectura de esta guía la mayoría de nuestro tiempo la pasaremos descargando ficheros. Sin embargo, antes de ejecutar esos scripts, necesitamos preparar el sistema. Ésto incluye crear una partición para el Hurd e instalar el cargador de arranque: Grub, (GRAND UNIFIED BOOT LOADER) el gran cargador unificado de arranque.
Esta guía trata de hacer el proceso de instalar el Hurd lo más sencillo posible. Si hay errores, seguramente serán del autor. Por favor, envíaselos junto con otras sugerencias y críticas, los aceptará amablemente.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Este puede ser el paso más largo para aquellos que no tienen una partición disponible o un disco duro extra. En ese caso necesitaremos reparticionar el disco duro. Una solución es usar Parted, el editor de particiones de GNU. Es capaz, no solo de editar particiones de forma básica, sino además de crearlas y editarlas. Podéis bajar el programa desde http://www.gnu.org/software/parted. El manual es bastante completo, e incluye varios tutoriales.
El Hurd soporta tamaños de particiones de hasta un giga. Las particiones mayores de este tamaño no funcionarán. Esta limitación es a causa de una decisión de diseño tomada varios años atrás, debido a la cual el servidor del sistema de ficheros mapea la partición entera en la memoria virtual. Como en la arquitectura ia32 sólo disponemos de 4 gigabytes de memoria virtual, de los cuales, únicamente 2 gigas están disponibles para la aplicación, y de éstos una porción significativa está reservada para el código, la pila y el heap, al final la parte de memoria virtual contigua que nos queda es generalmente de un gigabyte. Se ha planeado ya eliminar esta limitación. Sin embargo, otras tareas tienen una mayor prioridad por ahora.
Teóricamente, una partición de un giga es más que suficiente para un sistema utilizable. Mucha gente prefiere tener, sin embargo, al menos dos particiones: una, la partición de root y la otra, la partición de home. Esta estructura es muy aconsejable para desarrolladores interesados en debuguear los servidores del Hurd.
El Hurd añade varias extensiones al formato de ficheros ext2fs, como
pueden ser los traductores(translators) pasivos, y un cuarto triplete de
permisos para el usuario desconocido. Para sacar el máximo partido de
estas características, sin embargo, el dueño de la partición debe ser
puesto a Hurd
. El comando mke2fs
, a no ser que se
especifique en la línea de comandos, pondrá como dueño por defecto al
sistema operativo que estemos ejecutando. El Hurd respetará el dueño que
tenga el sistema de ficheros, así que debemos ser cuidadosos y poner
el valor correcto, o el Hurd puede fallar de maneras imprevistas.
Ten en cuenta, que aunque un sistema de ficheros tenga como dueño a un
sistema operativo concreto, los otros sistemas podrán hacer uso de dicho
sistema de ficheros, aunque algunas extensiones no estarán disponibles.
Para crear un sistema de ficheros usaremos mke2fs
y le pasaremos
`-o hurd' para designar a hurd como dueño del sistema de ficheros
recién creado. Por ejemplo:
# mke2fs -o hurd /dev/DEVICE |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Al contrario que GNU/Linux y los BSDs, el Hurd no tiene su propio cargador de arranque. Cualquiera que cumpla con el estandar multiboot puede ser usado para iniciar el Hurd. De momento, sólo hay un proyecto que satisface estos requisitos: Grub, el Grand Unified Boot Loader.
Unas palabras sobre Grub: Grub es muy potente, al contrario que los cargadores de arranque tradicionales en los x86, como es el caso del LILO. Tiene un intérprete de comandos, admite parámetros para el arranque, un terminal ligero, y una plétora de características. Además puede iniciar multitud de sistemas operativos. Si alguna vez has iniciado un alpha o un sparc, entenderás lo que Grub es capaza de hacer. Sin embargo, no te asustes: Grub es mejor. Te gustará. Después no usarás otro.
Para obtener el Grub, visita ftp://alpha.gnu.org/gnu/grub. Encontrarás
un targz y una imagen de disquete. Si te descargas el targz,se instala con
los configure
, make
, y make install
de siempre.
Incluye también un manual maravillosamente completo acerca del manejo de
Grub. Léelo. Si, por el contrario, eliges descargar la imagen de disquete,
es suficiente con volcarla a un disquete para obtener un Grub completamente
operativo:
# dd if=grub-boot-VERSION.image of=/dev/fd0 |
En el caso de que uses el Grub en el disquete, siempre estarás a tiempo de instalar Grub en tu disco duro, cuando lo decidas conveniente.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
El siguiente paso es descargar el sistema base de: ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/gnu-latest.tar.gz
El targz está preparado para extraer todo su contenido en el directorio
actual. Después de montar la partición y situarnos donde hayamos
montado la partición, sólo necesitaremos extraer el archivo. En el
siguiente ejemplo asumimos que la partición raíz está montada en
/gnu
.
# cd /gnu # tar --same-owner -xvzpf ~/gnu-latest.tar.gz |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ya está todo preparado para iniciar el Hurd por primera vez. Después de verificar que hemos introducido el disquete con el Grub en la disquetera, reiniciamos. Si todo va bien, saldrá por la pantalla el menú del Grub. Pulsa c para que aparezca la línea de comandos del Grub.
Lo primero será seleccionar el sistema de ficheros raíz. Grub usa una
nomenclatura de particiones un poco diferente de la de Linux o de la de
Hurd: tanto los discos IDE como los SCSI se denominan (hdN)
.
N
es el número del disco (empezando por el cero) en el orden en
que los detecta la BIOS. Es decir, Grub no hace distinciones entre discos
IDE o SCSI. Las particiones, como los discos, se empiezan a contar
desde cero: (hdN,N)
. Si esto te marea, no te preocupes, Grub va
a acudir en nuestra ayuda.
Para determinar en qué sistema de ficheros reside un fichero en particular,
se puede usar el comando find
. Cuando se ejecuta este comando,
Grub busca en cada sistema de ficheros el fichero especificado, y muestra
en pantalla dónde lo ha encontrado. En este caso vamos a buscar el kernel,
`/boot/gnumach.gz'.
grub> find /boot/gnumach.gz (hd0,0) |
Como podemos ver, Grub está indicando que `/boot/gnumach.gz' está en `(hd0,0)'. Entonces seleccionaremos la partición raíz:
grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 |
Ahora, necesitamos cargar el GNU Mach. Además de cargar el binario, debemos especificar por lo menos la partición raíz, la cual será usada por el propio Hurd, por lo que deberá estar escrita en términos que el Hurd entienda.
GNU Mach nombra los discos empezando por cero. Los discos IDE llevan el
prefijo hd
, mientras que los SCSI llevan el sd
. Al igual
que Linux, los discos son numerados según su posición en la controladora.
Por ejemplo, el primario maestro es hd0
, y el secundario esclavo
es hd3
. Las particiones usan la convención de notación de las
rodajas(slices) de BSD, y añaden sM
al nombre del disco para
indicar la partición a la que nos referimos. Ten en cuenta que M
empieza a contarse desde 1, no desde cero. El número de la rodaja(slice)
es fácil de calcular, sólo tienes que sumarle uno al número que usaste
para el Grub.
Como el Hurd aún no ha sido configurado, debemos iniciarlo en modo monousuario. Para ésto, lo único que necesitamos es añadir `-s' en la línea de comandos del kernel.
Entonces, continuando con el ejemplo anterior, y asumiendo que el primer disco está como maestro de la segunda controladora, tendríamos:
grub> kernel /boot/gnumach.gz -s root=device:hd2s1 [Multiboot-elf, ...] |
Lo siguiente a hacer es cargar el servidor del sistema de ficheros y el
servidor exec
. Ésto se hace usando la capacidad de carga del
Grub. Los parámetros son la manera mediante la cual el kernel pasa
algunos parámetros importantes a los servidores.
grub> module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) [Multiboot-module 0x1c4000, 0x2cfe6a bytes] grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) [Multiboot-module 0x494000, 0x27afe bytes] |
Es importante escribir cada cadena de un módulo en una sóla línea. Es aconsejable añadir lo anterior al fichero de configuración de Grub `menu.lst', tan pronto como sea posible.
Finalmente el Hurd puede ser iniciado:
grub> boot |
Siéntate y observa los mensajes. Ésto es en realidad más importante de lo que se podría pensar, porque hay un bug en GNU Mach que provoca que si se pulsa una tecla durante el proceso de arranque, se produce un kernel panic.
Si el Hurd no arranca, puede ser debido a interrupciones compartidas (shared IRQs): GNU Mach no trabaja bien con las interrupciones compartidas. Puedes comprobar las interrupciones mirando, por ejemplo, el fichero `/proc/interrupts' en GNU/Linux. Como GNU Mach no soporta los módulo cargables en el kernel, la mayoría de los drivers están compilados en el kernel que viene por defecto. Si tienes periféricos viejos ésto puede suponer un problema: un dispositivo puede responder mal, a un intento de prueba diseñado par otro dispositivo. Compilando un nuevo kernel con únicamente los dispositivos requeridos, normalmente se resolverá este problema. GNU Mach se cross compila fácilmente. Si estás usando Debian, prueba el paquete `gcc-i386-gnu'.
Si lo anterior no te ayuda, mira en la lista de fuentes de información al final de este documento. Por último, pregunta en la lista de correo apropiada.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Una vez que aparece el prompt, y siempre que el Hurd esté en modo monousuario, será necesario seleccionar el tipo de terminal:
# export TERM=mach |
Ten en cuenta que CONTROL-C y familia no funcionan en modo monousuario.
Ahora podemos ejecutar el script native-install
. Ésto configurará
los paquetes y algunos traductores importantes.
# ./native-install |
Justo antes de que el script termine, sacará el mensaje de que necesita ser
ejecutado una segunda vez. Sigue las instrucciones para reiniciar, usando el
comando reboot
. Una vez más inicia en modo monousuario y ejecuta
./native-install
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Necesitaremos configurar el traductor pfinet para configurar la red.
Se hace usando el comando settrans
para asociar un traductor a
un nodo determinado del sistema de ficheros. Cuando los programas acceden
al nodo, para, por ejemplo, mandar un RPC, el sistema operativo iniciará de
manera transparente el servidor para llevar a cabo la tarea requerida.
# settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \ -a a.b.c.d -g e.f.g.h -m i.j.k.l |
Hemos pasado varias opciones a settrans
. Las primeras dos,
`fg', obligan a que se finalice cualquier traductor preexistente.
Las dos siguientes, `ap', producen traductor activo y pasivo
respectivamente. Ésto significa que el sistema operativo inicia el
traductor inmediatamente y guarda la configuración en el nodo del sistema
de ficheros. Lo anterior también hace que cualquier mensaje de error sea
enviado a `stderr'. El siguiente argumento `/server/socket/2',
es el nodo al que asociamos el traductor. Lo que sigue es el programa
traductor a ejecutar y los argumentos que se le pasan.
Se puede obtener ayuda sobre el comando settrans
si le pasamos
la opción `--help'. Del mismo modo, podemos obtener ayuda sobre
cualquier traductor específico con el mismo argumento, p. ej.:
# /hurd/pfinet --help |
Como puede producirse una gran cantidad de datos de salida, considera usar un paginador a través de una tubería.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A continuación edita `/etc/fstab' para añadir la partición home y
el espacio de swap. Por defecto, nano
es el único editor instalado
en la distribución base. Es muy importante que se use el swap. El
Hurd será un orden de magnitud más estable. Ten en cuenta que el Hurd
puede no sólo compartir transparentemente una partición de swap con Linux
sino además paginar correctamente a cualquier dispositivo, incluido una
partición sin formato(raw), o incluso a tu partición home.
Aquí mostramos un ejemplo del fichero `/etc/fstab':
# <file system> <mount point> <type> <options> <dump> <pass> /dev/hd2s1 / ext2 rw 0 1 /dev/hd2s2 /home ext2 rw 0 2 /dev/hd2s3 none swap sw 0 0 |
Recuerda crear los dispositivos necesarios con el comando MAKEDEV
.
Usa el traductor nfs
para montar una partición nfs. Cuando eres
un usuario distinto del root, el traductor conectará, por razones obvias,
al servidor de nfs en un puerto superior al 1024. Para hacer ésto
correctamente bajo GNU/Linux, la opción insecure debe añadirse a la
línea de export. Mostramos un ejemplo de fichero `/etc/exports':
/home 192.168.1.2(rw,insecure) |
Para montar ésto en un ordenador con Hurd:
# settrans -cgap /home /hurd/nfs 192.168.1.1:/home |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Finalmente, reinicia en modo multiusuario, se hace de la misma manera que en modo monousuario pero no poniendo la opción `-s' cuando cargamos el kernel. ¡Feliz Hacking!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Para entender el Hurd, comienza por su página en la web de Debian: http://www.debian.org/ports/hurd/. Después prueba la web de GNU: http://hurd.gnu.org.
Considera también la lectura del código fuente y el escribir más documentación
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Cargar siempre el kérnel a mano puede ser muy tedioso. Considera el editar el fichero `/boot/grub/menu.lst' en el disquete. Modifícalo apropiadamente; arrancar el sistema será ahora mucho más fácil y rápido.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Por defecto, en el directorio `/dev', no se crean muchos dispositivos.
Al igual que otras versiones de Unix, el Hurd tiene un script
MAKEDEV
. Ejecútalo par crear los dispositivos que necesites.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Hay varias maneras para añadir paquetes. Descargándolos y usando
dpkg
funciona, pero es tedioso. Es más fácil emplear
atp-get
o dselect
. Edita el `/etc/apt/sources.list'
y añade las dos líneas siguientes:
deb ftp://alpha.gnu.org/gnu/hurd/debian unstable main deb ftp://ftp.debian.org/debian unstable main |
ftp://alpha.gnu.org contiene paquetes que tienen hacks y parches que aún no han sido integrados en el sistema. No hay espejos(mirrors).
Para usar un espejo(mirror) local de Debian, visita la página http://www.debian.org/distrib/ftplist.
Generalmente, ejecutando dselect
después de la primera
instalación, descargará muy convenientemente los paquetes restantes
del sistema base. Después cada uno puede instalar los paquetes a su
gusto.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
# cd /dev # ./MAKEDEV kbd |
# settrans /dev/mouse /hurd/mouse --device=com0 --protocol=microsoft |
Asegúrate de que existe `/dev/com0'. Si no, créalo mediante
MAKEDEV
de la manera habitual.
PS/2 no requiere un dispositivo. Es tan simple como:
# settrans /dev/mouse /hurd/mouse --protocol=ps/2 |
Para otros ratones, ejecuta `/hurd/mouse' con la opción `--help'.
xf86setup
para configurar las X, sin
embargo, será más fácil copiar un fichero de configuración que funcione
de otro sistema operativo que se ejecute en el mismo ordenador y
colocarlo en `/etc/X11/XF86Config-4'.
Ahora, cambiad la sección del ratón:
Section "Pointer" Protocol "osmouse" Device "/dev/mouse" EndSection |
Emulate3Buttons
puede ser añadido opcionalmente. Las demás
opciones no funcionarán.
LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH |
startx
xterm
no funciona correctamente; prueba rxvt
.
update-menu
no funciona aún. Así que no podemos uar los
bonitos menúes de Debian.
pthreads
,
no esperes que funcione gnome, de todas formas, Window Maker, TWM,
Blackbox y FVWM funcionarán.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
El Hurd no tiene terminales virtuales. En su lugar usa screen
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
PPP está disponible. Instala el paquete `um-pppd'.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
"The Easy Guide to Installing Hurd on a Linux Box" Copyright (C) 1999 Matthew Vernon matthew@debian.org. http://www.pick.ucam.org/~mcv21/hurd.html
[Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
1. Visión General
2. Manos a la Obra ó Buscando un sitio para nuestro directorio Home
3. El Cargador de Arranque
4. Instalación Cruzada(Cross Install)
5. Iniciando el Hurd
6. Instalación Nativa
7. Configuración
8. Palabras Finales
9. Trabajos Citados
[Top] | [Contents] | [Index] | [ ? ] |
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ < ] | Back | previous section in reading order | 1.2.2 |
[ > ] | Forward | next section in reading order | 1.2.4 |
[ << ] | FastBack | previous or up-and-previous section | 1.1 |
[ Up ] | Up | up section | 1.2 |
[ >> ] | FastForward | next or up-and-next section | 1.3 |
[Top] | Top | cover (top) of document | |
[Contents] | Contents | table of contents | |
[Index] | Index | concept index | |
[ ? ] | About | this page |