[分享]virtualbox键盘无效,USB设备问题,无缝模式问题,声卡独占问题攻略

VirtualBox虚拟机中按F12的启动菜单中是没有从USB启动的,一直都找不到从USB设备启动方法,也有人说VirtualBox不支持USB设备启动,那是我搜中文的结果。把闪盘装上Linux都是在Vmware下测试的,Vmware下是把闪盘当成SCSI硬盘挂载的。我想这点应该VirtualBox也行啊。

我Google一下英文“virtualbox usb boot”(中文我得把“virtualbox”、“u盘”、“usb”、“闪盘”、“优盘”、“随身碟”、“引导”、“启动”、“开机”混搭使用,而还是一大堆无关结果,所以翻译叫法还是统一点好),结果第一条就找到了,虽然没写具体怎么做,至少老外说行,有这么一行
引用:
It is not passible directly but it is possible indirectly. Configure your USB drive as a raw disk in VirtualBox (page 105 of the manual). Then the guest will see your USB drive as a IDE drive and will be able to boot on it.

VirtualBox的确不支持USB设备直接启动,但能把USB设备当成硬盘间接启动,“raw disk”,看起来原理跟Vmware一样,把它当成硬盘挂就行了。至于那个“page 105 of the manual”,我已经升级到VirtualBox 2.0.2,手册是CHM格式没有页码,还好找到了,是在“9.9. Using a raw host hard disk from a guest”这一节,讲解的非常详细。这次又是STFW和RTFM发挥了功效。

步骤如下

  1. Ubuntu软件库里那个VirtualBox OSE版是不能支持USB设备的,我用的是从官方下那个,并按这个帖子搞定了启动虚拟机USB出错那个问题。不过这里是把闪盘当成硬盘用,我想用OSE也应该行,因为支持USB是Ubuntu(当成硬盘)而不是VirtualBox,所以用OSE或许会成功,不过我懒得测试,有谁成功告诉一声。3楼caozhzh测试过,1.5.6是不行的,第3步那个命令没有创建虚拟磁盘功能,7楼的wjjs测试新版的2.0.4就行。

  2. 当前必须属于“vboxusers”组,运行
    代码:
    sudo usermod -G vboxusers -a `whoami`

    然后重新登录(注一)。

  3. 运行下面那个命令为闪盘添加访问权限,之前我老是提示没权限,
    代码:
    sudo chmod o+rw /dev/sdc

    我有2个硬盘,所以闪盘就是“/dev/sdc”,如果不确定的话就用“df”命令查看。因为每次拔出闪盘后,“sdc”就会消失了,插回去,又出现,所以还要重新设置权限,重新运行命令,比较常用的话就添加一个alias

  4. 然后就为闪盘建立一个虚拟硬盘镜像,其中参数“filename”后的路径就是虚拟硬盘镜像的保存位置,我这里用默认的 “~/.VirtualBox/VDI/”,手册里说路径一定要用绝对路径。创建出来vmdk文件只有几百字节而已,不需要担心空间,参数后 “rawdisk”就是你的闪盘设备路径,
    代码:
    VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdc -register

    运行后出现
    代码:
    VirtualBox Command Line Management Interface Version 2.0.2
    (C) 2005-2008 Sun Microsystems, Inc.
    All rights reserved.
    RAW host disk access VMDK file /home/yourname/.VirtualBox/VDI/UsbDisk.vmdk created successfully.

    表示创建成功了。

  5. 然后就启动VirtualBox,在需要测试的虚拟机设置里的“硬盘”一页,换成刚才那个vmdk文件,如果不是建立在“~/.VirtualBox/VDI/”的话要用虚拟介质管理器注册一下。

  6. 最后把硬盘设置成优先启动就搞定啦,成功启动了我闪盘里的Grub4DOS,切换启动项VirtualBox比用Vmware还要简单,不需要在虚拟机里的BIOS切换。

