Ubuntu Virtual EPS 2021 (VDI)

Con la llegada del curso 2021/22 y el cambio de distribución de GNU/Linux en los laboratorios de la EPS, se hacía necesaria una versión del VDI completamente nueva, de imagen diferente y con los programas de las peticiones de SW de este curso completamente actualizados a octubre/noviembre de 2021.

El nuevo VDI contiene el siguiente listado de SW de la base de Ubuntu 20.04.3 LTS:

angular CLI (12.0.5) 
apache2 (2.4.41) 
apache2-common (2.4.41) 
apio-0.7.6 para python 3.8 
apt (2.0.6) 
bash-5.0.17 
bison++ (1.21.11) 
bower-1.8.12 
Chromium Browser (85.0.4183.83) 
composer-1.10.1 
containerd (1.5.2) 
ddd (3.3.12-5) 
ddd-doc (3.3.12-5) 
docker (1.5-2) 
docker-compose (1.25.0) 
docker-image-node10-node10-alpìne 
docker-image-nodered/node-red:latest 
docker-images-mysql-domingogallardo-playframework 
docker-swift (latest) 
docker.io (20.10.2) 
Driver Asus AC56 USB-Wifi rtl8812au (4.3.8.12175) 
Driver Asus AC56 USB-Wifi rtl8812au (v5.6.4.2) 
editores de texto 
Emacs26 (26.3) 
evince (3.36.7-0) 
exfat-fuse (1.3.0-1) 
exfat-utils (1.3.0-1) 
expo-cli (4.12.8) 
ffmpeg (4.2.4-1) 
Firefox (91.0.2) 
fpga-alhambra-icezum 
g++-9-arm-linux-gnueabihf 
g++-9-multilib 
g++-9-multilib-arm-linux-gnueabihf 
g++-9-riscv64-linux-gnu 
g++-9.3.0 
gawk (5.0.1) 
gcc-9-arm-linux-gnueabihf 
gcc-9-arm-linux-gnueabihf-base 
gcc-9-cross-base 
gcc-9-multilib 
gcc-9-multilib-arm-linux-gnueabihf 
gcc-9-riscv64-linux-gnu 
gcc-9-riscv64-linux-gnu-base 
gcc-9.3.0 
gcc-msp430 (4.6.3) 
gdb-9.2-0 
gdm3 (3.36.3-0) 
geany-1.36-1 
gedit-3.36.2-0 
generator-jhipster-7.1.0 
ghostscript (9.50) 
Gimp (2.10.18-1) 
git (2.25.1-1) 
Gnome (3.36) 
Google Chrome 94.0.4606.71-1 (64 bits) 
graphviz-2.42.2 
grunt-cli-1.4.3 
GTK2 (2.24.32) 
GTK3 (3.24.20) 
gulp-4.0.2 
gulp-cli-2.3.0 
intelliJ-IDEA-Ultimate (2021.1.3) 
jhipster-0.0.2 
jhipster-uml (2.0.3) 
jmeter-junit (2.13-4) 
joe-4.6 
junit-3.8.2-9 
junit4 (4.12-8) 
kate-19.12.3 
Kernel 5.10.0-1049-oem-x86_64 
konsole-19.12.3 
libjna-java (4.5.2) 
libjna-jni (4.5.2) 
libjna-platform-java (4.5.2) 
libmariadb-java (2.5.3-1) 
libmysqlclient-dev (8.0.26) 
libmysqlclient21 (8.0.26) 
libmysqlcppconn-dev (1.1.12-4) 
libmysqlcppconn7v5 (1.1.12-4) 
libntfs-3g883 (2017.3.23AR.3-3) 
libogre-1.9-dev (1.9.0) 
libogre-1.9.0v5 
libopenmpi-dev (4.0.3) 
libopenmpi3 (4.0.3) 
libpam0g-dev (1.3.1) 
libssl-dev (1.1.1f) 
libssl1.1 (1.1.1f) 
libx11-6 (1.6.9-2) 
libx11-xcb-dev (1.6.9-2) 
mongodb (3.6.9) 
mongodb-clients (3.6.9) 
mongodb-server (3.6.9) 
mongodb-server-core (3.6.9) 
mysql-client-8.0.26 
mysql-server-8.0.26 
mysql-server-core-8.0 (8.0.26) 
mysql-workbench-community (8.0.23-1) 
nemiver-0.9.6 
node-v16.10.0 (nodejs-v16.10.0) 
nodejs 
nodemon-2.0.7 
npm-7.18.1 
ntfs-3g (2017.3.23AR.3-3) 
NVIDIA 460 
OpenJDK 11.0.11 
openmpi-bin (4.0.3) 
openmpi-common (4.0.3) 
openssl (1.1.1f) 
php-7.4-bcmath (7.4.3-4) 
php-7.4-bz2 (7.4.3-4) 
php-7.4-cli (7.4.3-4) 
php-7.4-common (7.4.3-4) 
php-7.4-curl (7.4.3-4) 
php-7.4-dev (7.4.3-4) 
php-7.4-gd (7.4.3-4) 
php-7.4-json (7.4.3-4) 
php-7.4-mbstring (7.4.3-4) 
php-7.4-mysql (7.4.3-4) 
php-7.4-opcache (7.4.3-4) 
php-7.4-readline (7.4.3-4) 
php-7.4-sqlite (7.4.3-4) 
php-7.4-xml (7.4.3-4) 
php-7.4-zip (7.4.3-4) 
php-7.4.3-4 
pip3 (21.1.2) de python3.8 
pip3 h5py (3.1.0) 
pip3 jupyter (1.0.0) 
pip3 jupyterlab (3.0.16) 
pip3 Keras (2.2.4) 
pip3 matplotlib (3.1.2) 
pip3 numpy (1.19.5) 
pip3 opencv-contrib-python (4.5.1.48) 
pip3 pandas (0.25.3) 
pip3 scikit-image (0.18.1) 
pip3 scikit-learn (0.22.2.post1) 
pip3 scipy (1.3.3) 
pip3 sklearn(0.0) 
pip3 tensorflow-estimator (2.5.0) 
pip3 tensorflow-gpu (2.5.0) 
pip3 theano (1.0.4) 
pip3 virtualenv (20.0.17-1) 
Postman (7.36.5) 
python3 (3.8.2) 
python3-dev (3.8.2) 
python3-mysql.connector (8.0.15-2) 
python3-pymysql (0.9.3-2) 
python3-rviz (1.13.7) 
python3.8 (3.8.10) 
python3.8-dev (3.8.10) 
qemu-4.2-3 
qemu-block-extra-4.2-3 
qemu-efi-aarch64 (20191122) 
qemu-efi-arm (20191122) 
qemu-guest-agent-4.2-3 
qemu-kvm (4.2-3) 
qemu-slof (20191209) 
qemu-system (4.2-3) 
qemu-system-arm (4.2-3) 
qemu-system-common (4.2-3) 
qemu-system-data (4.2-3) 
qemu-system-gui (4.2-3) 
qemu-system-mips (4.2-3) 
qemu-system-misc (4.2-3) 
qemu-system-ppc (4.2-3) 
qemu-system-s390x (4.2-3) 
qemu-system-sparc (4.2-3) 
qemu-system-x86 (4.2-3) 
qemu-system-x86-microvm (4.2-3) 
qemu-user (4.2-3) 
qemu-user-static (4.2-3) 
qemu-utils (4.2-3) 
qt5-default (5.12.8) 
qt5-qmake (5.12.8) 
qtbase5-dev (5.12.8) 
resolvconf (1.82) 
ROS Noetic (ros-noetic-desktop-full) (1.5.0-1) 
ros-noetic-effort-controllers 
ros-noetic-rviz (1.14.9) 
rviz (1.13.7) 
snapd-2.51.1+20.04 
squashfs-tools (4.4-1) 
Sublime Text 3.2.2 (Build 3211) 
Sublime Text 4 (Build 4107) 
swi-prolog (7.6.4) 
thunderbird (78.0.3) 
Turtlebot 2 (tb2_ws) (ROS Noetic) 
Turtlebot 3 (ROS Noetic) 
Ubuntu 20.04 LTS x86_64 (64 bits) 
Unity (7.5.0) 
valgrind-3.15.0 
veyon-service 
vim (8.1.2269) 
VirtualBox (6.1.26_Ubuntu r145957)+Oracle Ext Pack 
Visual Studio Code - VSCode (1.60.2) 
vue/cli (4.5.13) 
X11 entorno gráfico (7.7+8) 
xorg (7.7+19) 
xorg-dev (7.7+19) 
xserver-xorg-dev (1.20.11) 
yarn-1.22.10 
Yeoman (yo) 4.2.0 

