所以我有一个项目需要一个特定(和修改过的)版本的 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”开发者模式“并且不再使用‘以管理员身份运行’。
对此进行了更深入的讨论这里。