我这里是整个闪盘挂载,其实也可以挂载单个或几个分区,也可以直接挂载真实硬盘上的XP,参考这帖《Boot an existing XP (Physical HD) install with VirtualBox》,也可以为建立的虚拟硬盘镜像自定义MBR,方法看手册有关章节吧。

注一:
原来这步我是这样做的,运行
代码:
sudo usermod -G disk,vboxusers -a `whoami`

然后重新登录生效,考虑到把当前用户添加到“disk”组会危险,因为“/dev/sdc”属于“disk”组,格式化“mkfs”之类命令就不用加“sudo”运行了。所以用第3步的方法代替,临时加上读写权限给“/dev/sdc”,每次运行一次添加权限总比添加到“disk”组好。

最后由 muzuiget 编辑于 2008-10-30 21:23,总共编辑了 6 次

作者: muzuiget   发布时间: 2008-09-21

谢谢你的教程。。。

作者: 想入非非   发布时间: 2008-09-22

感谢楼主发帖。
我在1.5.6_ose里面试了一下,出现下列问题:
VirtualBox Command Line Management Interface Version 1.5.6_OSE
(C) 2005-2008 innotek GmbH
All rights reserved.

Usage: VBoxManage internalcommands <command> [command arguments]

Commands:

loadsyms <vmname>|<uuid> <symfile> [delta] [module] [module address]
This will instruct DBGF to load the given symbolfile
during initialization.

unloadsyms <vmname>|<uuid> <symfile>
Removes <symfile> from the list of symbol files that
should be loaded during DBF initialization.

setvdiuuid <filepath>
Assigns a new UUID to the given VDI file. This way, multiple copies
of VDI containers can be registered.

WARNING: This is a development tool and shall only be used to analyse
problems. It is completely unsupported and will change in
incompatible ways without warning.

Syntax error: Invalid command 'createrawvmdk'
搜索了一下,发现是这个问题:
I had the same problem on debian/lenny.
After searching the net, I found that the problem is, that the createrawvmdk command is not avaliable in the open source edition.

看来ose还是不行。

作者: caozhzh   发布时间: 2008-10-06

caozhzh 写道:
感谢楼主发帖。
我在1.5.6_ose里面试了一下,出现下列问题:
VirtualBox Command Line Management Interface Version 1.5.6_OSE
(C) 2005-2008 innotek GmbH
All rights reserved.

Usage: VBoxManage internalcommands <command> [command arguments]

Commands:

loadsyms <vmname>|<uuid> <symfile> [delta] [module] [module address]
This will instruct DBGF to load the given symbolfile
during initialization.

unloadsyms <vmname>|<uuid> <symfile>
Removes <symfile> from the list of symbol files that
should be loaded during DBF initialization.

setvdiuuid <filepath>
Assigns a new UUID to the given VDI file. This way, multiple copies
of VDI containers can be registered.

WARNING: This is a development tool and shall only be used to analyse
problems. It is completely unsupported and will change in
incompatible ways without warning.

Syntax error: Invalid command 'createrawvmdk'
搜索了一下,发现是这个问题:
I had the same problem on debian/lenny.
After searching the net, I found that the problem is, that the createrawvmdk command is not avaliable in the open source edition.

看来ose还是不行。


代码:
Syntax error: Invalid command 'createrawvmdk'

看来是没有createrawvmdk这个参数,谢谢你的测试。

作者: muzuiget   发布时间: 2008-10-06

不必客气,呵呵

作者: caozhzh   发布时间: 2008-10-09

$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdb1 -register
VirtualBox Command Line Management Interface Version 2.0.4
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Error while creating the raw disk VMDK: VERR_FILE_NOT_FOUND
The raw disk vmdk file was not created


不行耶!!!!!!!!

後來用絕對路徑才可以

作者: uranus0206   发布时间: 2008-10-28