Además, como programas adicionales, contiene los siguientes:

Apache Tomcat (9.0.53)
Axis2 (1.8.0)
Eclipse C++ (2021-09-R)
Eclipse Java (2021-09-R)
Eclipse JEE (2021-09-R)
JDK 1.8.0 Update 291
JDK 1.8.0 Update 291 APIdocs
Netbeans (12.0)
SoapUI (5.6.0)
SolR (8.5.2)
STS (4.11.0)
Thonny (3.3.11)

Poner en marcha el VDI es muy sencillo y requiere de los siguientes pasos:

1. Instalar/actualizar la plataforma VirtualBox descargando de https://www.virtualbox.org/

Las pruebas las hemos hecho con varias versiones: 6.1.12, 6.1.28 y 6.1.30.

Finalmente, hemos dejado la 6.1.30 y hemos instalado en el VDI las VirtualBox Guest Additions de dicha versión.

En un anfitrión Linux Ubuntu 20.04, por ejemplo, se puede instalar la plataforma, una vez descargado el paquete .deb, así:

dpkg -i virtualbox-6.1_6.1.30-148432_Ubuntu_focal_amd64.deb

2. Descargar el VDI desde esta URL de Google Drive:

https://drive.google.com/uc?id=1fzJeCRRo1ZvnFVYlZk0iM57XCtZzjBWi&export=download

