Cómo crear máquinas virtuales de VirtualBox desde la terminal de Linux

Contenidos

Logotipo de VirtualBox

La mayoría de los proveedores de la nube alquilan servidores virtuales en lugar de hardware real. Si pretendes hacer lo mismo en tus propios servidores, ya sea para ejecutar diferentes sistemas operativos o administrar múltiples entornos, puedes hacerlo totalmente desde tu terminal.

Si estás planeando solamente usando máquinas virtuales, es factible que le interese un hipervisor. Un hipervisor reemplaza su sistema operativo host y está diseñado a medida para administrar múltiples máquinas virtuales. No podrá ejecutar aplicaciones en el sistema operativo host, pero puede virtualizar fácilmente Ubuntu Server o algo y ejecutar las aplicaciones en la parte de arriba del hipervisor.

Instalación de VirtualBox y el paquete de extensión VBox

VirtualBox es un software de virtualización sin costes basado en GUI que se ejecuta como una aplicación en su sistema operativo host (un hipervisor de tipo 2). Es factible que lo haya usado antes en una computadora personal para configurar una máquina virtual, pero VirtualBox en realidad dispone de una interfaz de línea de comandos completa y se puede utilizar totalmente solo desde una terminal, lo que lo hace perfecto para este caso de uso. Otra solucion seria QEMU, pero VirtualBox está probado y es inmejorable por ser sin costes y open source.

A pesar de esto, la CLI de VirtualBox es un poco difícil de manejar, por lo que si solo está jugando en un servidor doméstico y tiene un poco de RAM de sobra, puede instalar un entorno de escritorio ligero en su servidor y configurar VirtualBox de la manera normal. Aún puede ejecutar máquinas virtuales en modo sin cabeza para que sigan funcionando después de cerrar sesión en DE.

Si planea ceñirse a la CLI, la instalación es bastante simple, dado que está habilitada de forma directa desde apt:

sudo apt-get install virtualbox

A pesar de esto, querrá tomar nota de la versión que está instalada ( VBoxManage -v ), dado que necesitará instalar algunas cosas más. Debido a que estamos configurando en modo sin cabeza, necesitaremos una forma de conectarnos a la máquina antes de que se pueda configurar SSH / RDP.

Dirigirse a Página de descarga de VirtualBoxy busque el link del paquete de extensión para la versión en la que se está ejecutando. Descárgalo con wget:

wget https://download.virtualbox.org/virtualbox/5.2.42/Oracle_VM_VirtualBox_Extension_Pack-5.2.42.vbox-extpack

E instalarlo:

sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.42.extpack

Por alguna razón, VRDE no parecía funcionar para nosotros con el paquete de extensión VNC integrado instalado. La eliminación de este paquete resolvió el problema:

sudo VBoxManage extpack uninstall VNC

Configurar una máquina virtual

Para comenzar, crearemos una nueva máquina virtual llamada «Ubuntu». Puede ver una lista de tipos de SO compatibles con VBoxManage list ostypes.

sudo VBoxManage createvm --name "Ubuntu" --ostype Ubuntu_64 --register

Dele a la máquina algo de RAM y cree un nuevo disco duro. Iremos con 4 GB de RAM y 32 GB de espacio en el disco duro, pero ambos se pueden expandir más adelante. Tenga en cuenta que el disco duro es un disco virtual y no está preasignado.

sudo VBoxManage modifyvm "Ubuntu" --memory 4096
sudo VBoxManage createhd --filename "Ubuntu.vdi" --size 32000

Establezca la cantidad de CPU virtuales. Esto se mide en subprocesos, no en núcleos de CPU completos.

sudo VBoxManage modifyvm "Ubuntu" --cpus 2

Lo siguiente es una configuración más para el disco duro. Por lo general, esto sucede automáticamente al crear máquinas desde la GUI, pero tendrá que crear manualmente un controlador SAS y conectarlo a la VM para que el disco duro funcione correctamente.

sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --add sas --controller LSILogicSAS
sudo VBoxManage storageattach "Ubuntu" --storagectl "SAS Controller" --port 0 --device 0 --type hdd --medium "Ubuntu.vdi"
sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --hostiocache on

Haremos lo mismo con el disco que contendrá la ISO para instalar el sistema operativo. Esto supone que su ISO se encuentra en /home/user/Ubuntu.iso, por lo tanto cámbielo en consecuencia.

sudo VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4
sudo VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium "/home/user/Ubuntu.iso"

Después, active algunos interruptores relacionados con el rendimiento para evitar ralentizaciones por el uso excesivo de RAM:

sudo VBoxManage modifyvm "Ubuntu" --nestedpaging on
sudo VBoxManage modifyvm "Ubuntu" --largepages on