muzuiget 写道:
VirtualBox虚拟机中按F12的启动菜单中是没有从USB启动的,一直都找不到从USB设备启动方法,也有人说VirtualBox不支持USB设备启动,那是我搜中文的结果。把闪盘装上Linux都是在Vmware下测试的,Vmware下是把闪盘当成SCSI硬盘挂载的。我想这点应该VirtualBox也行啊。

我Google一下英文“virtualbox usb boot”(中文我得把“virtualbox”、“u盘”、“usb”、“闪盘”、“优盘”、“随身碟”、“引导”、“启动”、“开机”混搭使用,而还是一大堆无关结果,所以翻译叫法还是统一点好),结果第一条就找到了,虽然没写具体怎么做,至少老外说行,有这么一行
引用:
It is not passible directly but it is possible indirectly. Configure your USB drive as a raw disk in VirtualBox (page 105 of the manual). Then the guest will see your USB drive as a IDE drive and will be able to boot on it.

VirtualBox的确不支持USB设备直接启动,但能把USB设备当成硬盘间接启动,“raw disk”,看起来原理跟Vmware一样,把它当成硬盘挂就行了。至于那个“page 105 of the manual”,我已经升级到VirtualBox 2.0.2,手册是CHM格式没有页码,还好找到了,是在“9.9. Using a raw host hard disk from a guest”这一节,讲解的非常详细。这次又是STFW和RTFM发挥了功效。

步骤如下

  1. Ubuntu软件库里那个VirtualBox OSE版是不能支持USB设备的,我用的是从官方下那个,并按这个帖子搞定了启动虚拟机USB出错那个问题。不过这里是把闪盘当成硬盘用,我想用OSE也应该行,因为支持USB是Ubuntu(当成硬盘)而不是VirtualBox,所以用OSE或许会成功,不过我懒得测试,有谁成功告诉一声。3楼caozhzh测试过,是不行的,第3步那个命令没有创建虚拟磁盘功能

  2. 当前必须属于“vboxusers”组,运行
    代码:
    sudo usermod -G vboxusers -a `whoami`

    然后重新登录(注一)。

  3. 运行下面那个命令为闪盘添加访问权限,之前我老是提示没权限,
    代码:
    sudo chmod o+rw /dev/sdc

    我有2个硬盘,所以闪盘就是“/dev/sdc”,如果不确定的话就用“df”命令查看。因为每次拔出闪盘后,“sdc”就会消失了,插回去,又出现,所以还要重新设置权限,重新运行命令,比较常用的话就添加一个alias

  4. 然后就为闪盘建立一个虚拟硬盘镜像,其中参数“filename”后的路径就是虚拟硬盘镜像的保存位置,我这里用默认的 “~/.VirtualBox/VDI/”,手册里说路径一定要用绝对路径。创建出来vmdk文件只有几百字节而已,不需要担心空间,参数后 “rawdisk”就是你的闪盘设备路径,
    代码:
    VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdc -register

    运行后出现
    代码:
    VirtualBox Command Line Management Interface Version 2.0.2
    (C) 2005-2008 Sun Microsystems, Inc.
    All rights reserved.
    RAW host disk access VMDK file /home/yourname/.VirtualBox/VDI/UsbDisk.vmdk created successfully.

    表示创建成功了。

  5. 然后就启动VirtualBox,在需要测试的虚拟机设置里的“硬盘”一页,换成刚才那个vmdk文件,如果不是建立在“~/.VirtualBox/VDI/”的话要用虚拟介质管理器注册一下。

  6. 最后把硬盘设置成优先启动就搞定啦,成功启动了我闪盘里的Grub4DOS,切换启动项VirtualBox比用Vmware还要简单,不需要在虚拟机里的BIOS切换。

我这里是整个闪盘挂载,其实也可以挂载单个或几个分区,也可以直接挂载真实硬盘上的XP,参考这帖《Boot an existing XP (Physical HD) install with VirtualBox》,也可以为建立的虚拟硬盘镜像自定义MBR,方法看手册有关章节吧。

