Tabla de contenidos
TO BE WRITTEN!
Documentación sobre la arquitectura de Linux (disponible desde Nokia y localmente).
Al llegar a clase, el profesor os asignara aleatoriamente en grupos de al menos cinco personas y os organizaréis. (10 minutos)
Siguiendo un turno rotario, comentaréis grupalmente el modelo de interfaz gráfica de Maemo
Las preguntas que el profesor os hará son las siguientes:(50 minutos)
¿Sabrías explicar la figura 4.1 de la guía? ¿Cuáles son las principales diferencias entre esta figura y la figura 3.4?
¿Qué es GNOME?
¿Es lo mismo diseñar una aplicación gráfica para un ordenador de sobremesa que para Maemo? Argumenta tu respuesta.
¿Qué GTK?
¿Qué es Hildon?
¿Por qué Hildon tiene cuatro tipos de vistas diferentes (normal view, with toolbar, Full Screen, Full Screen with toolbar)?
¿Cómo se comunica GTK con la aplicación? ¿Serías capaz de poner un ejemplo de uso?
Explicación de la figura 4.7 ¿Qué es un event-loop model?
¿Cómo facilita el Gnome-VFS la comunicación con las aplicaciones gráficas?
En una aplicación gráfica, ¿para qué se utiliza D-BUS?
Debes de tomar notas de cada una de las explicaciones que surjan a lo largo de la clase.
Documentación sobre la arquitectura de Linux (disponible desde Nokia y localmente).
El rincón de linux para hispanohablantes. Sitio genérico para usuarios de Linux.
El trabajo al que se enfrenta es el de deducir a partir de cierta documentación real cuál es la estructura de la arquitectura de cierto sistema Linux. Para ello, en vez de centrarse en texto que explique en detalle los entresijos de la arquitectura de un sistema Linux, se sigue el camino inverso: a partir del manual de introducción de un sistema (Maemo) que internamente soporta Linux, el alumno se familiarizará con la arquitectura de dicho sistema. Por lo que en este análisis tan sólo se presentan aquellas partes que son relevantes para el estudiante.
Para conseguir esto se proponen los siguientes pasos:
Leer el capítulo 3 (The Linux System Model) de aproximadamente 10 páginas (45 minutos).
Haz una segunda lectura muy rápida y anota los principales conceptos de cada página (10 minutos).
Centrándote en esos conceptos, escribe un resumen de la lectura (45 minutos). Puedes hacerlo bien en papel o bien en ordenador. Si lo haces en papel, recuerda enseñárselo al profesor. Si lo haces en el ordenador, súbelo a tu repositorio.
Cuando vayas a clase, el profesor va a discutir sobre una serie de temas. Emplea algún tiempo antes de ir a clase en examinar la siguiente lista de preguntas (escogidas por el profesor tras analizar el texto sobre Linux) (15 minutos):
¿Por qué es necesario un kernel? ¿Para qué sirve? ¿Qué funciones tiene encomendadas?
¿Por qué Maemo tiene un Linux en su interior?
¿Por qué hay dos espacios: uno de usuario y otro de kernel?¿Qué ventajas aporta?
¿Qué es una llamada al sistema?
¿Qué es un proceso? ¿Qué información interna maneja?
¿Qué es el PID? ¿Cómo se crean procesos? ¿Cuándo se terminan?
¿Cómo se inicia un nuevo proceso?¿Cómo se termina un proceso?¿Qué tipo de señales puede recibir?
¿En qué consiste montar un sistema de ficheros?
¿Qué tres tipos de pseudo-filesystems hay en Linux?
¿Qué es un inodo? ¿Por qué se definieron?
¿Qué es un enlace simbólico?
¿Qué tipos de permisos de fichero hay en Linux?
¿Por qué existen varios tipos de permisos, cada uno de ellos para diferentes tipos de usuarios?
¿Cuál es la diferencia entre un programa, un demonio (daemon) y una libería? ¿Cuál es su relación?
¿Por qué decimos que httpd
, lpd
y cron
son daemons? ¿Qué tipo de servicios ofertan?
¿Cuál es la diferencia entre enlazado estático y dinámico?
¿Cuál es la estructura que tiene una aplicación que utiliza sólo la línea de comandos?
Cuando finalices, sube los documentos en la carpeta
MaemoLinux
de Subversion o, si lo hiciste en papel,
enséñaselos a tu profesor en clase.
Documentación sobre la arquitectura de Linux (disponible desde Nokia y localmente).
Hojas que entregarás al profesor.
En esta actividad, se trabajará ciertos conceptos de la arquitectura de Linux de forma grupal.
En clase, la dinámica que se seguirá es la que sigue:
El profesor os agrupará de cuatro en cuatro, en grupos pequeños, dejándoos un tiempo para que os organicéis.
Siguiendo un ciclo rotatorio entre los diferentes grupos, os realizará una serie de preguntas.
Cuando seáis el grupo que está en posesión del turno tendréis que responder a la cuestión.
Cuando no lo seáis tendréis que anotar las principales ideas expuestas por el grupo.
Al final de la clase, se os pedirán las notas que habéis tomado durante la sesión.
Esta es la lista de preguntas con las que se trabajará:
¿Por qué es necesario un kernel? ¿Para qué sirve? ¿Qué funciones tiene encomendadas?
¿Por qué Maemo tiene un Linux en su interior?
¿Por qué hay dos espacios: uno de usuario y otro de kernel?¿Qué ventajas aporta?
¿Qué es una llamada al sistema?
¿Qué es un proceso? ¿Qué información interna maneja?
¿Qué es el PID? ¿Cómo se crean procesos? ¿Cuándo se terminan?
¿Cómo se inicia un nuevo proceso?¿Cómo se termina un proceso?¿Qué tipo de señales puede recibir?
¿En qué consiste montar un sistema de ficheros?
¿Qué tres tipos de pseudo-filesystems hay en Linux?
¿Qué es un inodo? ¿Por qué se definieron?
¿Qué es un enlace simbólico?
¿Qué tipos de permisos de fichero hay en Linux?
¿Por qué existen varios tipos de permisos, cada uno de ellos para diferentes tipos de usuarios?
¿Cuál es la diferencia entre un programa, un demonio (daemon) y una libería? ¿Cuál es su relación?
¿Por qué decimos que httpd
, lpd
y cron
son daemons? ¿Qué tipo de servicios ofertan?
¿Cuál es la diferencia entre enlazado estático y dinámico?
¿Cuál es la estructura que tiene una aplicación que utiliza sólo la línea de comandos?
Recuerda que antes de irte de clase has de entregar tus apuntes al profesor.
Maemo SDK+: User Guide (En inglés).
Dispones de una copia local aquí.
Lee el apartado 1 del manual que se te ofrece como recurso, donde se explica brevemente el entorno de desarrollo de Maemo (10 minutos).
El primer dibujo de la guía explica cuál es la cadena de pasos que hay en un entorno ordinario de desarrollo, a grandes rasgos.
Después de leer la sección 1, piensa qué
comandos/herramientas de entre los que se citan a continuación:
"gedit
", "sb2 -e ./ejecutable
","sb2
gcc
","sb2 -eR cp
", necesitaremos para realizar las
siguientes acciones: editar un fichero, compilar, copiar y ejecutar. (10
minutos)
La segunda figura nos muestra los tres universos que existen en el desarrollo para Maemo: (1) huésped, (2) de compilación cruzada y (3) de ejecución.
Para cada uno de ellos indica el tipo de plataforma con la cual crees que trabajarás en el laboratorio. Las opciones con las que cuenta son: (1) i386, (2) ARM y/o (3) ambos. Justifique su respuesta. (10 minutos)
Lee el resto de secciones de la guía (20 min.), para que tengas una idea de las herramientas que podemos usar.
Documentación sobre la arquitectura de Maemo (disponible desde Nokia y localmente).
En esta actividad vas a completar la lectura de la sesión anterior con cierta información sobre el modelo de interfaces gráficas soportado por Maemo. Dichas interfaces están basadas fuertemente en software ya existente en Linux; el cual, ha sido readaptado para Maemo.
Leer el capítulo 4 (The GUI components of Maemo). (30 minutos)
Trata de explicar en un documento Word cuáles son las partes más importantes de un GUI. (15 minutos)
La siguiente lista de preguntas quizás te pueda ayudar a organizar tu información. Son preguntas que le han surgido a la persona que ha leído el texto propuesto. Échales un vistazo. (15 minutos)
¿Sabrías explicar la figura 4.1 de la guía? ¿Cuáles son las principales diferencias entre esta figura y la figura 3.4?
¿Qué es GNOME?
¿Es lo mismo diseñar una aplicación gráfica para un ordenador de sobremesa que para Maemo? Argumenta tu respuesta.
¿Qué GTK?
¿Qué es Hildon?
¿Por qué Hildon tiene cuatro tipos de vistas diferentes (normal view, with toolbar, Full Screen, Full Screen with toolbar)?
¿Cómo se comunica GTK con la aplicación? ¿Serías capaz de poner un ejemplo de uso?
Explicación de la figura 4.7 ¿Qué es un event-loop model?
¿Cómo facilita el Gnome-VFS la comunicación con las aplicaciones gráficas?
En una aplicación gráfica, ¿para qué se utiliza D-BUS?
Documentación sobre la arquitectura de Linux (disponible desde Nokia y localmente).
Lee "Chapter 5: Maemo platform overview". (30 minutos)
La siguiente figura aparece etiquetada como la pila software que contiene Maemo.
Tu primer trabajo va a consistir en reproducir esta figura en una hoja de papel. (15 minutos)
Después de ello vas a escribir una pequeña descripción de los siguientes elementos de la arquitectura. Puedes hacer uso de Internet si fuese necesario.(15 minutos)
Initfs
Bootloader
Core Daemon
GNU C Library
GPS
Core-Libs
Linux-Kernel
Sockets
Help Framework
En este tutorial guiado paso a paso vamos a aprender a:
Compilar una aplicación con un compilador de un entorno de desarrollo cruzado.
Ejecutar dicha aplicación en un emulador.
Copiar permanentemente la aplicación dentro de un entorno de ejecución simulado (en su imagen), de tal manera que permanezca en el emulador hasta que se borre.
Instalar dicha aplicación utilizando el gestor de aplicaciones, mediante la construcción de un paquete Debian.
Los siguientes recursos son de apoyo al plan de trabajo y no se requiere su lectura previa.
Maemo SDK+: User Guide (En inglés).
Dispones de una copia local aquí
Páginas de manual de Linux (En inglés)
La guía de desarrollo Maemo-Development environment (for scratchbox)
En este tutorial, la aplicación que realizarás se llamará
helloworld
y se almacenará en un directorio llamado project
.
Crea dicha carpeta con mkdir
en la cuenta del
usuario teleco
:
Nota: en caso de que ya exista la carpeta, este comando muestra un error por pantalla.
El siguiente paso a dar es entrar en la carpeta recién creada.
Cread el fichero (con kate
u otro editor)
para que muestre por pantalla el mensaje "Hola mundo! Somos ...",
y muestre vuestros nombres por pantalla. Salvad el fichero.
Crear una aplicación ejecutable para el dispositivo Nokia a partir del código es sencillo, tan sólo hay que:
Hacer que el comando de compilación gcc
se invoque desde el entorno o universo de compilación cruzada del
emulador ScratchBox mediante el comando sb2 gcc
. Este
comando hace que el entorno, también llamado universo, donde se esté
invocando el gcc
no sea el de nuestro PC, si no el de
compilación cruzada. En este universo hay herramientas especiales
(como el compilador para la plataforma ARM que corre en el NOKIA) que
permiten compilar la aplicación.
Notas: El comando ls
nos permite comprobar
que realmente se ha creado el ejecutable helloworld.
Fíjate que el ejecutable generado es para un ARM y no para la arquitectura I386 (la de la maquina virtual o los PCs del laboratorio).
Nota: El comando file
nos indica el tipo
de fichero que hemos generado. En este caso es un ejecutable para ARM.
En general para ejecutar un comando en los universos del
emulador, sólo tenemos que preceder el comando que queramos por la orden
sb2
si es para el universo de compilación cruzada, o sb2
-e
si es para el universo de ejecución simulada. Por ejemplo para
hacer ls
en el entorno de compilación ejecutaríamos sb2
ls
.
El directorio donde estamos trabajando (esto es, el
directorio project
) se comparte entre el universo del
huésped y los universos del emulador ScratchBox, por lo que no es
necesario copiar nada al emulador para poder ejecutarlo. Puedes probar
la aplicación en el entorno de ejecución simulado del ScratchBox con
el comando sb2 -e ./helloworld
.
Fíjate que si ejecutamos ese archivo desde el el universo huésped, el código ya no funciona, pues está compilado para la arquitectura de un ARM.
Fíjate que también la aplicación funciona en el entorno o universo de compilación cruzada. Esto es así porque este entorno corre también sobre un ARM.
Para copiar la aplicación en el directorio de programas
del emulador (/usr/bin
) para que se quede permanentemente,
los pasos a seguir son los siguientes:
Antes de nada comprobamos que no existe el fichero en
el directorio /usr/bin
del emulador con el comando
ls
, ejecutándolo en el universo de ejecución.
Después, copiamos el ejecutable desde el directorio
project
a /usr/bin
con el comando
cp
. Fíjate que ha de ir precedido de sb2 -eR
porque queremos trabajar dentro del entorno de ejecución.
La opción R
ejecuta el comando como root
(esto es, con privilegios máximos). Esta opción es necesaria en este
caso para poder copiar el fichero en el directorio
/usr/bin
en el cual sólo puede crear ficheros el
root.
Probemos a ejecutar el programa directamente en el universo de ejecución del ScratchBox; es decir, en el entorno de ejecución simulada.
Fíjate que para ejecutar ya no es necesaria la opción
-R
. Esto es así porque no hacen falta privilegios de
root para ejecutar una aplicación.
Ahora el fichero se encuentra instalado en el directorio de programas del entorno de ejecución simulada.
Recuerda que los archivos se comparten entre los distintos universos del emulador, así que también puedes comprobar que el programa está instalado en el entorno de compilación cruzada, aunque no es necesario.
Si intento ejecutar en el universo huésped ( sin
sb2
) el comando falla y ni siquiera encuentra el
ejecutable.
Para borrar el fichero una vez instalado se puede
realizar esta operación con "rm" (precedido claro está del comando
sb2 -eR
).
Una vez más se necesitan privilegios de root para poder realizar la ejecución.
Existe la posibilidad de que deseemos instalar la
aplicación (no copiándola directamente en el directorio
/usr/bin
) haciendo uso de un paquete. La ventaja que tiene es
que para gestionarlos se puede utilizar el gestor de aplicaciones. Para
ello empaquetaremos el código que ya tenemos en un paquete llamado
"helloworld" haciendo uso de alien
.
Primero creamos una jerarquía de directorios similar a la del entorno final. Esto es, con subdirectorios idénticos a los que tiene el universo de ejecución del dispositivo (o del simulador), en nuestro caso "usr/" y "usr/bin".
Nota: El punto y coma nos permite introducir dos comandos (uno tras otro) en un mismo paso.
Copiamos el fichero helloworld
en esta
jerarquía de ficheros.
Comprimimos todo en un fichero ".tar.gz" marcando el número de la versión del paquete.
Fíjate en varios detalles:
Las opciones de tar
para comprimir
son cvfz
.
El nombre del paquete ha de coincidir con el nombre dado al fichero "tar" que has creado.
La versión del paquete también aparece reflejada
en el nombre del fichero
(helloworld-1.0.0.tar.gz
).
Una vez comprimido, utilizamos la herramienta "alien" para pasar de ".tar.gz" a ".deb". Esta herramienta consigue pasar un fichero ".tar.gz" a un paquete Debian sencillo (no comprueba las dependencias, pero permite que sea reconocido por el gestor de paquetes).
Fíjate que el comando alien
aparece
precedido de fakeroot
. Si intentamos ejecutar
alien
sin utilizar fakeroot
nos dirá que
necesitamos ser root para generar el paquete. La forma de solucionarlo
es llamar al comando utilizando fakeroot
, un comando que
permite simular que se poseen privilegios de root.
El resultado final queda disponible en el directorio actual.
Instalar y desinstalar el paquete "helloworld" es sencillo. Para ello utilizaremos las herramientas "apt-get" y "dpkg" en el universo de ejecución del emulador.
Previo a la instalación del paquete, comprobamos que
la aplicación no está instalada haciendo uso de
ls
.
A continuación, para instalar utilizamos dpkg -i
nombre-del-paquete.deb
precedido de sb2
-eR
.
Tras instalar, podemos invocar helloworld
en el entorno de ejecución simulado.
Podemos borrar el paquete llamando al comando
apt-get remove
en el universo de ejecución en modo root
(esto es, con sb2 -eR
).
Si has llegado hasta aquí significa que ya eres capaz de construir, ejecutar e instalar aplicaciones en el emulador de Maemo.
¡ENHORABUENA!
Para terminar, instala el paquete debian en un N810 y muestra que puedes ejecutarlo al profesor:
Sube el paquete .deb al directorio
DebianPackage
de tu SVN, bájalo luego desde el dispositivo. Para ello abre una ventana en el navegador del dispositivo, copia la URL de tu carpeta SVN, después de poner tus credenciales te mostrará el contenido de tu carpeta, selecciona el paquete .deb, por defecto lo coloca en una carpeta que está en /home/usr/MyDocs/.documents
Para instalarlo (comando dpkg
) en el Nokia,
no te dejará como user
, así que conéctate al propio Maemo
con ssh como root: ssh root@localhost
usando la clave teleco y, una vez ahí, ya
puedes usar dpkg
con la opción -i
; recuerda que tras conectarte por ssh,
tendrás que ir hacia atrás (pues estás en el directorio de root)
al directorio de home/user
, que es donde está el
directorio con las carpetas donde te has bajado el .deb.
Probablemente el dispositivo ya tenga un helloworld
instalado (lo verás ejecutando helloworld
sin más, por la
línea de comandos). Si ya existe, desinstálalo primero.
Para terminar, instálalo con dpkg
y
ejecútalo.
Si el dispositivo no encontrara el comando ssh, es que no está instalado. Tendrás que activar los Maemo extras si no están activados e instalar la aplicación "open-ssh".
Sube al directorio DebianPackage
de SVN
el siguiente material:
Pantallazo de la línea de comandos donde se vea que habéis sido capaces de ejecutar el "holamundo".
Fichero helloworld-1.0.0.deb
¿Qué son las System Calls?
¿Cuál es el objetivo de separar la memoria virtual del sistema en dos espacios, el kernel space
y el user space
?.
Los procesos consisten en: