You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下Ubuntu16.04虚拟机共享文件夹编译ONOS报Permission denied如何解决

问题根因

本次报错和vboxsf用户组权限无关,核心原因是VirtualBox共享文件系统(vboxsf)默认禁止Guest虚拟机内创建软链接,报错日志中create_symlink对应的Operation not permitted正是该限制触发的。

解决方案

方案一:启用共享文件夹软链接创建权限(可直接在共享文件夹内完整编译)

  1. 关闭运行中的Ubuntu16.04虚拟机
  2. 在Windows宿主机打开cmd/PowerShell,进入VirtualBox安装目录(默认路径为C:\Program Files\Oracle\VirtualBox),执行以下命令:
    VBoxManage setextradata "你的虚拟机名称" VBoxInternal2/SharedFoldersEnableSymlinksCreate/你的共享文件夹名称 1
    
    示例:如果虚拟机命名为Ubuntu16.04,共享文件夹的名称为EC,命令对应为:
    VBoxManage setextradata "Ubuntu16.04" VBoxInternal2/SharedFoldersEnableSymlinksCreate/EC 1
    
  3. 调整Windows宿主机权限:
    • 方案A:每次启动VirtualBox时右键选择「以管理员身份运行」
    • 方案B:打开Windows本地安全策略,在「本地策略→用户权限分配→创建符号链接」中添加你的Windows当前用户,配置完成后重启Windows生效
  4. 启动虚拟机,进入共享文件夹执行ln -s test.txt test.link测试软链接创建,无报错即可正常执行ONOS编译命令。

方案二:编译输出重定向(无需修改宿主机配置,源代码仍保留在共享文件夹同步)

如果不想调整宿主机配置,可将编译生成的文件全部写入虚拟机本地磁盘,仅保留源代码在共享文件夹:

  1. 在虚拟机本地磁盘创建编译输出目录:
    mkdir -p ~/onos_build/buck-out
    
  2. 进入ONOS源码目录,将编译输出目录软链接到本地路径:
    cd $ONOS_ROOT
    ln -s ~/onos_build/buck-out buck-out
    
  3. 正常执行原编译命令即可,所有编译过程生成的临时文件、软链接都会写入虚拟机本地磁盘,不会触发共享文件夹的权限限制。
额外验证项

如果配置后仍有问题,可检查共享文件夹挂载参数,编辑/etc/fstab添加如下挂载规则:

sf_EC /media/sf_EC vboxsf defaults,uid=1000,gid=999,symlink 0 0

其中uid=1000为用户jack的用户ID(可执行id jack查询确认),gid=999为你已确认的vboxsf组ID。


内容的提问来源于stack exchange,提问作者Batterie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:12:03