尝试向虚拟盒中添加原始磁盘时出现VERR_ACCESS_DENIED


20

我创建了一个virtualbox原始磁盘,指向一个正在运行的USB磁盘,上面有一个小型Linux发行版。

sudo ./VBoxManage internalcommands createrawvmdk -filename ~/VirtualBox\ VMs/MyTinyLinux/rawdiskonusb.vmdk -rawdisk /dev/disk2 -partitions 2

当我尝试将其添加到virtualbox VM时,出现以下错误:

Failed to open the disk image file ~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk.

Permission problem accessing the file for the medium '~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk' (VERR_ACCESS_DENIED).

Result Code: VBOX_E_FILE_ERROR (0x80BB0004)
Component: MediumWrap
Interface: IMedium {4afe423b-43e0-e9d0-82e8-ceb307940dda}
Callee: IVirtualBox {0169423f-46b4-cde9-91af-1e9d5b6cd945}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

我看到原始磁盘vmdk文件归root拥有。我把它塞给了我自己的用户。

仍然会出现相同的错误。我怀疑如果我以root身份运行virtualbox会成功,但是我真的不想这样做。反正有做这项工作吗?


VirtualBox需要一堆东西的root访问权限,并且您已经在使用sudo了,因此您最好进行适当的root启动以获取适当的环境和用户属性。
朱莉·佩莱捷

这可能与您用来创建磁盘的“方法”有关。因此,您正在尝试访问USB磁盘,但错误是指先前的图像文件位置。
ILMostro_7 '16

对我来说也是一样。当我尝试以sudo执行时,它不允许x64机器,这是我的情况,然后对我来说没有解决方案...:'(--usind on linux
kokbira

Answers:


13

用户应该在一个disk组中以访问原始分区(就像吉尔斯在答案中最后一个参考文献中提到的那样)。

sudo usermod -a -G disk $USER

6
这对我也适用- 请注意,将自己添加到论坛后,您必须先注销,否则此更改将不会应用。这实际上适用于任何小组修改
Cybex

对我而言,仅使用该命令就足够了
kokbira

这正是我所需要的。非常感谢!
Theodore R. Smith

10

检查权限的所有涉及到的文件,包括目录:~/VirtualBox VMs~/VirtualBox VMs/MyTinyLinux~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk/dev/disk2。用户的目录必须是可读和可遍历的(chmod +rx),映像文件和原始磁盘也必须是可读写的(chmod +rw)。

您需要允许您的用户访问磁盘;由于/dev会在每次启动时自动填充,因此您需要添加udev来执行此操作。请参阅在不授予其他用户访问权限的情况下授予特定用户对设备的权限


8

张贴者在主机上使用linux。如果您来到这里并将Windows用作主机(例如我),那么可以轻松解决此错误。如果您不使用管理员权限启动VirtualBox, Windows将不允许原始磁盘访问。


2
我现在有这个问题,即使以特权提升运行VB时也是如此。
Euri Pinhollow

您是从管理员帐户启动VirtualBox还是通过以管理员身份运行?如果没有,您可以尝试使用最高特权,而一旦获得成功,则尝试使用更少特权。
帕斯卡

谢谢您的回复。我做了很多尝试,结果却变得比我想的还要复杂。我只想指出,没有这个错误的唯一根源。
Euri Pinhollow

@EuriPinhollow解决了这个问题吗?我在Windows上收到相同的错误(甚至以admin身份运行VBox管理器)
CF

3

根据分发,您可能必须将用户名添加到VirtualBox组。

usermod -a -G vboxusers myusername

此外,根据对Askubunt的类似问答,您可能拥有损坏的ISO。在您的情况下,我想这意味着对原始磁盘的转换很糟糕。尝试搜索如何正确执行该过程,然后重复该过程,以防在第一个过程中以某种方式破坏转换。


如果仍然不能解决问题,请遵循《VirtualBox手册》中的建议并添加-relative选项:

创建映像需要对给定设备进行读/写访问。使用虚拟机中的映像时,以后也需要读/写访问。如果这不可行,则有一个原始分区访问的特殊变体(当前仅在Linux主机上可用),避免了必须授予当前用户对整个磁盘的访问权限。要设置此类图像,请使用

VBoxManage内部命令createrawvmdk-文件名/path/to/file.vmdk -rawdisk / dev / sda-​​分区1,5-相对

从虚拟机使用映像时,该映像将不指向整个磁盘,而仅指向各个分区(在示例/ dev / sda1和/ dev / sda5中)。因此,只需要对受影响的分区进行读/写访问,而不需要整个磁盘。但是,在创建过程中,需要对整个磁盘进行只读访问才能获取分区信息。


2

由于没有可接受的答案,因此我暂时将其发布为答案。除了确保您位于正确的组中之外,正如上面其他人所述:

sudo usermod -a -G disk $USER
sudo usermod -a -G vboxusers $USER

如果仍然出现该VERR_ACCESS_DENIED错误,则需要按照@Cybex的评论注销并重新登录,以使上述添加的组生效。


对于我的情况,不需要“ vboxusers”,仅需要“磁盘”(fedora29)。在mint19上,除了使用sudo之外,我无法使用rawdisk运行该VM。
kokbira

0

我有一个类似的问题,但问题是我在finder中时正在运行sudo命令,当时我在自己的主卷中,我将其CD命名为Volume / Users / Owner,其中我的配置文件称为所有者,然后它可以正常工作。


0

问题(对我而言)是仅显示文件名而不显示整个目录路径。...仅需文件名-

VBoxManage内部命令createrawvmdk-文件名rawdiskonusb.vmdk -rawdisk \。\ PhysicalDrive#

工作得很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.