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 switchfstab,也可以编辑/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
相关产品推荐
相关产品推荐

