在与 Windows 主机操作系统共享的文件夹中创建符号链接

在与 Windows 主机操作系统共享的文件夹中创建符号链接

所以我有一个项目需要一个特定(和修改过的)版本的 jdk,我将其作为一个tar.gz

我在 VirtualBox 中运行 Kubuntu 17.04 作为 Windows 10 主机上的客户操作系统,因为我的笔记本电脑的单个磁盘有太多分区,无法在其上设置双启动。

为了节省空间并避免将文件从客户机移动到主机或反之亦然,我创建了一个共享文件夹,其中保存了我大部分的内容,并且我尝试在该文件夹中提取 jdk。

sudo tar xzf jdk-7u65-linux-x64.tar.gz 

tar: jdk1.7.0_65/bin/ControlPanel: Cannot create symlink to ‘jcontrol’: Read-only file system
tar: jdk1.7.0_65/man/ja: Cannot create symlink to ‘ja_JP.UTF-8’: Read-only file system
tar: jdk1.7.0_65/jre/bin/ControlPanel: Cannot create symlink to ‘jcontrol’: Read-only file system
tar: jdk1.7.0_65/jre/lib/amd64/server/libjsig.so: Cannot create symlink to ‘../libjsig.so’: Read-only file system
tar: Exiting with failure status due to previous errors

当我尝试在主机端使用 WinRAR 解压 tarball 时,也会收到这些错误,除非我以管理员身份运行 WinRAR。不过我不太喜欢那样做,因为我不知道在 Windows 中使用 WinRAR 进行解压是否会对 Linux 中使用的某些文件造成任何错误。

有没有办法从 Linux 客户系统实现这一点?如果没有,为什么?

权限:

user@linux-VB:~$ namei -l ~/SHRD_FLDR
f: /home/user/SHRD_FLDR
drwxr-xr-x root    root    /
drwxr-xr-x root    root    home
drwxr-xr-x user user user
lrwxrwxrwx user user SHRD_FLDR -> /media/sf_SHRD_FLDR/
drwxr-xr-x root    root      /
drwxr-xr-x root    root      media
drwxrwx--- root    vboxsf    sf_SHRD_FLDR

答案1

确保所有虚拟机以及 VirtualBox GUI 都已关闭。

前往 VirtualBox 的安装位置。

就我而言,就是这样C:\Program Files\Oracle\VirtualBox

在那里执行命令

VBoxManage.exe setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARED_NAME 1

其中 VM_NAME 是您为 VirtualBox VM 指定的名称,SHARED_NAME 是您在设置共享文件夹时指定的名称。

例如,如果我有一个名为的虚拟机Linux,我为其设置了一个SHARED~/SHARED从客户机内部访问的共享文件夹,则命令将是

VBoxManage.exe setextradata Linux VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARED 1

尽管有此命令 — — 并且根据我的理解,这取决于您的 Windows 版本 — — 您可能还需要以管理员身份运行 VirtualBox 才能创建符号链接。

使用 Virtualbox 测试Version 5.1.22 r115126 (Qt5.6.2)

答案2

添加到最后一点User1291 的回答在撰写本文时,所有版本的 VirtualBox(包括最新版本 6.1.32)都缺乏创建符号链接的能力无海拔(即“以管理员身份运行”)或 Windows 10 主机上的其他特殊权限,因为 VirtualBox 对 WindowsCreateSymbolicLink函数的底层调用不包含该SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE标志。

如果VirtualBox 票号 #18680得到修复,然后按照微软的解释你只需要启用 Windows 10”开发者模式“并且不再使用‘以管理员身份运行’。

对此进行了更深入的讨论这里

相关内容