Es aconsejable estar validado en el navegador con el usuario de GCloud (gcloud.ua.es) para que no haya problemas para la descarga.  En caso de no disponer de cuenta GCloud (@gcloud.ua.es), puedes crearte una de la UA con espacio ilimitado siguiendo las instrucciones indicadas en:

https://si.ua.es/es/manuales/uacloud/uacloudse/servicios-externos.html.

3. Crear la máquina virtual:

    • Botón Nueva
    • Nombre: UbuntuVirtualEPS2021
    • Sistema Operativo:  Ubuntu (64 bits)
    • Memoria: 4096 MB (mínimo 2048 MB).
    • El disco duro que utilizaremos ya estará creado y almacenado en nuestro equipo pues previamente lo habremos descargado y tendrá como nombre: Ubuntu-VDI-EPS-20_04_3-2021.vdi

4. Configuramos la máquina virtual (Menú Configuración):

    • Sistema -> Placa base -> Memoria 4096 MB
    • Sistema -> Orden de arranque -> Disco Duro (primera opción y marcar sólo ésta)
    • Sistema -> Chipset -> PIIX3
    • Sistema -> Dispositivo apuntador -> Tableta USB
    • Sistema -> Características extendidas -> Marcar Habilitar I/O APIC
    • Sistema -> Características extendidas -> Marcar Reloj hardware en tiempo UTC

    • Sistema -> Procesador -> 4
    • Sistema Límite de Ejecución -> 100%

    • Sistema -> Aceleración -> Interfaz de paravirtualización -> Predeterminado
    • Sistema -> Aceleración -> Hardware de virtualización -> Marcar Habilitar Paginación Anidada.

    • Pantalla -> Memoria de vídeo 128 MB
    • Pantalla -> Controlador gráfico -> VMSVGA

    • Almacenamiento -> Controlador IDE -> (tendremos un CD vacío)

Cuando haya que instalar las GuestAdditions (porque la versión del estudiante no sea la misma que la que lleva de Additions el VDI), habrá que añadir un CD adicional y seleccionar el archivo VBoxGuestAdditions.iso

    • Almacenamiento -> Controlador SATA -> (aparecerá el VDI descargado ya con el Attach hecho)

