Cómo usar las carpetas compartidas en VirtualBox

Cómo usar las carpetas compartidas en VirtualBox
Photo by Viktor Talashuk / Unsplash

Mientras configuraba mi entorno de desarrollo en una máquina virtual con VirtualBox me encontré con un problema bastante molesto.

La instalación de openSUSE había terminado correctamente. También había instalado las Guest Additions y configurado una carpeta compartida desde VirtualBox. En teoría todo estaba listo, pero la carpeta simplemente no aparecía dentro del sistema invitado.

Después de revisar varias veces la configuración descubrí que el problema no estaba en VirtualBox, sino en el montaje de la carpeta compartida.

En este artículo doy por hecho que ya instalaste las Guest Additions y que la carpeta compartida ya fue creada desde la configuración de la máquina virtual.

Probar el montaje manualmente

Lo primero es comprobar que la carpeta puede montarse correctamente desde la línea de comandos.

sudo mount -o fmask=0133,dmask=0022 -t vboxsf ssh win7

En mi caso:

  • ssh es el nombre que asigné a la carpeta compartida dentro de VirtualBox.
  • win7 es el directorio del sistema Linux donde deseo montarla.

Si el comando termina sin errores, la configuración básica es correcta y ya podemos automatizar el proceso durante el arranque.

¿Qué significan esos parámetros?

Los parámetros fmask y dmask controlan los permisos con los que aparecerán los archivos y directorios.

Como la carpeta proviene de una partición Windows, todos los archivos tienden a mostrarse como ejecutables, algo poco conveniente para trabajar con código fuente.

Con esta configuración:

fmask=0133

los archivos terminan con permisos 644.

Mientras que:

dmask=0022

produce permisos 755 para los directorios.

Es una configuración mucho más adecuada para un entorno de desarrollo.

Montar automáticamente la carpeta

Una vez comprobado que el montaje funciona, el siguiente paso consiste en hacerlo automático cada vez que el sistema inicie.

En openSUSE opté por crear un pequeño script dentro de:

/etc/init.d/

Al archivo lo llamé rclocal.

En algunos tutoriales encontrarás el nombre rc.local, pero openSUSE no utiliza esa nomenclatura y con rclocal funciona correctamente.

Éste fue el contenido de mi archivo.

### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Archivo de inicio personalizado para VBBienForjada
### END INIT INFO

mount -o fmask=0133,dmask=0022,uid=1000 -t vboxsf ssh /home/javier/win7

Observa que además agregué el parámetro:

uid=1000

De esta manera los archivos quedan asociados al usuario normal del sistema y no al usuario root, lo que facilita el trabajo diario.

Registrar el script

Sólo falta convertir el archivo en ejecutable.

chmod +x /etc/init.d/rclocal

y registrarlo dentro del sistema de inicio.

chkconfig --add rclocal

A partir del siguiente reinicio la carpeta compartida será montada automáticamente y estará disponible desde el momento en que inicie la sesión.

Este pequeño ajuste evita tener que ejecutar el comando mount manualmente cada vez que iniciamos la máquina virtual y convierte las carpetas compartidas de VirtualBox en una herramienta mucho más práctica para trabajar entre Windows y Linux.