English Version

+ Introducción

+ Grupo de Investigación

+ Descargar

+ Código Fuente

+ Entorno de Trabajo

+ SODIUM Developer Kit

+ Configuración

+ Ejecución e Instalación


+ Probar SODIUM Online




Configuración


Una vez armado el entorno de trabajo y descargado el código fuente desde el servidor SVN, es necesario realizar una configuración inicial para poder compilar y ejecutar SODIUM. Todos los instructivos que se mostrarán de aquí en adelante se ilustran utilizando SODIUM Developer Kit. Sin embargo, el mismo funcionamiento debería esperarse utilizando un entorno de trabajo diferente, siempre que respete las instrucciones dadas anteriormente para el armado del entorno de trabajo.

El primer paso para la configuración es abrir una consola y localizar el ícono en la parte superior de la pantalla para abrir una nueva consola de comandos como lo muestra la siguiente imagen:


Una vez abierta la consola, el SODIUM Developer Kit está programado para utilizar automáticamente el usuario root y dar el siguiente mensaje de bienvenida:

============================================
    Bienvenido al Sodium Developer Kit
============================================

root@sodium:/home/sodium#

Habiendo accedido a la consola de comandos es posible descargar el código de SODIUM desde su ubicación en el servidor SVN. Si ya contamos con el código, debemos dirigirnos hacia directorio en donde está ubicado. Una vez allí, utilizando el comando ls podremos ver la disposición de archivos y directorios iniciales de SODIUM:

root@sodium:/home/sodium# cd /home/sodium/SodiumUNLaM/sodium/trunk
root@sodium:/home/sodium/SodiumUNLaM/sodium/trunk# ls -o
drwxr-xr-x 3 root  4096 2013-09-20 04:50 boot
drwxrwxrwx 3 root  4096 2013-09-20 04:50 build
drwxrwxrwx 3 root  4096 2013-09-20 04:50 common
drwxrwxrwx 3 root  4096 2013-09-19 10:02 docs
drwxrwxrwx 3 root  4096 2013-09-20 04:50 herramientas
drwxrwxrwx 6 root  4096 2013-09-19 10:02 include
drwxrwxrwx 8 root  4096 2013-09-20 04:50 kernel
drwxrwxrwx 6 root  4096 2013-09-20 04:50 usr
-rwxrwxrwx 1 root 28052 2013-09-20 04:49 configurar.sh
-rwxrwxrwx 1 root  5667 2013-09-20 04:50 Makefile

Puede observarse que el código recién descargado de SODIUM cuenta con 8 directorios y tan solo 2 archivos en su directorio raíz. La función de los archivos en este directorio es determinar la configuración de ejecución, compilación, y pruebas de SODIUM. La configuración determinada por el usuario para el uso de SODIUM es local a cada versión del código y es generada y resguardada como el archvio Makefile.cfg. Este archivo es necesario para la compilación de SODIUM, por lo que debe ser generado de antemano.

Para generar el archivo Makefile.cfg de SODIUM es necesario ejecutar el archivo configurar.sh.:

root@sodium:/home/sodium/SodiumUNLaM/sodium/trunk# ./configurar.sh

En caso de no poder ejecutarse, es necesario asegurarse que dicho programa y los programas que, a su vez, ejecuta cuenten con permisos de ejecución. Esto se logra ejecutando el siguiente comando:

    # chmod a+x ./configurar.sh ./herramientas/*

Este menú contiene valores por defecto auto-generados durante la ejecución con las opciones más comúnmente utilizadas durante la prueba de SODIUM. Sin embargo, los cambios efectuados, se guardarán en el archivo Makefile.cfg y serán recuperados para una nueva ejecución de configurar.sh.

A partir de la ejecución de configurar.sh, se puede visualizar el menú interactivo de configuración de SODIUM:

============================================
    Menu de Configuración de SODIUM
============================================

1) Configuracion de Pruebas
2) Configuracion de Instalacion en Dispositivo Fisico
3) Configuracion de Compilacion
4) Configuracion de Kernel

x) Guardar y Salir

El menú interactivo nos permite navegar a través de los sub-menús y configurar fácilmente el entorno de ejecución y compilación de SODIUM. A continuación se explicarán cada una de las opciones disponibles en el menú de configuración de SODIUM.

 

Configuración de Pruebas


En caso de seleccionar la opción 1 (Configuración de Pruebas) en el menú inicial, se abrirá el menú correspondiente a la configuración de las pruebas de SODIUM. Esta configuración sólo afecta al entorno de pruebas que se utilizará para probar la ejecución de SODIUM. Al ingresar a este menú, se mostrarán las siguientes opciones de configuración:

  Emulador de VM                          :  bochs

