Comparta todo el directorio de inicio entre el anfitrión y el invitado con Virtual Box

Comparta todo el directorio de inicio entre el anfitrión y el invitado con Virtual Box

Por algunas razones, el lugar en el que trabajo está estancado Ubuntu 12.04. Como necesito una gran cantidad de software reciente, quería usar una máquina virtual con Ubuntu 14.04. Configuré todo con éxito con virtual box 4.3(Oracle Edition).

Después de eso, intenté crear un recurso compartido del directorio de inicio de mi host y usarlo como directorio de inicio para el usuario del invitado. Una de las razones es que no quiero perderlo todo si falla la caja virtual, por lo que parece importante tener todos los archivos en el HD real.

Actualmente el directorio está montado en el invitado con AutoFS. El usuario invitado y anfitrión tienen el mismo inicio de sesión, uid y gid principal.

Parece funcionar cuando uso ssh para iniciar sesión de invitado a invitado, pero no funciona con el inicio de sesión gráfico: el usuario se desconecta inmediatamente. Supongo que es porque el inicio de sesión gráfico en el host crea algunos archivos; El inicio de sesión gráfico intenta crear esos archivos en el invitado y luego falla.

¿Alguna idea?

Respuesta1

Estoy de acuerdo con @Dan Cornilescu. Esta no es una buena idea, especialmente teniendo en cuenta lo temperamental que puede ser Linux cuando los archivos/carpetas se manipulan con privilegios Sudo, o la falta de ellos.

Aunque estoy seguro de que lo que estás sugiriendo (a pesar de que nunca hiciste una pregunta) es posible, no creo que sea la mejor solución para el problema inicial que mencionaste. "Una de las razones es que no quiero perderlo todo si falla la caja virtual..."

Entiendo este problema completamente. Por un lado tienes un increíble (gratis) servicio proporcionado por Oracle, pero no desea depender completamente de algo que no sea la "norma". Sin embargo, hay varias formas de contrarrestar este problema que ofrecen mayor tranquilidad que "tener todos los archivos en HD real". Aquí hay un par de funciones integradas en VirtualBox que uso sobre todas las demás.

~ "Instantáneas." Hacen precisamente eso. Cree una instantánea de la VM antes/después de una instalación de cualquier tipo o programe una instantánea con CronTab. De esta manera, siempre tendrá una manera rápida y fácil de cargar/iniciar una versión anterior antes de una falla.

~ Un sencilloexportar importarde la VM (o .VHD) según sea necesario. Prefiero este método porque es más estático (para mis necesidades) que las instantáneas. Tener una exportación VHD/VM como copia de seguridad es esencialmente una computadora portátil y/o una copia de seguridad interactiva. En lugar de una imagen estándar (inactiva) creada mediante un método propietario.

~ Crea el tuyo propio o usa una Vagrant Box. Más informaciónAquíyAquí. Puede encontrar uno .boxque se adapte a sus necesidades y utilizarlo como respaldo omejor todavíautilice un script básico .boxjunto con un .SHscript personalizado (BASH). Actualice este script a medida que instala programas y modifica la configuración para que, en caso de falla, simplemente ejecute un script simple y ¡violä! Está listo para comenzar, desde las puertas de una instalación nueva.

Respuesta2

En general, creo que no es una buena idea compartir su directorio de inicio entre máquinas con diferentes (versiones de) el servidor X, el administrador de ventanas y/o las aplicaciones X porque algunos de ellos a menudo usan los mismos archivos de configuración del directorio de inicio y pueden aparecer diferentes versiones. entre sí. Especialmente si se utilizan diferentes versiones de software al mismo tiempo.

A menudo, después de que una versión más reciente de algún software actualiza los archivos, las versiones anteriores ya no pueden utilizar esos archivos.

También puede suceder en la otra dirección, generalmente cuando se intenta reutilizar tal como está un directorio principal de un sistema operativo antiguo en un sistema operativo más nuevo (mientras que un usuario con un directorio principal recién creado en el sistema operativo más nuevo funciona bien): su incapacidad iniciar sesión en la GUI podría ser ese caso.

Un posible enfoque para mantener el directorio principal de la máquina virtual en el disco duro del host de una manera que no genere conflictos (estoy usando algo parecido a esto cuando actualizo mi sistema operativo):

  • exporte el directorio principal del host a través de NFS y móntelo en la VM, digamos en /mnt/host_userid.
  • crear digamos unvm_homedirdirectorio dentro de él que usará como directorio de inicio en la VM vinculándolo a la VM/hogardirectorio:

    /home/idusuario -> /mnt/host_idusuario/vm_homedir

  • directorios/archivos de enlace simbólicoque no sean directorios de aplicaciones/archivos de configuraciónpara acceder a ellos cómodamente desde ambas máquinas en el mismo lugar así:

/mnt/host_userid/vm_homedir/documentos -> ../documentos

De esta manera, mantiene todo en el disco duro del host (accesible incluso si la máquina virtual no funciona), pero cada máquina funciona con su propia copia de los archivos de configuración.

Respuesta3

Siguiendo las sugerencias (y comentarios) de @Dan Cornilescu, resolví este problema de esta manera:

  1. Creó una caja virtual compartida para el directorio de inicio del host, por ejemplohost_home
  2. Opcionalmente (pero muy importante en mi caso) permití al invitado crear enlaces simbólicos en carpetas compartidas (veraquípor ejemplo)
  3. Monte este recurso compartido en el invitado en el momento del arranque con el uid y gid del usuario invitado en, por ejemplo /mnt/host_home, (consulterespuesta aceptada aquípor ejemplo)
  4. En la casa de huéspedes, enlace simbólicamente las carpetas que quiero compartir (funciona para Desktop, Downloadsetc.)

Por ahora todo funciona como se esperaba. Puede haber una caída en el rendimiento al leer o escribir archivos, pero está bien.

información relacionada