Project GNU/Hurd: ambición

No sé yo, pero el proyecto Hurd se inició en el 1990 (un año antes que Linux!) y con todo, al lado de Linux está muy, pero que muy verde.

Según Linus el problema es este:

http://mooreslore.corante.com/archives/2004/10/26/linus_calls_hurd_dead.php

[Lo que sigue no es una traducción del enlace, sino un extracto/análisis de sus ideas]

El problema del proyecto GNU/Hurd, es que al poco de nacer lo bautizaron como el kernel del proyecto GNU, esta tarea la acabó desarrollando Linux, aunque aún algunos piensan que cuando Hurd salga a la luz (en versión estable) será su turno. Así, desde el punto de vista de los desarrolladores, Hurd debe sustituir a Linux y esto es un trabajo muy duro porque ellos se preocupan demasiado por la eficiencia de Hurd y pierden mucho tiempo provando y decidiendo qué microkernel utilizar como base para Hurd: Mach, L4, que si ahora se está desarrollando otro microkernel llamado Coyotos que parece ser la bomba… [ya hablaré de microkernels otro día] Y así no se llega a ninguna parte, o almenos no se avanza. Aunque la portabilidad entre los diferentes micro-kernels ya era y es un requisito del proyecto Hurd.

 

Por otra parte, los desarolladores, que recordamos, que son voluntarios, no cobran un duro y gastan su tiempo libre programando, trabajan bajo presión porque saben que cuando terminen de hacer los últimos retoques para adaptar Hurd al micro-kernel de turno, tendran que empezar con los drivers de los dispositivos (por ejemplo, Hurd no me reconoció mi targeta de red que era una Gigabit, cuando Linux sí que la reconoce y la tube que cambiar), los sistemas de ficheros de los discos (de momento Hurd sólo se puede instalar sobre ext2) y demás. Esto es mucho trabajo (pero mucho) y sinceramente, ¿uno gastaría su tiempo libre en una tarea que nada más empezar es una montaña enorme? yo, me lo pensaría dos veces.

 

Aún así, se debe tener en cuenta que el trabajo de voluntario es para pasar el rato y no para comerte el mundo creando el mejor sistema operativo, se debe tener en cuenta que desarrollando un proyecto como Hurd un pasa el rato y aprende mucho, que al fin y al cabo, creo que esto es la motivación principal de pasarte todo el puente intentando hacer que funcione Hurd.

 

En conclusión, el problema de Hurd es la gran ambición que lleva detrás que se convierte en una gran presión para los desarrolladores para hacer algo perfecto y en una gran decepción para los usuarios o nuevos/futuros desarrolladores que quieren provar el proyecto (aunque sea en su versión de pruevas) y ven como aunque el proyecto tiene 17 años de vida aún está con pañales.

kernel vs Micro-kernel

Aunque la comparación entre kernels y microkernels irá en la documentación del proyecto, voy abriendo boca:

Eran a medianos de los 80 cuando se describen los micro-kernels, que al ser modulares eran más fáciles de actualizar, modificar, agregar nuevas funciones y si había un error en un módulo, solo afectaba a dicho módulo y no el sistema entero (como, en teoria, ocurre con los kernels monolíticos). Pero otros decían que eran más lentos y complejos en cuanto a código.

Esto se ve que tubo sus discusiones, charlas y demás, aunque lo más memorable parece ser un intercambio de mails entre Linus Torvalds y Andy Tanenbaum un professor de universidad defensor de micro-kernels y creador de minix (gana Linus xD):

http://people.fluidsignal.com/~luferbu/misc/Linus_vs_Tanenbaum.html

Instalar Debian GNU/Hurd: fustración

Este puente lo he aprovechado para trabajar un poco con el proyecto (Hurd & Gnome), sinceramente, ha sido muy fustrante.

El miércoles, descargué una nueva versión del disco de instalación que la gente de hurd había colgado el 28 de Noviembre, yo temblaba pues mi idea era hacer cosas muy básicas con GNU/Hurd (hacerlo facil de instalar, configurar correctamente el teclado, correr Gnome, …) y temía de que todas estas funciones ya las hubieran implementado y hecho públicas.

Pero por suerte o desgracia, no ha sido así (por suerte porque almenos puedo continuar con mi proyecto, por desgracia porque no me han quitado nada de trabajo ;P), lo único que veo de nuevo con este nuevo CD es un menu de instalación más amistoso, que no deja de ser un poco más pobre de lo que es el menu de instalación de Debian GNU/Linux, más pobre en el sentido de que con la de Linux tiene más funciones como instalar grub, montar las particiones (si uno desea puede tener una partición para su /home, /usr o lo que sea), configurar la red automáticamente y alguna otra configuración que me dejo en el teclado.

Además, con grub, debo ser yo porque siempre que tengo que configurar el grub me pillo los dedos, no hay manera de instalar grub en el disco, dicen que las BIOS viejas deben tener una partición de unos 5 ó 10 MB para poner el grub, pues ni con partición ni sin ella no hay manera de instalar el grub… en fin, de momento un disquete ya hace su función.

El teclado continua estando en su versión ”us” (los ‘:‘ se hace con Shift+ñ), ¿por que no han hecho el paquete loadkeys? En fin, me tendré que pelear también con el teclado (podría coger el mapeado por defecto y modificarlo como si fuera un teclado “es”).

Por lo tanto, Debian GNU/Hurd sigue igual, instalarlo es un dolor de cabeza terrible y las únicas alegrías vienen cuando ves que los disquetes y CD’s se montan correctamente, se tiene acceso a internet y cuando ves el cursor del ratón moviendose (nada de interfície gráfica, todo modo consola, of course).

