Entornos de desarrollo

Se recomienda utilizar para la cursada un entorno basado en Linux (e.g. una distribución como Ubuntu). Es importante por razones de compatibilidad: algunas de las tareas (sobre todo los desafíos) están pensados para Linux, y no se traducen directamente a otros sistemas operativos.

Para los TPs se utilizará qemu, que si bien es posible correrlo en otros sistemas, no lo hemos probado exhaustivamente y se nos dificultará darles soporte.

Por esta razón, recomendamos utilizar una distribución basada en Linux; o bien emularla haciendo uso de una máquina virtual.

Máquina virtual para FISOP

A continuación se describe cómo levantar una máquina virtual que podrá utilizarse como entorno para los labs y TPs de la materia. Se hace uso de Vagrant y VirtualBox.

Dependencias:

Para poder levantar la VM se necesitan:

Uso

Vagrant permite configurar máquinas virtuales a través de una especificación de las mismas en un archivo llamado Vagrantfile.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = 'ubuntu/bionic64'

  config.vm.network 'forwarded_port', guest: 3000, host: 3000
  config.vm.hostname = 'sisop'

  config.vm.provider 'virtualbox' do |vb|
    vb.memory = '2048'
    vb.name = config.vm.hostname
    # Descomentar si se quiere que la VM levante con interfaz gráfica
    # vb.gui = true
  end

  config.vm.provision 'shell', privileged: false, inline: <<-SHELL
    sudo apt-get update
    sudo apt-get install -y git make gdb qemu-system-x86 python3-dev
    sudo apt-get install -y seabios libbsd-dev gcc-multilib libc6-dev linux-libc-dev clang vim
    # Descomentar si se quiere que la VM levante con interfaz gráfica
    # sudo apt-get install -y lubuntu-desktop virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
  SHELL
end

Dejar este archivo (Vagrantfile) en un directorio (e.g. fisop-vm/) y estando en ese directorio:

  • vagrant up: levanta la máquina virtual (la primera vez va a tardar unos minutos en descargar la imagen base)
  • vagrant halt: apaga la máquina virtual
  • vagrant destroy: elimina la máquina virtual y todos sus contenidos

Detalles de la máquina virtual

Esta máquina virtual está basada en Ubuntu Bionic (18.04), y viene con los paquetes indicados en el kit de supervivencia ya instalados.

IMPORTANTE: el directorio en la máquina host donde se encuentre el archivo Vagrantfile (y desde donde se ejecutan los comandos vagrant) se comparte con la máquina virtual. Dentro de la VM es accesible en /vagrant.

CUIDADO: los datos fuera del directorio /vagrant de la VM NO están persistidos en el sistema huésped, si se ejecuta vagrant destroy o se elimina la VM de otra forma, se perderán los datos.

La máquina virtual se instala con la interfaz gráfica de lubuntu. El usuario vagrant tiene como contraseña vagrant.

La primera vez que se corre se instalan todos los paquetes (puede demorar unos minutos y requiere conexión a internet) y luego es necesario rebootear la VM (esto puede lograrse corriendo en el host vagrant halt seguido de vagrant up).

Conectarse a la máquina virtual

Ejecutando el comando vagrant ssh (nuevamente, desde el directorio donde se encuentre el Vagrantfile) se puede obtener una línea de comandos dentro de la máquina virtual.

Alternativamente, se puede levantar con interfaz gráfica, en tal caso hay que descomentar las líneas indicadas en el Vagrantfile antes de levantar la VM por primera vez. Cada vez que se haga vagrant up saldrá un pop-up con la interfaz gráfica.

Debbuging con gdb

Si no se utiliza interfaz gráfica, es posible obtener varias líneas de comando dentro de la VM (con vagrant ssh desde distintas terminales en el huésped).