A continuación, crearemos la red que utilizará esta máquina virtual. Hay muchas opciones para este paso:

  • NAT, el más simple, que simplemente posibilita que la VM se comunique con el mundo exterior a través de la traducción de direcciones de red (NAT). Esto no posibilita que las máquinas virtuales se comuniquen entre sí y no posibilita el contacto de host a invitado a menos que se reenvíe el puerto.
  • La red NAT es equivalente a la NAT, excepto que la red se comparte entre las máquinas virtuales y pueden comunicarse entre sí. La red NAT actúa como una subred virtual.
  • Bridged, que une la conexión física de forma directa a la VM. La máquina virtual dispone de una dirección IP real en su red. Esto puede funcionar inclusive con una sola conexión Wi-Fi / Ethernet, pero si dispone de una tarjeta de red con muchos puertos Ethernet, puede adjudicar una interfaz completa de forma directa a una máquina virtual.
  • Red virtual, que conecta varias instancias en una red virtualizada aislada. Esto es útil para modelar redes reales, pero no es adecuado para la mayoría de los casos de uso.
  • Adaptador de solo host, es equivalente a la red virtual, pero posibilita hablar con el host (no con Internet).

Para este ejemplo, usaremos la red NAT, dado que es simple de configurar y la más versátil del grupo, ofreciendo un equilibrio de conectividad y aislamiento.

Cree una nueva red en el 10.0.0.0/24 subred, inícielo:

sudo VBoxManage natnetwork add --netname natnet1 --network "10.0.0.0/24" --enable
sudo VBoxManage natnetwork start --netname natnet1

Y adjúntelo a la VM:

sudo VBoxManage modifyvm "Ubuntu" --nic1 natnetwork --nat-network1 natnet1

A continuación, tendremos que configurar cómo accedemos a esta instancia. Debido a que estamos instalando esto en un servidor sin cabeza (sin salida de video), no lograremos completar el procedimiento de instalación e instalar un cliente RDP en el sistema operativo invitado. Para solucionar esto, usaremos el servidor VRDE de VirtualBox, el motivo principal por la que instalamos el paquete de extensión de VirtualBox antes. Esto captura la salida de la pantalla virtual y la pone a disposición a través de RDP.

Encienda esto y establezca un puerto para esto. Querrá asegurarse de que el sistema operativo host tenga este puerto abierto.

sudo VBoxManage modifyvm "Ubuntu" --vrde on
sudo VBoxManage modifyvm "Ubuntu" --vrdeport 5587

Por último, podemos iniciar la máquina virtual en modo sin cabeza y comenzar la instalación del sistema operativo.

sudo VBoxManage startvm "Ubuntu" --type headless

Tenga en cuenta que el modo sin cabeza significa que se está ejecutando en un servidor sin cabeza, y no que el sistema operativo invitado no tenga salida de video.

Tomará uno o dos segundos para comenzar, y podrá iniciar un cliente RDP y conectarse a él usando el puerto que especificó. Puede solicitar un nombre de usuario y una contraseña; VRDE por defecto es «admin» sin contraseña.

Reenvío de puertos después de la configuración

Una vez que se complete la instalación del sistema operativo, tendrá que realizar un reenvío de puertos para mantener el acceso después de que se apague VRDE, esencialmente como abrir las reglas del firewall. Si está configurando un entorno sin cabeza como Linux, simplemente tendrá que reenviar SSH. El siguiente comando agregará una regla de reenvío de puerto a su red NAT para reenviar el puerto 2200 en el sistema operativo host al puerto SSH predeterminado en el invitado. Tenga en cuenta que este puerto deberá estar abierto en el firewall de su host para que esto funcione.

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:2200:[10.0.0.2]:22"

Si está configurando RDP, deberá configurar el servidor RDP en el sistema operativo invitado y asegurarse de que el puerto RDP esté abierto en el firewall del invitado. Después de eso, puede reenviar el puerto de la misma manera:

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "rdp:tcp:[]:5589:[10.11.0.2]:3389"

Si necesita borrar las reglas de reenvío de puertos, tendrá que eliminarlas por su nombre con este comando bastante difícil de manejar (la primera cadena antes de los dos puntos):

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete rdp

Una vez que haya verificado que puede conectarse a través de SSH / RDP de forma directa al sistema operativo invitado, puede desactivar VRDE:

sudo VBoxManage modifyvm "Ubuntu" --vrde off

Si planea utilizar esta máquina virtual a través de RDP durante períodos de tiempo prolongados, es factible que desee instalar la suite VirtualBox Guest Additions para su sistema operativo invitado.


Si decide administrar VirtualBox usando la GUI después de configurar esta VM desde la CLI, tenga en cuenta que esta VM se creó como root, por lo que deberá iniciar la GUI de VirtualBox como root para ver esta máquina virtual en el listado. Caso contrario, debería funcionar regularmente.

Al mismo tiempo, si desea que la máquina se ejecute mientras su entorno de escritorio está apagado, tendrá que hacer un clic con el botón derecho para iniciar la máquina en modo sin cabeza.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.