注一:
原来这步我是这样做的,运行
代码:
sudo usermod -G disk,vboxusers -a `whoami`

然后重新登录生效,考虑到把当前用户添加到“disk”组会危险,因为“/dev/sdc”属于“disk”组,格式化“mkfs”之类命令就不用加“sudo”运行了。所以用第3步的方法代替,临时加上读写权限给“/dev/sdc”,每次运行一次添加权限总比添加到“disk”组好。



谢谢,成功。
用于ub 8.10rc 虚拟机vbox2.04加载wxp识别usb设备

作者: wjjs   发布时间: 2008-10-29

另,用的就是
代码:
Ubuntu软件库里那个VirtualBox OSE版

作者: wjjs   发布时间: 2008-10-29

代码:
feng@feng-laptop:~/桌面$ sudo usermod -G vboxusers -a `whoami`
[sudo] password for feng:
feng@feng-laptop:~/桌面$ sudo chmod o+rw /dev/sdc
feng@feng-laptop:~/桌面$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdc -register
VirtualBox Command Line Management Interface Version 2.0.4_OSE
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

RAW host disk access VMDK file /home/feng/.VirtualBox/VDI/UsbDisk.vmdk created successfully.
feng@feng-laptop:~/桌面$

作者: wjjs   发布时间: 2008-10-29

附件:

Screenshot-feng [正在运行] - VirtualBox OSE.png [ 74.04 KiB | 被浏览 11724 次 ]

作者: wjjs   发布时间: 2008-10-29

wjjs 写道:
代码:
feng@feng-laptop:~/桌面$ sudo usermod -G vboxusers -a `whoami`
[sudo] password for feng:
feng@feng-laptop:~/桌面$ sudo chmod o+rw /dev/sdc
feng@feng-laptop:~/桌面$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdc -register
VirtualBox Command Line Management Interface Version 2.0.4_OSE
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

RAW host disk access VMDK file /home/feng/.VirtualBox/VDI/UsbDisk.vmdk created successfully.
feng@feng-laptop:~/桌面$

1.5.6的OSE不行,2.0.4的OSE却行,Sun倒挺大方的,谢谢你的测试。

作者: muzuiget   发布时间: 2008-10-30

真的把U盘挂个去了,就是不知道工行的U盾是不是也能这样用呢

作者: gjm33   发布时间: 2008-11-09

我原来是sdb的,把U盘拨下后再插上去就成了sdc了,然后就用不了,真是奇怪了

作者: gjm33   发布时间: 2008-11-09

很感谢分享!
楼主辛苦

作者: 20youyou08   发布时间: 2008-11-17

需要这么麻烦吗?我移动硬盘上的ubuntu就是在vbox中直接装上去的啊。在vbox的虚拟电脑的USB设置中挂上移动硬盘,然后挂上ubuntu安装盘的ISO文件到光驱,从此光驱启动安装ubuntu,安装过程中可以直接选择将系统安装到挂上的移动硬盘中啊。记得当时的vbox版本好像是2.0.4吧,另外好像我没为虚拟电脑建虚拟硬盘,现在记得不太清楚了。

作者: 出岫之云   发布时间: 2009-02-03

出岫之云 写道:
需要这么麻烦吗?我移动硬盘上的ubuntu就是在vbox中直接装上去的啊。在vbox的虚拟电脑的USB设置中挂上移动硬盘,然后挂上ubuntu安装盘的ISO文件到光驱,从此光驱启动安装ubuntu,安装过程中可以直接选择将系统安装到挂上的移动硬盘中啊。记得当时的vbox版本好像是2.0.4吧,另外好像我没为虚拟电脑建虚拟硬盘,现在记得不太清楚了。


这是直接从可引导的U盘启动,你是从光盘启动,然后光盘里的Ubuntu识别U盘安装,不同的

