Saturday, December 30, 2006

De como compilar Fiasco.

Comence a compilar Fiasco, lo que hice fue seguir las instrucciones en http://os.inf.tu-dresden.de/fiasco/use.html.
1) Me baje los modulos grub l4 dde hello l4env dope preprocess de el cvs.
2) En el directorio l4 ejecuto lo siguiente:
make O=../build_user config
(lo dejo como esta)
make O=../build_user all
(Espero como 20 minutos y sale un error de sed, para arreglarlo toca entrar a l4/tool/gcc-wrap/Makefile y cambiar a:

$(VERBOSE)sed '\
s,@system@,$(SYSTEM),g;\
s,@ar@,$(AR),g;\
s,@nm@,$(NM),g;\
s,@ranlib@,$(RANLIB),g;\
s,@cc@,$(CC_$(DEFAULT_ARCH)),g;\
s,@cxx@,$(CXX_$(DEFAULT_ARCH)),g;\
s,@l4dir@,$(absfilename $(L4DIR)),g;\
s,@dropsdir@,$(DROPS_STDDIR),g;\
s,@compilerincdir@,$(GCCDIR_$(DEFAULT_ARCH))/include,g;\
s,@libgcc@,$(GCCLIB_$(DEFAULT_ARCH)),g;\
s,@libgcc_eh@,$(GCCLIB_EH_$(DEFAULT_ARCH)),g;\
s,@default_system@,$(DEFAULT_SYSTEM),g;\
s,@default_arch@,$(DEFAULT_ARCH),g;\
s,@default_cpu@,$(call PROCESS_SYSTEM, 's/[^-_]*_\([^-]*\).*/\1/p'),g;\
s,@default_l4api@,$(call PROCESS_SYSTEM, 's/.*-\(.*\)/\1/p'),g;\
' $< > $@.new


por:

$(VERBOSE)sed 's,@system@,$(SYSTEM),g;s,@ar@,$(AR),g;s,@nm@,$(NM),g;s,@ranlib@,$(RANLIB),g;s,@cc@,$(CC_$(DEFAULT_ARCH)),g;s,@cxx@,$(CXX_$(DEFAULT_ARCH)),g;s,@l4dir@,$(absfilename $(L4DIR)),g;s,@dropsdir@,$(DROPS_STDDIR),g;s,@compilerincdir@,$(GCCDIR_$(DEFAULT_ARCH))/include,g;s,@libgcc@,$(GCCLIB_$(DEFAULT_ARCH)),g;s,@libgcc_eh@,$(GCCLIB_EH_$(DEFAULT_ARCH)),g;s,@default_system@,$(DEFAULT_SYSTEM),g;s,@default_arch@,$(DEFAULT_ARCH),g;s,@default_cpu@,$(call PROCESS_SYSTEM, 's/[^-_]*_\([^-]*\).*/\1/p'),g;s,@default_l4api@,$(call PROCESS_SYSTEM, 's/.*-\(.*\)/\1/p'),g;' $< > $@.new

No se por que mi sed no puede con las instrucciones separadas en lineas con un \,pero se arregla el problema. Luego lo dejo otra vez compilando, y me da tiempo de salir, comprar dos libros (Calicalabozo de Andrés Caicedo, y La Despedida de Milan Kundera) , comer algo y cuando vuelvo la maquina esta en un error porque no tenia instalado el doxygen, lo instalo y vuelvo a compilar, me da tiempo de organizar los libros que tengo por leer (Calicalabozo, La despedida, Despues del Hombre de Gonzalo Arango, Gato o soledad en la lluvia de Amílcar Osorio, y El libro Negro de Orhan Pamuk), tambien juego un poco en el Wii de mi hermanito, el control es loquisimo, funciona basicamente con acelerometros. por lo que no es necesario jugar parado y moverse como loco, sino tambien sentado, la parte de infrarrojos funciona siempre y cuando no le caiga sol al sensor (pense que eso solo nos pasaba en los carritos que nos ponian a hacer en la universidad) sino se enloquece, pero casi siempre esta en lugar cerrado entonces no es problema, y me imagino que funciona con conceptos de vision esteroscopica; termino de jugar y sigue compilando, me como un postre y espero, luego sale un error porque no encuentra el comando fig2dev y me toca instalar el transfig, y comienzo de nuevo, al ratico (doy gracias que no toca compilar de nuevo lo que ya ha compilado) sale un error: no puede copiar el archivo building.tex en una carpeta, ¿¿bug del Makefile de Fiasco?? el Makefile hace ejecutar el comando, con respuesta:

cp building.tex drops-building.tex
cp: cannot stat `building.tex': No such file or directory


Lo que pasa es que el Makefile entra en el directorio de trabajo, build-user/doc/.... e intenta copiar el archivo desde esa misma carpeta y hay no esta, esta en el directorio l4/doc/building-howto, solo es copiarlo de esta posicion a build_user/doc/building-howto/ y comenzar de nuevo a compilar, y ya si termina, ¡mas largo que la primera instalada de Xfree86 fue esto!.

Ahora entro en la carpeta l4/kernel/fiasco, corro el comando:

make BUILDDIR=../../../build-kernel
cd ../../../build-kernel
make menuconfig
(lo dejo como esta)
make
(Espero mientras veo Carnivale, esta buena la serie)


Sigo los pasos de la pagina para iniciarlo, un poco distinto (pa correrlo en vmware desde una imagen de un floppy) pero en esencia lo mismo.
Y listo, tengo al buen Fiasco corriendo en una maquina virtual.

Monday, December 18, 2006

Distribuyendo mi carga

Rafa, para responder a tu comentario decidi hacer 2 cosas, comenzar a bajarme el Fiasco del cvs (y no seguir jugando con esa version de Fiasco que tenia desde hace mucho), y copiar y pegar el comentario en un nedit, separarlo por espacios y abordarlo linea por linea.

1. Middleware DICE, lenguaje de IDL y generador de stub y skeleton para los servicios de userspace.

Fiasco: http://os.inf.tu-dresden.de/DICE/
Pistachio: http://www.l4ka.org/projects/idl4/
NICTA: http://ertos.nicta.com.au/software/kenge/magpie/latest/

En Fiasco van en la version 3.1.0 (Nov/2006) y en Pistachio en la 1.0.0 (2003), y el de Nicta en la 1.0 (Dic/2004) , no he trabajado con ninguna de las tres, entonces no tengo nada que decir.

2. Codigo en C++ en el kernel. Bien organizado y con un preprocesador modificado que hace el codigo aun mas limpio.

En pistachio tambien esta en C++, ahora, lo del preprocesador, no creo que exista en pistachio, y no se hasta que punto sea una gran ventaja, confio plenamente en cpp.

3. Device Driver Environment: Entorno que permite reutilizar todos los drivers de Linux en L4

Fiasco: http://os.inf.tu-dresden.de/l4env/ (no encontre pagina de DDE)
Pistachio: http://www.l4ka.org/projects/virtualization/drivers.php

He leido un poco la forma como lo implementaron en Pistachio y me convence, aunque deberia leerlo mas a fondo.

4. El Build System es demasiado poderoso y organizado. Hace checkout del CVS y veras lo que te digo

Nunca he construido Fiasco del todo, solo he usado una imagen que habia en la pagina, y fue hace un buen rato.
Pistachio lo he compilado varias veces,y he construido aplicaciones de prueba, y si es un poco complicado, pero si uno sigue las ayudas no se pierde. (de hecho ayer recompile desde cero lo del CVS y no tuve problema).

En cuanto a bajarlo del CVS, en esas ando como desde hace 2 horas y nada que baja, ojala algun dia baje.


Uno de los aspectos que mas me hacen pensar en Pistachio:
http://ertos.nicta.com.au/press/051124_L4_Qualcomm_vfinal.pdf

Plataformas soportadas:
Fiasco:
  * IA32 (Intel, AMD and compatible CPUs, i486 and above)
* ARM (SA1110 and PXA)
* UX (Linux usermode emulation of Fiasco/L4
Pistachio:
  • Alpha (21164, 21264)
  • AMD64 (Opteron 242, Simics)
  • ARM (SA1100, XScale, ARM925T)
  • IA32 (Pentium and higher)
  • IA64 (Itanium1, Itanium2, Ski)
  • MIPS 64bit (R4000, R5000)
  • PowerPC 32bit (IBM 750)
  • PowerPC 64bit (Power3, Power4)
  • ((((Pronto M68K jeje))))
Al fin de cuentas, tal parece que ambos tiran para el mismo lado, pero me interesa mas pistachio, por muchas cosas, entre unas el hecho que lo sigan trabajando en UNSW y en NICTA en Australia.

Aun asi, voy a comenzar a trabajar tambien en Fiasco, para ver bien cual se acomoda mejor a lo que estoy buscando.

Pero si me tenes un puestico en Dresden me paso de una a Fiasco, y volvemos a Fiasco "El uKernel".

Sunday, December 17, 2006

Volviendo a pistachio

Me estoy bajando el codigo fuente de pistachio, hace un buen rato que no lo veia, y ya ni podia entender mi enredo de idrectorios, asi, que va a tocar casi desde cero. La idea seria:
1) Lograr controlar una tarjeta de red con pistachio. Primero voy a intentar con el codigo para el stack tcp/ip que viene con OSKIT, aunque igual creo que lo primero es manipular la tarjeta a bajo nivel a mano, y luego conectar esto con el oskit.
2) Hacer una aplicacion cliente/servidor entre pistachios
3) Entender bien el concepto de hilo en pistachio, la generacion de los mismos, y cuales son y para que sirven los hilos basicos de pistachio.

(Esta semana tengo que llamar a averiguar acerca del precio de las tarjetas de las CPLDs)