1) Montar imagen de SODIUM en Floppy Disk  :  Si - FAT12
2) Montar imagen de SODIUM en Disco Rigido :  No
3) Montar imagen de SODIUM en CD-ROM       :  No
4) Dispositivo de Booteo                   :  Floppy Disk
5) Tipo de Debugging                      :  Debugger Interno Consola
6) Auto-Break on Boot                      :  No

x) Volver al Menu Principal

Actualmente, sólo se ha configurado el emulador de VM bochs ya que ha dado mejores resultados a la hora de evaluar compatibilidad con arquitecturas reales y se ha discontinuado el uso de QEMU porque no provee todas las funcionalidades que bochs provee.

La opción 1) Montar imagen de SODIUM en Floppy Disk  nos permite determinar si se va a utilizar o no una imagen de diskette montada en el emulador de VM durante el lanzamiento de la prueba. Las sub-opciones disponbles son:

Montar imagen de SODIUM en Floppy Disk:

=======================================

1) Si - FAT12
2) No

En caso de elegir Si - FAT12, se utilizara una imagen de SODIUM creada con formato de sistema de archivos FAT 12 (para floppy disk) generada durante la compilación y se encontrará en el archivo build/sodium_fat12.img.

La opción 2) Montar imagen de SODIUM en Disco Rigido  nos permite determinar si se va a utilizar o no una imagen de Disco Rígido montada en el emulador de VM durante el lanzamiento de la prueba. Las sub-opciones disponbles son:

Montar imagen de SODIUM en Disco Rigido:
=======================================

1) Si - FAT16
2) Si - FAT32
3) No

En caso de elegir Si - FAT16, se utilizara una imagen de SODIUM creada con formato de sistema de archivos FAT 16 generada durante la compilación y se encontrará en el archivo build/sodium_fat16.img. En caso de elegir Si - FAT32, se utilizara una imagen de SODIUM creada con formato de sistema de archivos FAT 32 generada durante la compilación y se encontrará en el archivo build/sodium_fat32.img.

La opción 3) Montar imagen de SODIUM en CD-ROM  nos permite determinar si se va a utilizar o no una imagen de CD-ROM montada en el emulador de VM durante el lanzamiento de la prueba. Las sub-opciones disponbles son:

Montar imagen de SODIUM en CD-ROM:
==================================

1) Si - FAT12
2) No

En caso de elegir Si - FAT12, se utilizara una imagen de SODIUM creada con formato de sistema de archivos FAT 12 (para CD-ROM) generada durante la compilación y se encontrará en el archivo build/sodium_fat12.img.

La opción 4) Dispositivo de Booteo  nos permite determinar cuál va a ser el dispositivo de booteo por defecto configurado para la VM. Las opciones son:

Dispositivo de Booteo:
======================

1) Floppy Disk
2) Disco Rigido
3) CD-ROM

En caso de elegir un dispositivo de booteo del cual no se haya seleccionado el montaje de una imagen, se producirá un error (dispositivo booteable no encontrado) durante el lanzamiento de la prueba.

La opción 5) Tipo de Debugging  nos permite determinar cuál va a ser el modo utilizado para debugging de SODIUM. Todas las opciones están configuradas para depurar el entorno de pruebas de bochs. Más información sobre los tipos de debugging disponibles, consultar el Capítulo 3: Depurando SODIUM. Las opciones disponibles para debugging son:

Tipo de Debugging:
===================

1) Debugger Interno - Consola
2) Debugger Interno - GUI
3) GDB - GNU Debugger

En caso de elegir Debugger Interno - Consola, se utilizará el debugger interno de bochs presentado utilizado a través de la consola de comandos. En caso de elegir Debugger Interno - GUI, se utilizará la versión gráfica del debugger interno de bochs. En caso de elegir GDB - GNU Debugger se utilizará el debugger externo estándar de Linux (GNU Debugger).

La opción 6) Auto-Break on Boot  nos permite determinar si se va a configurar un breakpoint antes de ejecutar la primera instrucción de la BIOS durante el booteo de bochs. Esto es útil para depurar durante el inicio de SODIUM, pero puede ser removido si no es necesario para agilizar las pruebas.

 

Configuración de Instalación en Dispositivo Físico


En caso de seleccionar la opción 2 (Configuración de Instalación en Dispositivo Físico) en el menú inicial, se abrirá el menú correspondiente a la configuración de la instalación de SODIUM en un dispositivo físico. El dispositivo sobre el que se instalará SODIUM será booteable desde cualquier máquina física o virtual. Al ingresar a este menú, se mostrarán las siguientes opciones de configuración:

1) Tipo de dispositivo de instalación      :  USB - FAT32
2) Dirección absoluta del dispositivo      :  /dev/sdb
3) Realizar Backup del dispositivo
4) Recuperar Backup del dispositivo