作者: muzuiget   发布时间: 2009-02-04

WINdows下的呢???

作者: jarsinh   发布时间: 2009-03-06

jarsinh 写道:
WINdows下的呢???

点这里

作者: muzuiget   发布时间: 2009-03-08

根据你的做法,我能成功通过U盘(当然如果MMC卡+读卡器也算U盘的话)启动,但是遇到了一个问题,就是在引导启动的时候grub可以正常加载运行,但是在选择进入引导的系统(如U盘上的WINPE或LINUX的ISO文件)的时候提示不能找到所需的文件,经测试通过电脑启动引导进入该U盘中的上述两种系统都没有问题.....所以我怀疑应该是权限设置问题,但不知道怎么解决,希望各位能帮忙看看,谢谢
附上截图

为了方便各位分析,再附上一张WINPE.IM_权限截图

随便再说明一下,该文件在U盘上,在通过电脑重启引导过程中能正常加载
附件:

Screenshot-WINPE.IM_ 属性.png [ 49.48 KiB | 被浏览 847 次 ]

作者: ekinh   发布时间: 2009-03-12

在虚拟机启动还是在真机启动?提示找不到文件是不是在grub提示找不到文件?把你的menu.lst贴上来

作者: muzuiget   发布时间: 2009-03-12

Mark

作者: ptpt52   发布时间: 2009-03-12

muzuiget 写道:
在虚拟机启动还是在真机启动?提示找不到文件是不是在grub提示找不到文件?把你的menu.lst贴上来

真机启动没有问题,已经测试过了,所以应该跟menu.lst文件的配置没有太大的关系,用虚拟机启动无法找到相关文件

作者: ekinh   发布时间: 2009-03-13

ekinh 写道:
muzuiget 写道:
在虚拟机启动还是在真机启动?提示找不到文件是不是在grub提示找不到文件?把你的menu.lst贴上来

真机启动没有问题,已经测试过了,所以应该跟menu.lst文件的配置没有太大的关系,用虚拟机启动无法找到相关文件


可能是硬盘顺序不同了,在虚拟机挂了2个硬盘吧,第二个闪盘你要进入命令行运行
代码:
root (hd1,0)

不然grub还是启动你第一个硬盘里的文件

作者: muzuiget   发布时间: 2009-03-14

muzuiget 写道:
ekinh 写道:
muzuiget 写道:
在虚拟机启动还是在真机启动?提示找不到文件是不是在grub提示找不到文件?把你的menu.lst贴上来

真机启动没有问题,已经测试过了,所以应该跟menu.lst文件的配置没有太大的关系,用虚拟机启动无法找到相关文件


可能是硬盘顺序不同了,在虚拟机挂了2个硬盘吧,第二个闪盘你要进入命令行运行
代码:
root (hd1,0)

不然grub还是启动你第一个硬盘里的文件


谢谢大家的帮忙
可问题在于我虚拟机里面只虚拟了一个硬盘,下图可看见虚拟硬盘的设置情况

并且因为我的U盘是采用HDD模式格式化的引导盘,所以无论我计算机有几个硬盘,开机引导时U盘会被默认引导为(hd0,0)这个通过测试在真机引导启动时是这样的,当然虚拟机因为将U盘模拟成硬盘引导启动,所以U盘必须必须设置为第一控制器主盘才能正常引导启动,这是我测试的结果。所以问题应该不是在硬盘设置上面,并且在menu.lst文件里面也没有指定哪个硬盘的文件。如下为我menu.lst文件里面两项相关启动的内容
代码:
title Micro Windows XPE
chainloader /ldrxpe

title install-puppy
kernel /vmlinuz boot=casper iso-scan/filename=/puppy-4.1.2-k2.6.25.16-seamonkey.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.gz
boot
附件:

Screenshot-VirtualBox OSE.png [ 71.89 KiB | 被浏览 599 次 ]

