tiri | wolfgang: va a dar una presentacion acerca de GNU HURD, el descubrio HURD en 1999 u a dado bastantes conferencias desde aquella |
tiri | porfavor redirigir las preguntas en #qc, en aleman en #taee, en español en #redes |
tiri | VOy a hablar acerca de HURD, y explicare por que GNU lo desarrolla, apesar de existir un kernel maduro y popular para el sistema GNU, que es porsupuesto Linux |
tiri | HURD, no es un kernel. Junto con la libreria GNU C (glibc) y el microkernel GNU MAch, provee la funcionalidad y tradicionallidad de un kernel UNix |
tiri | Estos tres componentes juntos con el resto del sistema gnu (que incluye gcc, GNUME, etc, y el resto de software No-GNU como X11) proporcionan un Sistema Opreativo conforme a POSIX |
tiri | en este punto, algunas notas de terminologia |
tiri | GNU Hurd (o simplemente Hurd) es el nombre de nua parte del sistema. GNU/Hurd es el mismo nombre para el sistema entero. TU puedes pensar en GNU/Hurd como "El sistema basado en HURD GNU) |
tiri | basicamente el sistema funciona como acontinuacion: |
tiri | las aplicaciones del mundo UNix (Yo las llamare aplicaciones conformes a POSIX) usan funciones de la libreria C donde ellas podrian usar llamadas al kernel Unix en un tradicional Unix. Estan son funciones basicas como read() write(), fork(), etc |
tiri | la libreria C comunica con los servidores Hurd para implementar esas funciones |
tiri | pero los servidores Hurd no son especiales de ninguna manera, son simplemente programas. pero ellos tambien pueden usar la libreria C |
tiri | yo puedes pensar en esos servidores-Hurd como demonios |
tiri | s/yo/yu |
tiri | tenemos un servidor que implemente el sistema de ficheros ext2 |
tiri | otro que implementa el protocolo TCP/IP |
tiri | tambien tenemos un servidor que implemente /dev/null |
tiri | a pequeña nota acerca de la especificacion POSIX |
tiri | alguna gente piensa que incluso Windows NT es conforme a POSIX |
tiri | pero no es realmente el caso. Solo implementa algunas partes _muy_ basicas de POSIX |
tiri | donde GNU/Hurd es completamente conforme a POSIX. |
tiri | bien, chinches de modulos naturalmente |
tiri | :) |
tiri | esto es un punto muy importante: de momento somos compatibles, es decir, tu puedes usar todos los programas libres que quieras en GNU/Hurd. Al menos si estan escritos en algo portable |
tiri | pero, GNU/Hurd es una combinacion de compatibilidad y nuevos conceptos |
tiri | pero conocemos acerca los nuevos conceptos |
tiri | os, espera, olvide algo :) |
tiri | e olvidado bastante, Primero quise hablar de la historia y motivacion que hay detras de Hurd |
tiri | como tu probablemente sepas, RIchard Matthew Stallman empezo a desarrollar el sistema GNU en 1984 |
tiri | el principal objetivo era que fuese libre, para ser superior a los sistemas propietarios moralmente, socialmente y eticamente |
tiri | pero tambien fue un objetivo tecnico mejor |
tiri | si tu comparas el software GNU con el software de Unix, tu estaras notando de que. El software Unix suele tener limites arbitrarios. Por ejemplo, en muchos softwares unix, las lineas de entradas no pueden ser mas largas de 1024 caracteres pero pueden ser trucadas |
tiri | bien, tenemos una pregunta: <riel> Es posible ejecutar software no libre en Hurd? |
tiri | si es posible, pero no creo que nadie quiera hacer eso ahora |
tiri | no somos completamente binariamente compatibles con GNU/Linux, es decir, tu no puedes usar la mayoria de los programas no libres actualmente. Hay muchas razones tecnicas que pueden ser problematicas al ABI (Aplicacion binaria Interface)-compatible con el, puedo decir mas acerca de esto mas tarde si estas interesado |
tiri | si, es suficiente, puedes comunicarte con los servidores Hud directamente, desde que pudes usar Metodos de Llamada remotos para comunicarte con ellos. es decir no hay enlaces involucrados |
tiri | nosotros tenemos otra pregunta: bien, ser capaz a, y ser |
tiri | legalmente permitido a, es cosas diferentes.. es el lgpl-ness |
tiri | de glibc suficiente a escudo todos programas desde GPL |
tiri | "enlazando" clausula (para usar los hurd servidores)? |
tiri | bien, volviendo al tema original: las limitaciones arbitrarias de los programas Unix y como GNU trata de hacerlo mejor |
tiri | en realidad, el diseño entero de Hurd esta basado en la idea de no imponer limitaciones arbitrarias a los usuarios |
tiri | es decir, si tu tienes una imagen ISO en un cd-rom, tu puedes montarlo desde el fichero el cd coimo un usuario sin necesidad de permisos especiales. no hay problema desde que el servidor iso9660fs se ejecutara como tu user-ide. es justo un programa que ejecutaste |
tiri | pero tu puedes hacer mas cosas que solo esto |
tiri | en realidad, si tu cambias todos los aspectos de un sistema como tu quieres. Puedes crear tu propio mundo, usando componentes-POSIX donde tu quieras y tus propios componentes |
tiri | si no |
tiri | tenemos una pregunta <sarnold> hay problemas de seguridad permitiendo a los usuarios modificar el espacio de nombre del sistema de ficheros? o es el usuario haciendo el mount que solo el usuario puede verl el sistema montado? |
tiri | hay mucho acerca de lo que puedo decir sobre eso |
tiri | y aqui sigue: <sarnold> si es asi, que pasa si dos usuarios tratan de montar el mismo punto de montaje? (suena como un problema...) |
tiri | voy a tratar de responder ala segunda pregunta primero, es mas facil :) |
tiri | tu puedes montar solo algo en un nodo como quieras. pero dos usuarios tratando de usar el mismo nodo es imposible |
tiri | eso parcialmente responde ala primera pregunta tambien |
tiri | tu solo puedes usar en tu directorio home (o en otros lugares como /tmp /var/tmp por supuesto) pero esto no es una restrincion, desde que tu tambien puedes estar tu propia copia completa Hurd, tu puedes tener tu propio sistema de ficheros root (que otros no pueden ver) que tu puedes modificar como quieras |
tiri | tenemos una pequeña interrupcion aqui. <Arador> y tu puedes montar algo (una imagen iso en un nodo loop por ejemplo) para N usuarios? |
tiri | No estoy seguro de si hay alguna manera simple de hacerlo actualmente. Definitivamente es posible cambiar tu propia configuracion de autentificacion de servidor. pero no es el mismo trabajo, pero es posible |
tiri | simplemente todo es algo que puede funcionar como una taera, simplemente empezamos a trabajar en algun punto del futuro |
tiri | volviendo ala pregunta acerca de fallos de seguridad |
Arador | desde que puedes poner cosas aleatorias en la parte del sistema de archivos que te pertenece, podrias meter a alguien en una trampa si accede a tu parte del sistema de ficheros |
Arador | Por ejemplo, si pones un sistema de ficheros en tu directorio raiz que sea puramente virtual (pensad en /proc de GNU/Linux) y crea un directorio sinfin dinamicamente, podria ser dificil para al administrador borrar tu directorio raiz cuando borre tu cuetna ;) |
Arador | asique tendria qeu borrar todos tus archivos propios primero. |
Arador | SI hace eso, todo va bien |
Arador | Este es un simple hecho que tienes que pagar cuando permitese a los usuarios cambiar su entorno. La gente solo necesita estar al tanto de que se puede cambiar el entorno |
Arador | pero adivino qe una persona que no hace esa cosa basica en un sistema mejor no deberia administrar un sistema con varios usuarios |
Arador | una pregunta: <sarnold> hay una manera facil de prevenir que los usuarios monten nuevos sistemas de ficheros por parte del administrador, para evitar cosas como while true; do mount; done ? |
tiri | SI tu ejecutas un servidor de sistema de ficheros, el se ejecuta como tu proceso, esta pregunta es vasicamente como "puede el administrador parar a los usuarios de ejecutar muchos procesos" y porsupuesto eso es posible. Incluso es posible hacerlo en Unix. No estoy seguro si esta implementado en GNU/Hurd todavia. |
tiri | si deseas prevenir _generalmente_ a tus usuarios de sus propios servidfores, es muy facil |
tiri | usa un sistema de ficheros para /home que no soporta esto. Tu puedes crear ese sistema de ficheros facil. En realidad, algunas presonas lo hacen accidentalmente cuando instalan Debian GNU/Hurd y entonces olvidan por que algunas cosas no funcionan |
tiri | ;) |
tiri | osea que, GNU/Hurd trata de no imponer limites en el usuario si eso puede ser avolido. Es suficientemente malo que si el hardware es limitado, por que deberiamos añadir mas restrinciones al software? :) |
tiri | (excepto para los casos donde nosotros _queremos_ limitar esas cosas por metodos de seguridad) |
tiri | y puede haber otro pequeño aspecto en el sistema: La filosofia UNix dice que todos los prorgamas deberian de ser simples y flexibles y que se debieran de combinar. Eso es lo que se a conseguido en Hurd, el kernel Unix en realidad viola este principio, como hace en scheduling, soporte de hardware, sistemas de ficheros, protocolos de red, y demas cosas.. |
tiri | esto significa que los diseñadores de Unix fueron tontos, porsupuesto :) ellos son actualmente normales xD |
tiri | ellos tenian que diseñar Unix para ordenadores menos potentes que una tipica calculadora de hoy. es necesariamente simple para hacerlo de esa manera |
tiri | en hurd, pensamos que ahora es tiempo de repensar esas viejas decisiones, todo a cambiado mucho desde aquella |
Arador | desde entonces. De vuelta, los sistemas de archivos definidos por el usuarios no eran posibles, asique nadie los pidio, pero hoy, todo el mundo los quiere, y hay varias aproximaciones a ellos |
Arador | el VFS de gnome es un ejemplo, los ioslaves de kde son otro. Libferris es todavia otro |
Arador | todos estos tiene algo en comun: estan haciendo cosas de una manera que limita su usabilidad: tienes que escribir tus propis programas para usarlos. Los programas existentes no se benefician |
Arador | Y lo que es la mayor ventaja de hurd: lo hacemos todo a nivel del sistema de archivos, asique no necesitas modificar ninguna aplicacion POSIX para beneficiarte de las caracteristicas de Hurd! |
Arador | *wolfgang encuentra esto tan emocionante |
Arador | bien, ahora vamos a ejemplos concretos |
Arador | desde luego, tenemos sistemas de archivos como ext2fs, ufs y fatfs |
Arador | y adicionalmente a estos sistemas de archivos de almacenamiento, tenemos sisyemas de archivos como nfs y ftpfs |
Arador | este ultimo es muy bonito, puedes hacer "tail -n 2 /ftp/ftp.debian.org/pub/welcome.msg" y cosas como esta |
Arador | algunas personas ven problemas en esos con cosas como "algunas operaciones como añadir a un archivo son terriblemente ineficintes sobre ftp" Eso es verdad, pero si lo consideras un problema, no lo uses :) a pesar de todo, es util tenerlo |
Arador | tenemos una pregunta: <Arador> como maneja ftpfs cosas como "contraseña incorrecta" y "timeout" a las aplicaciones POSIX? |
Arador | bien, adicionalmente a estos sistemas de archivos tenemos otros virtuales como GNU/Linux tiene /proc y devfs |
Arador | pero hay mas que eso |
Arador | un servidor puede disponer a un solo nodo, como /dev/null o /dev/random |
Arador | y tenemos uno en particular: " el traductor "run" (oh, he olvidado mencionar que los servidores que residen en el sistema de archivos se llaman tambien traductores) |
Arador | cuando ejecutas "run", lo provees con un comando shell. Cuando abres el archivo donde "run" esta, ejecutara ese comando, y cuando lo leas de el conseguiras la salida de ese comando |
Arador | asique le puedes decir que ejecute "fortune", en cada "cat foo" mostrara una nueva "fortune" |
Arador | (que puede usarse para generar firmas aleatorias para emials - o para lo que quieras) |
Arador | <vegai> wolfgang: En ese ejemplo, "foo" es un traductor, correcto? <vegai> el traductor-run, eso es |
Arador | si, es el nodo donde el traductor descansa, por ejemplo "puntodemontaje" |
Arador | todo esto seria bonito, pero todavia hay mas posibilidades |
Arador | un traducto no necesita implementar el protocolo del sistema de archivos. Puede implementar cualquier protocolo |
Arador | Por ejemplo, la pila IP implementa la interfaz de sockets, obviamente |
Arador | <sarnlod> Se ejecuta el traductor con privilegios de quien quiera que ejecute "run" o a quien quiera que haga el read(2)? |
Arador | un traductor siempre se ejecuta con los privilegios del usuario del nodo que traduce (el "puntodemontaje") |
Arador | asique los permisos necesitan estar bien, como siempre |
Arador | hay una razon simple para eso |
Arador | si iso9660 traduce /cdrom (o /mnt/cdrom si lo prefieres) entonces necesita acceder a /dev/cd0. Lo mismo para otro sistema de archivos: si tienes un etx2fs en /var, ese servidor necesita poder escribir a por ejemplo /dev/hd0s3. Y por supuesto los usuarios no deberian estr permitidos a usar eso directametne |
Arador | vale, la utlima cosa que mencione fue la pila IP, que provee la interfaz de sockets (y esta disponible en /servers/socket/inet y - si quieres ir por numero de protocolo en vez de por nombre - /servers/socket/2) |
Arador | Por supuesto no est as limitado a las interfaces que Hurd usa. Puedes usar tus porpias interfaces, y simplemente usar el sistema de archivos como espacio de nombres para el "apreton de manos" entre un servidor y sus usuarios |
Arador | Solo piensa por ti mismo un poco sobre lo que puedes hacer con todo eso. Estoy seguro de que podas venir con algunas interesatnes ideas. No hay problema de si hay sistemas de archivo virtuales, nodos unicos o cosas completamente diferentes |
Arador | una pregunta <vegai> que ahy sobre la independencia de lenguaje? es C la unica opcion para codificar traductores? |
Arador | hace mucho tiempo, alguien escribio un modulo para escribir traductores en perl ( e implemento uno con el, pero no uno util ;-)) |
Arador | pero en general, se neceseita mucho trabajo para hacer conveniente escribir traductores varios en cualquier lenguaje |
Arador | Esto muy interesado en eso yo mismo, pero actualmente otras cosas son ciertamente mas urgentes |
Arador | Asique si alguien esta interesado en eso, no dudeis en contactar conmigo |
Arador | <sarnold> Si no te importa (je je, debes estar cansado de mi :) Cual es lo mas importante en la lista de cosas por hacer? |
Arador | no estoy seguro de que esa lista entre en memoria :) |
Arador | bien, creo que tenemos algunas listas online incluso, esperad un segundo |
Arador | unas pocas cosas muy urgentes estan listadas en http://hurd.gnufans.org/bin/view/Hurd/GNUHurdStatus |
Arador | tenemos una pregunta muy interesante: <mentor> tanto como puedo ver: esencialmente los traductores/servidores HURD proveen un servicio en un contexto diferente (contexto de procesador, de seguridad y otros conextos que mantiene el microkernel); seria considerando util implementar servicios de una manera que los contextos especificos se puedan elegir para segregarlos? |
Arador | bien, los traductores estan mas alla que eso :) entonces permite cambiar tu entorno como quieras (y los usuarios experimentados normalmente quiern que su entorno se encaje a sus necesidades mejor), pero seguro, la separacion es tambien un punto. Sin embargo, no estoy seguro a) como tu propuesta podria ser implementada, no ya en Hurd sino en cualquier parte, y b) cual seria la ventaja de ses aproximamiento |
Arador | bien, entonces dare un ejemplo mas de una caracteristica interesante. y una muy nueva de hecho |
Arador | la nueva implementacion de la consola |
Arador | ahora, tenemos un servidor de consola (un traductor) que provee un directorio para cada consola virtual |
Arador | puedes adherir un cliente de consola a el, que envia el archivo de "entrada" en el directorio de la consola virtual, y consige los contenidos del "display" en el mismo directorio |
Arador | el cliente no necesita sondear los datos del display: simplemente requiere notificar cambios, una caracteristica que se provee por sistemas de archivos de almacenamiento normales como ext2fs. Eso por otra parte podria ser bastante interesante para implementar como Sistema de Deteccion de Intrusos |
tiri | la cosa buena es acerca de esta implementacion de consola es que tu puedes añadir multiples clientes al mismo servidor |
tiri | asi que puedes trabajar en un ordenador, despues ir a otro ordenador, ssh en la red al primero y ser capaz de coger tus consolas originales - todas ellas |
tiri | No pienso que necesite mencionar que la consola soporta unicode dondesea etc. |
tiri | Pienso que la nueva consola es un buen ejemplo de como el diseño de Hurd puede ser usado para implementar cosas nuevas poderosas |
tiri | Ok, ahora voy a concluir refiriendome a http://hurd.gnu.org/ http://www.debian.org/ports/hurd , http://hurd.gnufans.org/ y por supuesto http://hurd.es.gnu.org/ . Para mas informacion ¿alguna pregunta? |
tiri | * wolfgang podria seguir hablando acerca de los servidores de Hurd durante bastantes dias :) |
tiri | <vegai> Estoy impresionado, que el microkernel actual esta limitado en varias cosas, y esta siendo reemplazado por L4. QUe causara esto en el actual Hurd? |
tiri | Mach fue un microkernel de primera generacion, es decir, ciertamente no es perfezto. |
tiri | de todas formas, hay planos para cambiar L4 de alguna menra en el futuro, pero estan lejos de aqui. Hurd es lo ultimo incluso cuando se ejecuta en Mach :) |
tiri | para Hurd, significara que sera mejor, verdaderamente. y podremos cambiar algunas partes especificas de Mach. Afortunadamente dependemos de la semantica Mach en algunos lugares |
tiri | I ya se termino |