Como comentábamos, si la versión de la plataforma es la 6.1.30 y es igual a la del alumno, no habrá que añadir temporalmente la ISO de las Additions ni instalarlas posteriormente cuando arranquemos la máquina virtual.

    • Audio -> Dejamos todo por defecto como esté
    • Red -> Dejamos por defecto
    • Puertos serie -> Dejamos por defecto
    • USB -> Habilitar controlador USB 3.0 y crear un filtro vacío si queremos que el virtual pueda acceder a memorias externas USB.
    • Carpetas compartidas -> Dejamos por defecto
    • Interfaz de usuario -> Dejamos por defecto

Ya queda configurada la nueva máquina virtual UbuntuVirtualEPS2021

5. Lanzamos la máquina virtual (botón Iniciar estando el foco sobre la misma).

Veremos que aparece muy brevemente un gestor de arranque LILO trivial con GNU/Linux sin ningún tiempo de espera y que empieza a cargar Ubuntu 20.04 LTS con una animación.

Dependiendo del tipo de disco duro, si es SSD o si es mecánico, tardará entre 40 segundos y un par de minutos en arrancar.

Una vez arranque, cargará directamente el Escritorio con Autologin al usuario alu y veremos algo parecido a esto en Modo Ventana:

Con Host + F (siendo Host la tecla Ctrl Derecha), podemos pasar a Pantalla Completa y se verá, en un monitor panorámico de 22″ y con capacidad para mostrar en una resolución de 1920×1080, de esta forma:

El usuario podrá, al abrir una terminal de texto dentro del entorno gráfico, pasar a ser root, así:

sudo su

No pedirá contraseña, pero si la pidiera, la contraseña es también: alu

La contraseña de root, también es, igualmente: alu

La seguridad en cuanto a control de accesos y usuarios del sistema es mínima porque el VDI se enfoca a un uso personal en casa o en el portátil del alumno para hacer sus prácticas.  Está todo configurado para ello.

Si el alumno hace mal algo, borra o inutiliza el sistema parcial o totalmente, bien para arrancar, bien para ejecutar cualquier programa o, por apagarla mal, corrompe el VDI, deberá descargárselo de nuevo.


Opcional

Si la versión de la plataforma VirtualBox del estudiante no fuera la misma que incluimos en las Guest Additions del VDI).

Por defecto, hemos incluido las Additions de la versión 6.1.30 de VirtualBox.

Para instalar otra versión de VirtualBox Guest Additions distinta de la ya instalada, tenemos dos opciones:

    • Máquina virtual ya encendida y funcionando:

Menú Dispositivos -> Insertar imagen de CD de las “Guest Additions”…

Esto, insertará en la unidad de CD del equipo, estemos en Windows o en Ubuntu como anfitrión, el CD de las Additions.

En anfitriones Windows, nos dará mediante un menú de instalación amigable, la posibilidad de instalar las Additions de nuestra versión de VirtualBox instalada. En el caso de que hubiera otra versión ya antes, ofrecerá desinstalarla previamente.

En anfitriones Linux, nos dará también la oportunidad de Ejecutar desde un menú amigable aunque, particularmente, prefiero como root, lanzar el script VBoxLinuxAdditions.run así:

cd /media/alu/VBox_GAs_6.1.30

./VBoxLinuxAdditions.run

(y ejecutar la instalación de las Guest Additions)

    • Máquina virtual apagada:

Situamos el foco sobre ella, Menú Configuración -> Almacenamiento -> Controlador IDE -> Añadir CD y seleccionar el archivo VBoxGuestAdditions.iso

Dependiendo de si el anfitrión es Windows 10 o Ubuntu, el archivo estará en distintas ubicaciones. En Windows 10 estará en el directorio de instalación de VirtualBox y en anfitriones Linux estará en /usr/share/virtualbox

Guardamos, iniciamos el virtual y, cuando lleguemos a este punto, veremos el attach del CD de las Additions realizado en la parte inferior izquierda:

Entonces, abrimos una terminal de texto como indicamos y lanzamos las Additions.

Una vez instaladas, cerramos la terminal (salimos de root con el comando exit y otra vez salimos de alu con el comando exit).

Entonces, nos colocamos con el ratón sobre el CD de la parte inferior izquierda, y le damos a Expulsar (para que no se nos quede eternamente metido el CD de las Guest Additions en la máquina virtual).

Tomemos el método que tomemos, ya tendremos instaladas en nuestro VDI las Guest Additions de la versión de nuestra plataforma anfitriona VirtualBox.