作者: ekinh   发布时间: 2009-03-14

楼主,你好,我按照你的方法做得,却出现这种情况是怎么回事?
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdc -register
VirtualBox Command Line Management Interface Version 2.0.2
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Error opening the raw disk '/dev/sdc': VERR_FILE_NOT_FOUND
The raw disk vmdk file was not created
请问该怎么解决阿?忽忽~多谢哈!

作者: taxue2008   发布时间: 2009-04-17

代码:
-filename ~/.VirtualBox/VDI/UsbDisk.vmdk

给/dev/sdc加了权限吗?对了,新版的Virtualbox把VDI目录名称改为HardDisks了
代码:
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/UsbDisk.vmdk -rawdisk /dev/sdc -register

作者: muzuiget   发布时间: 2009-04-18

多谢楼主分享。我用2.2版本实现成功。

补充两点:
1, U盘格式化时应该选择USB-HDD模式,而不能是USB-zip模式;
2,U盘在Virtualbox里,需要被设置为Master(主设备),而不能是Slave(从设备)。

作者: anriqing   发布时间: 2009-04-20

标记下,正想测试usb的启动系统。

作者: linxyz   发布时间: 2009-05-04

uranus0206 写道:
$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdb1 -register
VirtualBox Command Line Management Interface Version 2.0.4
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Error while creating the raw disk VMDK: VERR_FILE_NOT_FOUND
The raw disk vmdk file was not created


不行耶!!!!!!!!

後來用絕對路徑才可以

我的也出现这问题
我的usb是dev/sdb

作者: linuin   发布时间: 2009-05-05

linuin 写道:
uranus0206 写道:
$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdb1 -register
VirtualBox Command Line Management Interface Version 2.0.4
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Error while creating the raw disk VMDK: VERR_FILE_NOT_FOUND
The raw disk vmdk file was not created


不行耶!!!!!!!!

後來用絕對路徑才可以

我的也出现这问题
我的usb是dev/sdb


找到问题的所在了
就是把以前不能注册的UsbDisk.vmdk文件删掉
再来一边就行了

作者: linuin   发布时间: 2009-05-05

vbox 3.0測試成功...成功啟動my grub usbdisk

一些小狀況是在VB裡不能當機...
如果有當機...

reboot前要再執行一次
代码:
sudo chmod o+rw /dev/sdx

作者: jamesfuh   发布时间: 2009-07-11

vbox很不错的,学习一下

作者: yu123456   发布时间: 2009-11-04

我在VirtualBos OSE里装了Vista 怎么让Vista识别工行的U盾啊

作者: longano   发布时间: 2009-11-07

我把OSE的删了,去网站下闭源的,安装时提示
错误: 与已安装的包 'virtualbox-ose'冲突
怎么办

作者: longano   发布时间: 2009-11-07

longano 写道:
我把OSE的删了,去网站下闭源的,安装时提示
错误: 与已安装的包 'virtualbox-ose'冲突
怎么办


新立德,卸载OSE

作者: icykiss   发布时间: 2009-12-05

注册文件时错误:
附件:

USB.png [ 78.14 KiB | 被浏览 201 次 ]

用的是最新版本的VirtualBox

作者: xxk842633   发布时间: 2009-12-08

学习了。

作者: 李佳盟   发布时间: 2010-03-02

楼主说的是linux下的
我说个windows下的方法,比较简单,在vbox安装目录下有个VBoxManage.exe,运行下列命令
代码:
vboxmanage internalcommands createrawvmdk -filename ..\usb.vmdk -rawdisk \\.\PhysicalDrive1

会产生一个usb.vmdk的文件,虚拟介质管理里添加后,就可以使用U盘了

作者: icejoywoo   发布时间: 2010-04-19

作者: ak87   发布时间: 2010-08-09

mark

作者: smannue   发布时间: 2010-08-10

已收藏

作者: zhxice   发布时间: 2010-08-11