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




Entorno de Trabajo


Para compilar el código de SODIUM y luego probarlo o instalarlo en un dispositivo booteable, es necesario armar un entorno de trabajo que contenga ciertas herramientas ya instaladas y configuradas correctamente. Para esto, los usuarios tienen dos opciones:

1) Descargar y utilizar SODIUM Developer Kit listo para usar con todas las herramientas instaladas.

2) Armar su propio entorno de compilación y pruebas.

Armado del Entorno de Trabajo


A continuación se detalla las versiones de los programas y utilitarios más antiguos con los que se sabe que se puede compilar SODIUM. En general, todos los programas son retrocompatibles, por lo que no debería haber inconvenientes si poseen una versión posterior.

La excepción del caso es el compilador (gcc) y el linkeditor (ld), que al ir evolucionando se agregan nuevas características de optimización de código, algunas de las cuales impiden la compilación o ejecución normal del SODIUM. De todos modos siempre dejan la opción de desactivar estas optimizaciones,  que podría ser necesario  de acuerdo a la compatibilidad de SODIUM.

Para facilitar el proceso de configuración, el script configurar.sh provisto con el código fuente ya define automáticamente los flags necesarios para compilar SODIUM, aunque es importante tener en cuenta que en un futuro inmediato podrían desarrollar nuevas optimizaciones, y recién una vez identificadas, se deberán agregar los parámetros que las inhabilitan al listado de CFLAGS.

Se ha registrado que la versión actual de SODIUM se ha compilado satisfactoriamente utilizando las siguientes versiones de LINUX:

- Ubuntu 7.04
- Ubuntu 11.04
- Ubuntu 12.04
- Fedora Core 1, 2, 3, 4, y 5
- Slackware 10
- RedHat 7.3, 9

Las herramientas necesarias para compilar SODIUM (y sus versiones que han sido probadas satisfactoriamente) son las siguientes:

Herramienta Versión
Kernel Linux 3.0.0-16-generic
nasm 2.09.08
mtools 3.9.1
hexdump Cualquier Versión
gcc 4.6.1
dd 8.5
ld 2.9.1
cat 8.5
make 3.81
objcopy 2.9.1

A continuación se listan paquetes adicionales que podría ser necesario instalar (dependiendo si la versión de Linux utilizada los incluye):

build-essential subversion bximage hexcat vim-full
binutils elfutils glibc-doc hexedit samba
ctags doxygen console-keymaps usbutils xdotool
mktools gdb console-utils parted indent
keyutils mkisofs elf-binutils gpart mktemp


Compilación de Bochs



Bochs es un emulador de máquina virtual que puede ser descargado desde la siguiente página web:  http://bochs.sourceforge.net/

Para probar la ejecución de SODIUM sin necesidad de utilizar un dispositivo y una computadora física, utilizamos Bochs. Bochs permite emular una computadora de arquitectura Intel IA-32, y permite simular dispositivos de entrada (diskette, CD-ROM, disco duro) mediante el uso de imágenes de dispositivo. De esta manera, es posible probar nuevas versiones de SODIUM rápidamente sin necesidad de utilizar dispositivos físicos.

Existen otros emuladores de máquinas virtuales (por ejemplo: QEMU). Sin embargo, hemos discontinuado su uso ya que bochs ha demostrado ser el que mejor refleja el funcionamiento de una computadora real. Es decir, errores  de configuración de bajo nivel en SODIUM han fallado (correctamente) durante su ejecución en bochs, mientras que han sido ignorados en otros emuladores. Esto da la seguridad de que si funciona en bochs, muy probablemente funcione en una computadora real.

Nótese que bochs es un emulador de máquina virtual, mientras que otros productos como VMware o VirtualBox utilizan directamente el hardware de la máquina huésped para ejecutar el sistema operativo a virtualizar. La diferencia entre ellos es que, en bochs, todos los registros de CPU, BIOS, y Memoria se alojan en la RAM de la computadora huésped, y las acciones pertinentes a las instrucciones ejecutadas por los programas son emuladas sobre estos datos en RAM. Mientras que, por el contrario, VMware y VirtualBox utilizan el procesador real para ejecutar las instrucciones de sus programas.

Una de las ventajas de usar emulación (especialmente con bochs), es que, al tener todos los registros en RAM y emular instrucciones, contamos con la posibilidad de depurar, detener, y continuar la ejecución de nuestro sistema operativo. Todas los registros del CPU son analizables y pueden ser revisados en cualquier momento.

Bochs cuenta con 3 tipos de debuggers:

  - Debugger Interno (Consola)
  - Debugger Interno (GUI)
  - Debugger Externo (GNU Debugger)

Una vez descargado el código, se deben configurar los flags de compilación. Los comandos utilizados para compilar bochs para depurar SODIUM son los siguientes:

 - Usando Debugger Interno (Consola):

  ./configure --enable-debugger --prefix=/usr/local/bin/bochs --enable-debugger --enable-disasm --enable-all-optimizations --with-all-libs --enable-readline  --enable-alignment-check  --with-nogui --enable-show-ips --disable-plugins --enable-pci --enable-pcidev --enable-fpu --disable-docbook --enable-pcidev --enable-usb --enable-usb-ohci --enable-usb-xhci

 make  install

 - Usando Debugger Interno (GUI):

  ./configure --enable-debugger --prefix=/usr/local/bin/bochs --enable-debugger-gui --enable-disasm --enable-all-optimizations --with-all-libs --enable-readline  --enable-alignment-check  --with-nogui --enable-show-ips --disable-plugins --enable-pci --enable-pcidev --enable-fpu --disable-docbook --enable-pcidev --enable-usb --enable-usb-ohci --enable-usb-xhci

 make  install

 - Usando Debugger Externo (GNU Debugger):

  ./configure --enable-debugger --prefix=/usr/local/bin/bochs --enable-gdb-stub --enable-disasm --enable-all-optimizations --with-all-libs --enable-readline  --enable-alignment-check  --with-nogui --enable-show-ips --disable-plugins --enable-pci --enable-pcidev --enable-fpu --disable-docbook --enable-pcidev --enable-usb --enable-usb-ohci --enable-usb-xhci

 make  install