Cómo usar las carpetas compartidas en VirtualBox
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:
sshes el nombre que asigné a la carpeta compartida dentro de VirtualBox.win7es 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.