使用 Virtual Box 在主机和客户机之间共享整个主目录

使用 Virtual Box 在主机和客户机之间共享整个主目录

由于某些原因,我工作的地方只能使用Ubuntu 12.04。由于我需要很多最新的软件,所以我想使用带有 的 VM Ubuntu 14.04。我成功地使用virtual box 4.3(Oracle 版) 设置了一切。

之后,我尝试创建主机主目录的共享,并将其用作客户机上用户的主目录。其中一个原因是,如果虚拟盒出现故障,我不想丢失所有内容,因此将所有文件保存在真实硬盘上似乎很重要。

目前目录已使用 AutoFS 挂载到客户机上。客户机和主机中的用户具有相同的登录名、uid 和主 gid。

当我使用 ssh 从客户机登录到客户机时,它似乎可以工作,但使用图形登录时它不起作用:用户立即断开连接。我猜是因为主机上的图形登录会创建一些文件;图形登录尝试在客户机上创建这些文件,然后失败了。

任何想法?

答案1

我同意@Dan Cornilescu 的观点。这不是一个好主意,尤其是考虑到当使用 Sudo 权限或缺乏 Sudo 权限操作文件/文件夹时 Linux 的反复无常。

尽管我确信您所建议的(尽管您从未真正提出过问题)是可行的,但我认为这不是您提到的最初问题的最佳解决方案。“原因之一是,如果虚拟盒出现故障,我不想失去一切......”

我完全理解这个问题。一方面,你有一个很棒的(自由的) 服务,但您不想完全依赖不属于“常规”的东西。但是,有几种方法可以解决这个问题,比“将所有文件放在真实硬盘上”更省心。以下是 VirtualBox 内置的几个功能,我最常用的就是这些功能。

~”快照”他们就是这么做的。在任何类型的安装之前/之后创建 VM 的快照,或使用 CronTab 安排快照。这样,您总是可以在崩溃之前快速轻松地加载/启动到以前的版本。

~ 一个简单的出口进口根据需要创建 VM(或.VHD)。我更喜欢这种方法,因为它比快照更静态(符合我的需求)。将 VHD/VM 导出为备份本质上是便携式计算机和/或交互式备份。而不是通过专有方法创建的标准(休眠)图像。

~ 创建你自己的,或者使用 Vagrant Box。更多信息这里这里。您可以找到.box适合您需求的并将其用作备份,或者更好的是使用基本脚本.box与自定义.SH(BASH) 脚本协同工作。在安装程序和更改设置时更新此脚本,以便在发生故障时只需运行一个简单的脚本即可!一切就绪,全新安装即可。

答案2

总体而言,我发现在具有不同(版本)X 服务器、窗口管理器和/或 X 应用程序的机器之间共享主目录不是一个好主意,因为它们中的一些通常使用相同的主目录配置文件,并且不同版本可能会相互影响。 尤其是当同时使用不同的软件版本时。

通常,某些软件的新版本更新文件后,旧版本不再能够使用这些文件。

反过来也可能发生这种情况,通常是当尝试在较新的操作系统上重新使用旧操作系统中的主目录时(而在较新的操作系统上具有新创建的主目录的用户工作正常) - 您无法在 GUI 上登录可能就是这种情况。

一种以非冲突的方式将 VM 主目录保留在主机 HD 上的可能方法(我在升级操作系统时使用了类似的方法):

  • 通过 NFS 导出主机主目录并将其挂载到虚拟机上,如下所示 /mnt/主机用户 ID
  • 创建说一个虚拟机主目录你可以通过将其链接到虚拟机的/家目录:

    /home/用户 ID -> /mnt/host_用户 ID/vm_homedir

  • 符号链接目录/文件除了应用程序目录/配置文件可以从同一位置的两台机器方便地访问它们,如下所示:

/mnt/host_userid/vm_homedir/documents->../文档

这样,您可以将所有内容保留在主机 HD 上(即使 VM 关闭也可以访问),但每台机器都使用自己的配置文件副本。

答案3

根据@Dan Cornilescu 的建议(和评论),我解决了这个问题,如下所示:

  1. 为主机主目录创建了一个虚拟盒共享host_home
  2. 可选地(但对我来说非常重要)允许来宾在共享文件夹上创建符号链接(请参阅这里例如)
  3. 在启动时使用来宾用户 uid 和 gid 在来宾中挂载此共享/mnt/host_home(请参阅接受的答案 这里例如)
  4. 在客房中,我想要共享的符号链接文件夹(适用于DesktopDownloads等)

目前一切正常。读取或写入文件时性能可能会下降,但没关系。

相关内容