VirtualBox添加raw disk时出现VERR_ACCESS_DENIED

本来想在virtualbox里U盘启动,用 vboxmanage 创建就可以完成的然而却在启动时发生了错误,这里把错误过程记录下来

过程

插上U盘后 lsblk 后即可找到U盘的设备名称如 /dev/sda,如果直接 vboxmanage internalcommands createrawvmdk -filename usb.vmdk -rawdisk /dev/sda 提示没有权限只需,那么可以root权限执行该命令,的确成功了,OK。

但是当我尝试在virtualbox存储介质中载入虚拟盘时,却发生了一个奇怪的错误:virtualbox没有权限访问usb.vmdk

1
2
3
4
5
6
7
8
9
10
11
12
Permission problem accessing the file for the medium '/home/joxrays/usb.vmdk' (VERR_ACCESS_DENIED).

返回 代码:
VBOX_E_FILE_ERROR (0x80BB0004)
组件:
MediumWrap
界面:
IMedium {ad47ad09-787b-44ab-b343-a082a3f2dfb1}
被召者:
IVirtualBox {d0a0163f-e254-4e5b-a1f2-011cf991c38d}
被召者 RC:
VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

无论我chown还是chmod并没有解决该问题。经过Google后在 stackexchange 找到了问题的解决方法

1
2
sudo usermod -aG disk $USER
或者 sudo gpasswd -a $USER disk

很简单,仅是讲当前用户添加到 disk组,之后注销重新登录就好了。

之后在执行如下命令就看创建一个**.vmdk**虚拟盘文件了。

1
vboxmanage internalcommands createrawvmdk  -filename usb.vmdk -rawdisk /dev/sda

关于disk组,在archlinux wiki上是这样解释: Access to block devices not affected by other groups such as optical, floppy, and storage 。也就是说加入了disk组的用户能够访问那些不受 optical ,floppy 和 storage组控制的块设备。

如果想要把用户从disk组中删除,则

1
sudo gpasswd -d $USER disk

参考


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!