¿Donde está el vi?, el vi! necesito el vi, porque con nano no paro de escribir “dd”, “yy” y demás en los documentos (bueno esto eran las primeras veces xD). Por otro lado, ¿donde está el x-window-system? pues nada, tanto en vi, como en x-window-system, e incluso con wget: package not found.

Esto será duro, pues en la versión Debian faltan muchos paquetes básicos y me parece que la mejor forma de resolver todo esto será coger las fuentes de todos los programas necesarios, compilarlas y abajo, esto com un shellscript se puede automatizar sin más. Pero… ¿donde está gcc? apt-get install gcc”: problema con las dependencias! Oh my God!

Solución:
Creo que lo mejor será coger las fuentes de todo y hacer un “cross-compiling” de todo, esto significa coger las fuentes del Mach, compilarlas e instalarlas, coger las fuentes de Hurd compilarlas e instalarlas y hacer lo mismo con todas las fuentes de los programas necesarios. Esto es un tostón y la única motivación de hacer esto es aprender como funciona GNU/Hurd por dentro.

Todo este proceso se podría automatizar en un shell script para Linux que se instalaría en una Knoppix (por ejemplo). Esto *no* quedaría muy profesional, pero bueno, si hasta este punto funcionara, el siguiente paso sería retocar la Knoppix para convertirla en un CD de instalación.

En conclusión, esto significa dejar de lado Debian y hacerlo desde zero, casi nada :P

Estructura del proyecto

Aprovenchando el fin de semana, ya tengo el proyecto un poco estructurado, así pués como (recuerdo) el proyecto se trata de hacer un CD de instalación de Debian GNU/Hurd y que instale además la inertfície de Gnome y aparte del CD, hacer una documentación sobre el proyecto GNU/Hurd y sus diferencias con Linux y los demás, vemos dos puntos:

  • Documentación
    • Qué es un kernel?
    • Qué es un micro-kernel?
    • Qué hace Hurd?
    • Cómo Funcionan los sistemas Operativos Actuales?
    • Cúal es la función del proyecto GNU?
  • CD de instalación
    • Convertir el CD de instalación de Linux para que instale Hurd
    • Modificar el anterior para que configure automáticamente el sistema base
    • Modificar el anterior para que instale Gnome y éste funcione correctamente

Éstos son los grandes puntos a hacer, esto parece fácil, pero no se menciona nada de los pthreads que tiene Hurd i que se tienen que modificar para que Gnome o incluso el Xorg funcionen. Aquí la gran frase del How-to isntall Debian GNU/Hurd de la página oficial:

Although a pthreads implementation exists not all pthread packages have been ported: do not expect Gnome and KDE to work.

Aunque parezca mentira, esta frase ha sido la gran motivadora para crear este proyecto.

También decir que hacer la documentación es necesario pues hay muchas cosas que cambian en hurd, por ejemplo, para montar de los dispositivos antes se tienen que crear con la instrucción “settrans”, todo esto lo hace engorroso y encima deprimente, porque viene a decir que todo lo que uno sabe de Linux casi no sirve de mucho pues hay muchas cosas que cambian.

Aún así, espero poder salir adelante, y esta pequeña estructuración ayudará.

Hello world!

Quién pone el nombre de su blog una variable de sistema que sirve para gestionar los errores y encima su primer post es un “Hello World”? (En “About esta mi presentación ;P”)
Lo del “Hello world!” ha sido idea del wordpress, yo tan solo la he mantenido ;) En quanto al nombre del Blog, será mejor que os cuente porque he creado este blog y qué propósitos tiene.

Este blog ha sido creado por motivo del 1er concurso Universitario de Software Libre. Y será usado para evaluar mi proyecto.
Aún así, espero que este blog no sea muy técnico y que cualquier persona pueda leerlo y poner sus comentarios si así lo desea. Aunque tal vez, acabe siendo un blog un tanto formal hablando de los objetivos, la evolución y el estado del proyecto en cada momento, por eso he decidido poner un título a este Blog un tanto informal, pues tal vez no volveré a escribir tan relajadamente como ahora.

El título y el nombre de este blog hacen referencia a la variable de sistema errno, que nos permite gestionar los errores de nuestros programas, como no, en la wikipedia teneis una buena definición (está en inglés, tal vez algún dia me anime y haga mi primera traducción en la wikipedia). Y esto se debe a que el proyecto que me obliga a crear este blog seguro que me hará pelear contra ésta varible más de una vez, porque es a partir de los errores que uno busca las correcciones y/o soluciones.

Supongo que todos debeis estar anciosos por saber qué proyecto estoy presentando al concurso, pues bién, por mucho que os pongais a pensar, no creo que lo adivinais, pues se trata ni más ni menos que hacer un CD de instalación de Debian GNU/Hurd. Ups, no era GNU/Linux? no, Hurd es un microkernel (Linux es un kernel) y es lo que algunos piensan que será el sustituto del propio Linux.

En cuanto a si esta afirmación es cierta o no (Hurd es el futuro sucesor de Linux?), lo comentaré otro día, pero por hoy sólo diré que no estoy totalmente de acuerdo en que se pueda afirmar tan ligeramente.

Bueno, después de este sermón [perdonad u_u], ya podré empezar con este proyecto, un saludo a quienes tengan la paciencia y/o curiosidad sobre este proyecto ^^.



Seguir

Get every new post delivered to your Inbox.