La opción 1) Tipo de dispositivo de instalación  nos permite determinar sobre qué tipo de dispositivo deseamos hacer la instalación de SODIUM. La elección de este parámetro debe coincidir con el dispositivo físico que hayamos conectado para realizar la instalación. Por ejemplo, si deseamos instalarr conectamos un pendrive, debemos elegir alguna de las opciones que indican “USB”.  Las sub-opciones disponibles son:

Tipo de dispositivo de instalacion:
===================================

1) Disco Rigido - FAT16
2) Disco Rigido - FAT32
3) USB - FAT16
4) USB - FAT32
5) Floppy Disk - FAT12

La opción 2) Dirección absoluta del dispositivo  nos permite indicar qué dirección absoluta tiene el dispositivo que utilizaremos para la instalación. Es importante notar que debemos indicar su ubicación dentro de la carpeta /dev, y que  se requiere que no esté previamente montado.

Las opciones 3) Realizar Backup del dispositivo y 4) Recuperar Backup del dispositivo  nos permiten resguardar el contenido del dispositivo a utilizar para recuperarlo en el futuro. De esta manera, si deseamos instalar SODIUM en un Pendrive que contiene información, podemos resguardar (opcion 3) y el menú nos mostrará:

=====================================================================
Resguardando dispositivo de tipo USB - FAT16...          
 - Desde el dispositivo: /dev/sdb1
 - hacia el archivo: /tmp/sodium.backup  
=====================================================================

1440+0 records in
1440+0 records out
1474560 bytes (1.5 MB) copied, 0.17481 s, 8.4 MB/s

Luego de utilizar el dispositivo, podemos seleccionar la opcion 4 para recuperar el contenido resguardado. Al hacer esto el menú nos mostrará:

======================================================================Recuperando el contenido del dispositivo de tipo USB - FAT16...                 
 - Desde el archivo: /tmp/sodium.backup  
 - Desde el dispositivo: /dev/sdb1       ======================================================================

1440+0 records in
1440+0 records out
1474560 bytes (1.5 MB) copied, 0.00801346 s, 184 MB/s

Configuración de Compilación


En caso de seleccionar la opción 4 (Configuración de Compilación) en el menú inicial, se abrirá el menú correspondiente a la configuración de compilación de SODIUM. En este menú se encontrará opciones referidas a cómo se compila SODIUM, independientemente de cómo se ejecuten las pruebas o se instale en un dispositivo. Actualmente se encuentran en desarrollo más opciones, por lo que este menú sólo cuenta con una sola opción:

1) Mostrar Warnings                    :  No (-w)

La opción 1) Mostrar Warnings permite definir si se mostrarán todos los warnings del compilador durante la compilación de SODIUM. Cambiar esta opción puede resultar útil para ver claramente la presencia de errores de compilación sin la interferencia de otros avisos.

Para más información sobre el proceso de compilación de SODIUM consultar el Capítulo 5-A: Configuración y Makefiles.

 

Configuración de Kernel



En caso de seleccionar la opción 5 (Configuración de Kernel) en el menú inicial, se abrirá el menú correspondiente a la configuración del kernel de SODIUM. En este menú se encontrará opciones referidas a cómo va a funcionar SODIUM una vez haya booteado, ya sea en un entorno de pruebas o sobre un dispositivo físico. Las opciones determinadas en este menú se guardarán dentro de Makefile.cfg y serán leidas desde SODIUM durante el booteo para tomar sus parámetros.

Las opciones disponibles en este menú afectan el modo en que funcionará el kernel de SODIUM respecto a aspectos variados como, por ejemplo, la administración de memoria y la planificación de procesos. Varios de estos aspectos pueden todavía ser cambiados durante la ejecución de SODIUM, pero este menú permite determinar una configuración inicial.

Las opciones disponibles en este menú son:

1) Algoritmo de Planificacion de Procesos     :  Round Robin
2) Activar Paginacion                         :  No
3) Modo de Administracion de Particiones      :  Variable
4) Tamano de Stack de Procesos                :  128 Kb
5) Tamano de Heap de Procesos                 :  128 Kb

La opción 1) Algoritmo de Planificacion de Procesos permite seleccionar el algoritmo para planificación de procesos utilizará SODIUM inmediatamente después de bootear. Más información sobre cada uno de los algoritmos disponibles se puede encontrar en el Capítulo 6-F: Planificación de Procesos. Las sub-opciones disponibles en este menú son:

Algoritmo Planificador de Procesos:
===================================

1) Round Robin
2) Round Robin con Prioridades
3) Round Robin con Quantum Variable
4) Best Time of Service
5) Shortest-Job Finishing First
6) First Come First Serve

