ada*_*dev 32 permissions virtualbox
我创建了一个 virtualbox 原始磁盘,指向一个正常运行的引导 USB 驱动器,上面有一个小型 linux 发行版。
sudo ./VBoxManage internalcommands createrawvmdk -filename ~/VirtualBox\ VMs/MyTinyLinux/rawdiskonusb.vmdk -rawdisk /dev/disk2 -partitions 2
Run Code Online (Sandbox Code Playgroud)
当我尝试将其添加到 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)
Run Code Online (Sandbox Code Playgroud)
我看到原始磁盘 vmdk 文件归 root 所有。我把它告诉了我自己的用户。
仍然得到同样的错误。我怀疑如果我以 root 身份运行 virtualbox 会起作用,但我真的不想这样做。有没有办法让这项工作?
ASt*_*ten 26
用户应该在一个disk
组中访问原始分区(正如 Gilles 在他的回答中最后一次引用提到的那样)。
sudo usermod -a -G disk $USER
Run Code Online (Sandbox Code Playgroud)
Pas*_*cal 26
海报在主机上使用了 linux。如果您来到这里并使用Windows作为主机(像我一样),则可以轻松解决此错误。如果您不使用管理员权限启动 VirtualBox, Windows 将不允许访问原始磁盘。
kap*_*amy 19
从 2020 年开始这里:
Gil*_*il' 12
检查所有相关文件的权限,包括目录:~/VirtualBox VMs
、~/VirtualBox VMs/MyTinyLinux
、~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk
、/dev/disk2
。目录需要您的用户可读和可遍历 ( chmod +rx
),图像文件和原始磁盘需要可读和可写 ( chmod +rw
)。
您需要允许您的用户访问磁盘;由于/dev
在每次启动时自动填充,因此您需要添加一个 udev 来执行此操作。请参阅授予特定用户对设备的权限而不授予其他用户访问权限
小智 6
由于没有公认的答案,我暂时将其作为答案发布。除了确保您处于正确的组中之外,正如其他人在上面发布的那样:
sudo usermod -a -G disk $USER
sudo usermod -a -G vboxusers $USER
Run Code Online (Sandbox Code Playgroud)
如果您仍然收到VERR_ACCESS_DENIED
错误,则需要按照@Cybex 的评论注销并重新登录以使上述组添加生效。
根据发行版的不同,您可能需要将您的用户名添加到 VirtualBox 组中。
usermod -a -G vboxusers myusername
Run Code Online (Sandbox Code Playgroud)
此外,根据askubunt上的类似问答,您的 ISO 可能已损坏。就您而言,我猜这意味着到原始磁盘的转换失败。尝试搜索如何正确执行该过程并重复该过程,以防转换在第一个过程中以某种方式出现问题。
如果这仍然不是解决方案,请按照VirtualBox 手册中的建议并添加-relative
选项:
创建映像需要对给定设备进行读/写访问。当使用虚拟机中的映像时,稍后还需要读/写访问权限。如果这不可行,有一个用于原始分区访问的特殊变体(当前仅在 Linux 主机上可用),可以避免必须授予当前用户对整个磁盘的访问权限。要设置这样的图像,请使用
VBoxManage 内部命令 createrawvmdk -文件名 /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5 -relative
当从虚拟机使用时,映像将不会引用整个磁盘,而只会引用各个分区(在示例中为 /dev/sda1 和 /dev/sda5)。因此,仅需要对受影响的分区进行读/写访问,而不需要对整个磁盘进行读/写访问。然而,在创建过程中,需要对整个磁盘进行只读访问才能获取分区信息。