PUBLICO:Entorno de Trabajo

De Wiki Soa Unlam
Saltar a: navegación, buscar


Menú >> PUBLICO:Portada >> PUBLICO:S.O.D.I.U.M >> Entorno de Trabajo


Alternativas

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:

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

Herramientas necesarias para compilar SODIUM

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

Paquetes adicionales que son necesarios instalar

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(7.9) console-utils parted indent
keyutils mkisofs elf-binutils gpart python(2.7)
Matplolib

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):

•Configurar la instalación:
./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
•Instalar Bochs:
make install

Usando Debugger Interno (GUI):

•Configurar la instalación:
./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
•Instalar Bochs:
make install

Usando Debugger Externo (GNU Debugger):

•Configurar la instalación:
./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
•Instalar Bochs:
make install

Instalación de GDB en Linux

La instalación de GDB debe ser realizada siguiendo determinados pasos para el correcto funcionamiento del S.O Sodium junto a el Visualizador de estructuras internas. Por lo tanto a continuación se describen la forma de instalación del debugger en Linux.

1) Descarga de GDB 7.9 
Descargar y descomprimir el código fuente de GDB 7.9
2) Instalación de GDB
• Ingresar en el directorio de gdb y ejecutar el siguiente comando:
./configure --target=i386-elf --disable-werror --program-prefix=i386-elf- --with-python=/usr/bin/python
•Luego ejecutar:
make
sudo make install
•En el caso de que al ejecutar el comando make se indique que no se encuentra el programa Python, se deberá instalar sus librerías de la siguiente forma:
sudo apt-get install python2.7-dev

Instalación de Matplotlib

Matplotlib es una biblioteca para la generación de gráficos a partir de datos contenidos en listas o arrays en el lenguaje de programación Python y su extensión matemática NumPy. Proporciona una API, pylab, diseñada para recordar a la de MATLAB. Esta biblioteca es utilizada por el programa Visualizador para poder ver gráficamente el funcionamiento interno del S.O Sodium, por lo que es necesaria su instalación para poder utilizar dicha aplicación.

Los pasos para su instalación en el Sistema Operativo Linux son los siguientes:

1)Instalación de las dependencias que usa Matplotlib
•Descargar e instalar todas las dependencias de la biblioteca utilizando el siguiente comando:
sudo apt-get build-dep python-matplotlib
2)Descarga Matplotlib
•Descargar la versión 1.3.1 de Matplotlib del siguiente sitio web:
https://github.com/cartu32/matplotlib/archive/1.3.1.tar.gz
3)Instalación de Matplotlib
•Descomprimir archivo tar.gz descargado en el punto anterior utilizando el siguiente comando:
tar -xvfz matplotlib-1.3.1.tar.gz
•Ingresar al directorio donde descomprimió el archivo :
cd matplotlib
•Instalar Matplotlib con el siguiente comando:
python setup.py install