La opción 2) Activar Paginación permite si SODIUM utilizará el modo paginado soportado por la arquitectura Intel x86 (sí), o si utilizará segmentación pura (no). En caso de elegir sí, se debe determinar el porcentaje en el cual los procesos se cargarán a memoria principal una vez ejecutados. Un porcentaje bajo es es útil para demostrar la exitencia de excepciones por Page Fault y su consiguiente proceso de swapping. Un porcentaje alto permite utilizar paginación sin page faults. El menú, en caso de elegir sí, se muestra de la siguiente manera:

Utilizar Paginacion:
===================================

1) Si
2) No

Se ha activado el uso de paginacion
===================================

Indique el porcentaje de espacio de memoria de proceso a ser cargado
inicialmente. Indique 100% para cargar todo el proceso. Un porcentaje
menor a 100 provocara Page Faults y el swap in de la pagina requerida.

Indique un porcentaje:

La opción 3) Modo de Administracion de Particiones permite seleccionar el tipo de particionado se va a utilizar para el alojamiento de los procesos de usuario en memoria. En caso de elegir Particionado Variable, los procesos contarán con segmentos del tamaño exacto que necesitan para funcionar, mientras que al elegir Particionado Fijo, se debe indicar manualmente qué tamaño tendran las particiones de cada proceso desde el siguiente sub-menú:

Administracion de Particiones Fijas
===================================

Indique el tamano de particiones a ser utilizadas para alojar los
segmentos de proceso en memoria alta. (en KiloBytes)

Tamano:

Más información sobre administración de memoria puede ser encontrada en el capítulo 6-B: Administración de Memoria.

La opción 4) Tamano de Stack de Procesos permite determinar cuál va a ser el tamaño de Stack con el que contarán los procesos para su ejecución, mientras que la opción 5) Tamano de Heap de Procesos permite determinar el tamaño del heap con el que contarán los procesos. Para más información sobre cada uno de estos parámetros consultar el capítulo: 6-C Administración de Heap y Stack.

Generación de Makefile.cfg


Una vez finalizada la configuración requerida para la compilación/ejecución de SODIUM, sólo se debe seleccionar la opción ‘x’ que permite salir del menú de configuración. Esto le permite a configurar.sh pasar a realizar el resto de la configuración automatizada, como se muestra a continuación:

- Genera/actualiza la nueva configuración sobre el archivo Makefile.cfg.

=====================================================================
Actualizando la configuracion ingresada sobre Makefile.cfg… OK
=====================================================================

- Verifica que se encuentren todos los archivos necesarios para compilar SODIUM.

=====================================================================
Validando la presencia de los binarios requeridos para la compilacion,    depuracion, documentacion y prueba del SODIUM
=====================================================================

OK.  Para mas informacion revise el archivo ./check_utils.log

- Verifica que el compilador soporta los flags necesarios para compilar SODIUM.

=====================================================================
Verificando si gcc soporta los flags basicos de compilacion utilizados por el SODIUM
=====================================================================

   -nostdinc:    OK
   -save-temps:    OK
   -g:    OK
   -fno-builtin:    OK
   -O0:    OK
   -m32:    OK

- Verifica que el compilador soporta los flags adicionales para compilar SODIUM.

=====================================================================
Verificando si gcc soporta los flags basicos de compilacion utilizados por el SODIUM
=====================================================================

-fno-zero-initialized-in-bss:    OK, se utilizara como flag adicional    -fno-stack-protector:    OK, se utilizara como flag adicional    -fno-stack-protector-all:    OK, su uso no es necesario

Se utilizaran las siguientes banderas extra para gcc version 4.6.1 :=  -fno-zero-initialized-in-bss -fno-stack-protector

- Si la configuración resultó correcta, se muestra el mensaje:

======================================================================Se ha completado satisfactoriamente la configuracion de SODIUM.

- A continuación, imprime en pantalla la lista de comandos de pruebas/compilación:

 $make clean      - Para eliminar la compilacion actual y archivos
                    temporales del SODIUM

 $make test       - Para efectuar una prueba del SODIUM

 $make clean test - Utilice esta combinacion si desea probar el
                    SODIUM luego de haber hecho una modificacion

 $make install    - Para instalar el SODIUM en un dispositivo fisico.

 $make clean install  - Utilice esta combinacion si desea instalar
                        SODIUM luego de haber hecho una modificacion

 $make sin_svn    - Para exportar el SODIUM sin los archivos y
                    directorios ocultos del Subversion

 $make docs       - Genera documentacion automaticamente en docs/html

Cada uno de estos comandos son explicados en más detalle en el capítulo 2-F: Ejecución e Instalación.