和平简朴的生活,纳言敏行,随遇而安。

USB and Bridged Network Support by Virtualbox on Debian

USB and Bridged Network Support by Virtualbox on Debian

发表时间 2010年05月18日 评论 2

这篇日志主要记录 debian 下的 virtualbox 里安装 虚拟机 XP 使用 USB 设备和网络桥接共享文件的问题。

首先要说的是,之前写的那个日志已经被推翻了:hesitate at win or linux。

我现在已经正式从 windows7 转到 debian 下了,原因是感觉 windows7 64位太臃肿了,安装完之后 C 盘吃掉了17G,而且为了兼容32位程序,系统文件里面很多东西都是双份的,64位一份,32位一份,这让有些洁癖的我感觉很不爽,呵呵。 花了一点时间把资料转移了一下,然后把本本装成 debian amd64 位的,感觉很不错,和我的服务器系统一样了。在安装的过程中发现了下面几个问题,记录如下:

1、首先在单用户模式下,aptitude purge linux-image-2.6.32-trunk-amd64,把这个内核卸载掉。 trunk 似乎是 debian 用来区别主内核和其他内核用以作版本追踪的吧,用起来其实不方便,比如如果要安装linux-headers-(uname -r) 包的时候,就找不到对应的包,麻烦。

2、将当前用户添加到 sudo 用户组里面,就可以使用 sudo 命令了。应该养成这样的习惯,以前都是使用 root 用户登录终端进行操作,那个习惯很不好,改掉,呵呵。

3、使用新立得把 firmware-iwlwifi 装上,就可以使用无线网卡了。

4、使用 debian 作 HOST 机,virtualbox 虚拟安装 XP 必须要解决的问题,一个是 USB 设备的支持,另外一个是网络桥接,在局域网内共享文件。为了解决这两个问题,花费了不少时间,作一下记录:

4.1 USB 设备支持问题。

之前在官网上下载的 virtualbox3.2.0_beta3 二进制安装包文件安装的 virtualbox,在我一个2G内存的本本上测试的时候,当时安装的是 x86 的 debian,使用起来挺方便,只要把当前用户加入 vboxusers 就可以了,USB设备就可以在虚拟机里面正常使用了。结果当我在另外一个4G内存的本本上安装 x64 版本时,却不能使用 USB 设备了。 用网上说的最多的 Ubuntu 的解决办法(如下)进行修改,无效:

(1) 增加usbfs用户组,groupadd usbfs (2) 将当前用户 添加 到 usbfs 和 vboxusers 组里,adduser user usbfs (3) 查看 usbfs 的 ID,cat /etc/gorup,usbfs:x:1002:standme,这里的1002就是用户组的ID (4) 编辑/etc/fstab,增加: none /proc/bus/usb usbfs devgid=1002,devmode=755 0 0 (5) 为/proc/bus/usb放开所有权限,也就是所有人都能访问。 chmod 777 /proc/bus/usb (6) 然后为/proc/bus/usb设置所有者为当前用户,我的当前用户是standme。 chown standme /proc/bus/usb

找了很多办法,都无法解决 USB 的问题,但root用户启动 VirtualBox 可以正常分配使用 USB 设备,所以一直怀疑是权限的问题,但不知道如何解决。在分析问题的时候学到了不少东西,比如 udev,呵呵,感谢 卧底小魁@DRL 朋友给予的帮助。

听了 lizhiwei 的建议,我从官网下载了deb安装包进行安装。

在安装deb包的时候,首先还是要安装 linux-headers-2.6.32-3-amd64 的依赖包,然后是 libqt4-network,libqt4-gui,安装好这些依赖包之后就可以安装了,但是安装的时候出现了一个错误提示,提示,vboxusers 用户组已存在,退出了,退出的时候,提示说 vboxusers 的 gid 号是1002,不是系统用户组,这时我才找到之前 USB 无论如何都无法使用的原因,使用 virtualbox 二进制安装文件安装时候生成的 vboxusers 用户组不是系统用户组,所以没有读取 USB 设备的权限,不知道有没有朋友知道如何将普通的用户组调整为系统用户组呢。

我就删除了原来系统添加的 vboxusers 用户组,然后重新安装 deb 安装包,安装程序添加了 vboxusers 用户组,gid 是 120,是系统用户组,然后就不需要系统麻烦的操作了,直接将 当前用户 添加到 vboxusers 用户组里,就可以分配使用 USB 设备了。

4.2 虚拟机 XP 网络桥接问题

然后是网络连接的问题,我打算将虚拟机 XP 系统使用桥接模式在局域网内共享文件,访问 HOST 机,但设置了网络连接是桥接模式之后,虚拟机 XP 的网络无法使用,网卡正常,但无法获得IP地址,只能使用169开头的私有IP地址,找了不少资料,都不得解,然后 lizhiwei 说可能是 vboxnetadp 模块没有加载,但使用 lsmod 查看一下发现,vboxdrv 已经加载了,而 vboxnetadp 和 vboxnetflt 应该是作为子模块(不知道成为子模块对不对)也已经加载了的,重新启动 vbox 和虚拟机仍然不行。然后 lizhiwei 说让我禁用 HOST 机的 wlan0 连接,可能 HOST 机的 default ip router 是 wlan0,而无线网卡是不支持桥接的,这下总算找到了原因,我把网线接上,eth0 可用,这样,虚拟机 XP 的桥接网卡正常使用了,哈哈。

linux 真的是个好玩的东西,能发现很多未尝见到的问题,一个问题也有多种可能性,linux 下任何问题都或许有多种解决办法。