XP下Virtualbox虚拟Ubuntu共享文件夹设置(mounting failed with the error: Protocol error)

本文详细介绍如何在VirtualBox环境下配置共享文件夹,包括安装增强功能包、设置共享文件夹及挂载等步骤,适用于Windows XP/7与Ubuntu/CentOS组合。


环境:主机操作系统 是Windows XP ,虚拟机 是Ubuntu 9.10,虚拟机是VirtualBox 3.08。

 1. 安装增强功能包(Guest Additions)

 安装好Ubuntu 9.10后,运行Ubuntu并登录。然后在VirtualBox的菜单里选择"设备(Devices)" -> "安装增强功能包(Install Guest Additions)"。

    你会发现在Ubuntu桌面上多出一个光盘图标,这张光盘默认被自动加载到了文件夹/media/cdom0。进入命令行终端,输入:

    cd /media/cdom0

    sudo ./VboxLinuxAdditions.run

    开始安装工具包。安装完毕后会提示要重启Ubuntu。

    2. 设置共享文件夹

    重启完成后点击"设备(Devices)" -> 共享文件夹(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。共享名可以任取一个自己喜欢的,比如"gongxiang",尽量使用英文名称。

    3. 挂载共享文件夹

    重新进入虚拟Ubuntu,在命令行终端下输入:

    sudo mkdir /mnt/shared

    sudo mount -t vboxsf gongxiang /mnt/shared

 其中"gongxiang"是之前创建的共享文件夹的名字。OK,现在Ubuntu和主机可以互传文件了。

    假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项

    gongxiang /mnt/shared vboxsf rw,gid=100,uid=1000,auto 0 0

    这样就能够自动挂载了。

    4. 卸载的话使用下面的命令:

    sudo umount -f /mnt/shared

    注意:

    共享文件夹的名称千万不要和挂载点的名称相同。比如,上面的挂载点是/mnt/shared,如果共享文件夹的名字也是shared的话,在挂载的时候就会出现如下的错误信息(看http://www.virtualbox.org/ticket/2265):

    /sbin/mount.vboxsf: mounting failed with the error: Protocol error


提示错误
/sbin/mount.vboxsf: mounting failed with the error: Invalid argument
   1.取消自动挂载可以解决,

   2.r若1没有效果,即在/etc/fstab中添加一项
gongxiang /mnt/shared vboxsf rw,gid=100,uid=1000,auto 0 0










基本步骤:(xp 为 host, Ubuntu为 guest)
1. 启动ubuntu, 然后先virtualbox的安装增强功能,菜单:“设备(D)”-> "安装增强功能";然后进入ubuntu 系统,安装Vboxadditions_.iso, 重启ubuntu

 

安装命令如下:   

 mount /dev/cdrom   挂载光驱,如果已加载则会提示相应挂载光驱的目录

 cd /mnt/cdrom   进入光盘

 sudo sh ./VBoxLinuxAdditions-x86.run vfs-module   

 reboot   安装成功后需要重启系统


2. virtualbox 管理器:菜单 “设备(D)”->“ 分配数据空间” ,选择xp 的共享目录,要是英文的目录名(否则会出问题),比如: d:/study;
3. 在终端运行:
    sudo mkdir /mnt/share 
    sudo mount -f vboxsf study /mnt/share
    ls - /mnt/share
4. over!

如果权限不够就用sudo

 dir /sbin/mount.*    确认/sbin/mount.vboxsf存在

 lsmod | grep vboxvfs 查看vboxvfs模块是否加载,若加载,会显示两个文件;如果没有加载,执行sudo modprobe vboxvfs命令加载

 sudo mount -t vboxsf SHARENAME MOUNTFOLDER。其中,SHARENAME是XP中共享文件夹的名字,MOUNTFOLDER需要你事先创建好,一般在‘/mnt’目录

 

如果你不想每一次手动挂载,可以在/etc/fstab中添加一项。share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0

这样就可以自动挂载了。


注意:一定要在mount之前,确定已经加载了vboxsf模块。
如果不加载的话,会出现mount出错的情况。

/sbin/mount.vboxsf: mounting failed with the error: No such device

删除共享 

sudo umount -f /mnt/share







基本步骤:(xp 为 host, Ubuntu为 guest)
1. 启动ubuntu, 然后先virtualbox的安装增强功能,菜单:“设备(D)”-> "安装增强功能";然后进入ubuntu 系统,安装Vboxadditions_.iso, 重启ubuntu

 

安装命令如下:   

 mount /dev/cdrom   挂载光驱,如果已加载则会提示相应挂载光驱的目录

 cd /mnt/cdrom   进入光盘

 sudo sh ./VBoxLinuxAdditions-x86.run vfs-module   

 reboot   安装成功后需要重启系统


2. virtualbox 管理器:菜单 “设备(D)”->“ 分配数据空间” ,选择xp 的共享目录,要是英文的目录名(否则会出问题),比如: d:/study;
3. 在终端运行:
    sudo mkdir /mnt/share 
    sudo mount -f vboxsf study /mnt/share
    ls - /mnt/share
4. over!

如果权限不够就用sudo

 dir /sbin/mount.*    确认/sbin/mount.vboxsf存在

 lsmod | grep vboxvfs 查看vboxvfs模块是否加载,若加载,会显示两个文件;如果没有加载,执行sudo modprobe vboxvfs命令加载

 sudo mount -t vboxsf SHARENAME MOUNTFOLDER。其中,SHARENAME是XP中共享文件夹的名字,MOUNTFOLDER需要你事先创建好,一般在‘/mnt’目录

 

如果你不想每一次手动挂载,可以在/etc/fstab中添加一项。share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0

这样就可以自动挂载了。


注意:一定要在mount之前,确定已经加载了vboxsf模块。
如果不加载的话,会出现mount出错的情况。

/sbin/mount.vboxsf: mounting failed with the error: No such device

删除共享 

sudo umount -f /mnt/share










环境:主机操作系统Windows 7,虚拟机是CentOs5.5,虚拟机是VirtualBox 3.2.12。
1. 安装增强功能包(Guest Additions)
安装好CentOs5.5后,运行CentOs5.5并登录。然后在VirtualBox的菜单里选择"设备(Devices)" -> "安装增强功能(Install Guest Additions)"。
你会发现在CentOs5.5桌面上多出一个光盘图标,这张光盘默认被自动加载到了文件夹/media/VBOXADDITION_3.2.10_66523(根据版本不同该名称可能有所不同)。进入命令行终端,输入:
  #cd /media/VBOXADDITION_3.2.10_66523

  #sudo bash ./VBOXADDITION_3.2.10_66523-x86.run或sh VBOXADDITION_3.2.10_66523-x86.run

Oracle VM VirtualBox 设置本机与虚拟机共享文件---史上最完整步骤 - liqingteng1@126 - 雨狐分享

 pecify KERN_DIR=<directory> 百度找到解决办法

安装kernel-develkernel-headers两个软件包,配置编译环境
先安装好gcc
#yum -y install gcc
再安装kernel-develkernel-headers
#yum install kernel-devel kernel-headers
在安装完成后,做一个连接
ln -s /usr/src/kernels/2.6.18-194.26.1.el5-i686 /usr/src/linux
注意:一定要进行这此项操作,否则 VirtualBox 客户端增强功能在安装的过程中同样会报错。其中“2.6.18-194.26.1.el5-i686”是内核的版本号,不同的版本可能会不一样,你要根据你自己的系统内核填入。#uname -r 可以查看内核版本。
安装成功后,再次执行
#cd cd /media/VBOXADDITION_3.2.10_66523
#sh VBOXADDITION_3.2.10_66523-x86.run
重新启动下
#lsmod|grep vboxsf
vboxsf 38088 0
vboxguest 152104 7 vboxsf
说明载入了内核模块 vboxsf
2.
设置共享文件夹
重启完成在VirtualBox的菜单点击"设备(Devices)" -> 分配数据空间(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。尽量使用英文名称。我这里用winshare.
3.
挂载共享文件夹
重新进入虚拟CentOs5.5,在命令行终端下输入:
  #sudo mkdir /mnt/share
  #sudo mount -t vboxsf winshare /mnt/share
如果提示 /sbin/mount.vboxsf: mounting failed with the error: No such device
可能是没有载入内核模块 vboxfs ,先查看下:
#lsmod | grep vboxsf
如果没有结果返回,说明 vboxsf没有载入,执行
#sudo modprobe vboxsf
正常的话mount -t vboxsf winshare /mnt/share共享文件夹应该可以访问了
#cd /mnt/share
#ls -al
假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项
share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0
这样就能够自动挂载了。
4.
取消挂载
  #sudo umount -f /mnt/shared
 
注意:共享文件夹的名称千万不要和挂载点的名称相同(这一点我并未实验,不过也无必要)。比如,上面的挂载点是/mnt/share,如果共享文件夹的名字也是share的话,在挂载的时候就会出现如下的错误信息(http://www.virtualbox.org/ticket/2265)
/sbin/mount.vboxsf: mounting failed with the error: Protocol error

<think>我们之前已经解决了“未知的文件类型vboxsf”的问题,现在用户遇到了新的错误:在尝试挂载共享文件夹时出现“mounting failed with the error: No such device”。 根据引用[1]、[2]、[3]、[4]、[5],这个错误可能有多种原因,包括: 1. 内核头文件与当前内核版本不匹配(引用[3]提到“Kernel headers not found for target kernel”) 2. 共享文件夹设置冲突(引用[4]提到因为有两个共享文件夹,虽然路径相同但名字不同,删除一个后解决) 3. 需要更新内核并安装必要的开发包(引用[5]通过yum update和安装kernel、kernel-devel等解决) 结合之前我们解决的步骤(已经安装了增强功能),现在需要针对“No such device”错误进行排查。 解决方案: 1. 确保内核头文件与当前运行的内核版本一致。 2. 检查共享文件夹设置,避免重复或冲突。 3. 重新编译vboxsf模块。 具体步骤: 步骤1:验证内核头文件是否安装并且版本匹配 查看当前内核版本:`uname -r` 确保安装了对应版本的kernel-devel和kernel-headers(对于Ubuntu是linux-headers-$(uname -r)) 步骤2:检查共享文件夹设置VirtualBox管理器中,检查虚拟机共享文件夹设置,确保没有重复的共享文件夹(引用[4]的情况)。 步骤3:重新编译vboxadd模块 如果内核头文件已经正确安装,尝试重新编译VirtualBox增强功能模块: ```bash sudo /opt/VBoxGuestAdditions-*/init/vboxadd setup # 或者 sudo /sbin/rcvboxadd quicksetup all ``` 如果上述命令不可用,可以尝试重新安装增强功能(参考之前步骤)。 步骤4:检查模块是否加载 使用`lsmod | grep vboxsf`查看vboxsf模块是否加载。如果没有,尝试手动加载: ```bash sudo modprobe vboxsf ``` 如果加载失败,查看日志文件`/var/log/vboxadd-setup.log`,根据错误信息进一步解决。 步骤5:如果上述步骤无效,尝试完全重装增强功能(包括卸载旧版本) 卸载: ```bash sudo sh /opt/VBoxGuestAdditions-*/uninstall.sh ``` 然后重新安装(确保已经挂载了增强功能的CD镜像): ```bash sudo mount /dev/cdrom /media/cdrom cd /media/cdrom sudo ./VBoxLinuxAdditions.run ``` 步骤6:重启虚拟机并再次尝试挂载。 步骤7:如果还是不行,考虑升级内核并重新安装增强功能(引用[5]的方法): 对于CentOS/RHEL: ```bash sudo yum update -y sudo yum install -y kernel kernel-devel kernel-headers gcc make reboot ``` 重启后,重新安装增强功能。 注意:在升级内核后,务必重启到新内核,然后再安装增强功能。 步骤8:如果问题依旧,检查共享文件夹名称是否正确,挂载点是否存在,以及挂载命令是否正确。 例如挂载命令: ```bash sudo mount -t vboxsf 共享文件夹名称 挂载点路径 ``` 步骤9:查看引用[4]的启示,检查是否有多个同路径的共享文件夹,删除多余的。 最后,如果以上步骤都不能解决,考虑在VirtualBox中删除共享文件夹然后重新添加,并确保在虚拟机设置共享文件夹的“自动挂载”和“永久”选项设置正确。 生成相关问题: 1. 如何检查VirtualBox共享文件夹设置? 2. 如何查看当前加载的内核模块? 3. VirtualBox增强功能安装失败后如何清理残留文件? </think>### 解决 "mounting failed with the error: No such device" 错误的完整指南 #### 🔍 错误原因分析 当修复 "未知的文件类型vboxsf" 后出现此错误,通常表明: 1. **内核模块加载失败**:`vboxsf` 内核模块未正确加载或编译[^3] 2. **共享文件夹配置冲突**:虚拟机中存在重复或无效的共享文件夹设置[^4] 3. **内核版本不匹配**:Guest Additions 与当前内核版本不兼容[^5] 4. **设备识别异常**:VirtualBox 虚拟设备驱动异常 --- #### 🛠️ 分步解决方案 ##### ✅ 步骤1:验证内核模块状态(关键检查) ```bash # 检查 vboxsf 模块是否加载 lsmod | grep vboxsf # 若未加载,尝试手动加载 sudo modprobe vboxsf ``` > 若返回 `modprobe: ERROR: could not insert 'vboxsf'` 进入步骤2 ##### ✅ 步骤2:强制重建内核模块 ```bash # 清除旧模块 sudo /sbin/rcvboxadd cleanup # 重建内核模块 sudo /sbin/rcvboxadd setup ``` > 查看日志排查错误:`tail -f /var/log/vboxadd-setup.log`[^3] ##### ✅ 步骤3:内核头文件修复(针对版本不匹配) ```bash # CentOS/RHEL sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) # Ubuntu/Debian sudo apt install -y linux-headers-$(uname -r) # 重建模块 sudo /sbin/rcvboxadd quicksetup all ``` > 必须确保 `uname -r` 输出与安装的头文件版本完全一致[^5] ##### ✅ 步骤4:清理冲突共享文件夹配置 1. 关闭虚拟机 2. VirtualBox 设置共享文件夹 3. 删除所有共享文件夹(尤其是重复项)[^4] 4. 重新创建单一共享文件夹(勾选"自动挂载"和"固定分配") ##### ✅ 步骤5:完全重装增强功能 ```bash # 卸载现有版本 sudo /opt/VBoxGuestAdditions-*/uninstall.sh # 安装新版本(需先加载增强功能镜像) sudo sh /media/cdrom/VBoxLinuxAdditions.run --nox11 sudo reboot ``` --- #### ⚠️ 挂载注意事项 ```bash # 正确挂载命令格式 sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share_name /mnt/share # 避免使用的错误方式 ❌ sudo mount.vboxsf share_name /mnt/share # 缺少 -t 参数 ``` > `uid/gid` 通过 `id -u` 和 `id -g` 获取当前用户ID[^1] --- #### 🔧 高级故障排查 **情况1:日志出现 `Kernel headers not found`** ```bash # 查找可用内核头文件 (CentOS) yum list kernel-devel # 强制指定头文件路径 sudo sh /media/cdrom/VBoxLinuxAdditions.run \ --kernel /usr/src/kernels/$(uname -r) ``` **情况2:Windows 主机路径包含中文/空格** 1. 共享文件夹路径改为全英文无空格 2. 名称使用下划线替代空格:`my_share` **情况3:SELinux 拦截** ```bash # 临时禁用 sudo setenforce 0 # 永久禁用(编辑 /etc/selinux/config) SELINUX=disabled ``` --- #### 💡 预防措施 1. **快照虚拟系统**:重大操作前创建快照 2. **版本一致性**: ```bash # 查询VirtualBox版本 VBoxManage --version # 确保Guest Additions版本匹配 sudo modinfo vboxsf | grep version ``` 3. **定期更新**: ```bash sudo apt upgrade virtualbox-guest-utils # Ubuntu sudo yum update VirtualBox-GuestAdditions # CentOS ``` --- ### ❓ 相关问题 1. 如何验证 VirtualBox 共享文件夹的内核模块是否编译成功? 2. 当主机和虚拟机使用不同版本的 VirtualBox 时会出现什么问题? 3. 除共享文件夹外,还有哪些 VirtualBox 虚拟机与宿主机间的文件共享方法? 4. 如何解决共享文件夹中的文件权限问题? > 引用提示:内核头文件匹配是关键解决点 [^3][^5],共享文件夹配置冲突是常见诱因 [^4]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值