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

VirtualBox中NixOS虚拟机添加共享文件夹及挂载增强工具异常

搞定NixOS + VirtualBox共享文件夹配置

嘿,我来帮你解决这个问题——你已经在VirtualBox端设置了Code共享文件夹,也搞定了Guest Additions镜像的强制挂载,接下来咱们一步步完成剩余配置:

1. 先处理镜像挂载的报错(VERR_PDM_MEDIA_LOCKED)

你遇到的VERR_PDM_MEDIA_LOCKED报错,大多是因为虚拟机的光驱设备之前被占用或者镜像没正确卸载。既然你已经通过「设备->光驱」强制挂载成功了,这步可以跳过,但如果之后再碰到,给你个稳妥的解决方法:

  • 先关闭NixOS虚拟机
  • 打开VirtualBox的虚拟机设置,找到「存储」选项卡
  • 在「控制器: IDE」下的光驱设备,点击右侧的光盘图标,选择「移除虚拟光盘」
  • 重启虚拟机后再尝试插入Guest Additions镜像,一般就不会报错了

2. 安装VirtualBox Guest Additions工具

现在你已经把镜像挂载到/cdrom了,接下来要安装依赖并运行安装脚本:

  • 首先安装编译工具和匹配当前内核的头文件(NixOS下这步很重要,不然安装会失败):
    sudo nix-shell -p linuxHeaders gcc make perl
    
  • 切换到挂载目录:
    cd /cdrom
    
  • 运行安装脚本,如果你的虚拟机是UEFI模式,可能需要加--force参数:
    sudo ./VBoxLinuxAdditions.run
    
  • 安装完成后重启虚拟机,让驱动生效:
    sudo reboot
    

3. 配置共享文件夹挂载

你已经在VirtualBox端创建了Code共享文件夹,现在要在NixOS里挂载它:

  • 先创建挂载点,比如/mnt/Code:
    sudo mkdir -p /mnt/Code
    
  • 临时挂载(重启后会失效,适合测试):
    sudo mount -t vboxsf Code /mnt/Code
    
  • 开机自动挂载(推荐用NixOS的配置方式):
    编辑/etc/nixos/configuration.nix,添加以下配置:
    fileSystems."/mnt/Code" = {
      device = "Code";
      fsType = "vboxsf";
      options = [ "defaults" ];
    };
    
    然后执行命令让配置生效:
    sudo nixos-rebuild switch
    
    如果你习惯用fstab,也可以编辑/etc/fstab添加一行:
    echo "Code /mnt/Code vboxsf defaults 0 0" | sudo tee -a /etc/fstab
    

4. 验证共享文件夹是否正常

挂载完成后,咱们验证一下:

  • 查看挂载状态:
    df -h /mnt/Code
    
  • 在共享文件夹里创建测试文件,检查宿主机和虚拟机是否能互相访问:
    sudo touch /mnt/Code/test.txt
    

小提示:如果挂载时遇到权限问题,可以在挂载选项里加上uid=<你的用户ID>,gid=<你的组ID>,比如:

sudo mount -t vboxsf -o uid=1000,gid=1000 Code /mnt/Code

要是用configuration.nix的话,把options改成[ "defaults" "uid=1000" "gid=1000" ]就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:39