VBoxManage: Erro: não pode ser usado como o dispositivo solicitado

2

Eu usei a solução de este tópico mas sempre eu pego

VirtualBox error: The medium 'lvol.vmdk' can't be used as the requested device type (0x80004005)

Eu tentei todos os controladores SATA, SCSI, IDE e SAS ainda não funcionando.

Host SO: Ubuntu 12.04.1 amd64 VirtualBox 4.1

lvol.vmdk foi criado com

vboxmanage internalcommands createrawvmdk -filename /VDK/lvlol.vmdk -rawdisk /dev/vg/lv

o disco bruto tem:

1 primary ext3 156MB
2 primary swap 2147MB
3 primary ext3 4137MB
    
por rkmax 31.10.2012 / 19:49

1 resposta

1

Se você estiver executando um sistema comparável ao Ubuntu 12.10, usando o udev, você deve instruir o udev a atribuir permissões adequadas ao volume lógico que você deseja atribuir ao Virtualbox.

Para verificar as permissões atuais no volume lógico:

$ ls -lL /dev/mapper/vg_usbraid-vm_webserver
brw-rw---- 1 root disk      252,   8 Oct 26 09:26 vg-lv
id
uid=1000(username) gid=1000(groupid) groups=1000(groupid),4(adm),20(dialout),24(cdrom),46(plugdev),115(lpadmin),117(admin),122(sambashare)

E verifique se o ID do grupo do dispositivo está listado na lista de grupos do comando id .

O problema no exemplo acima é que nem 'root' nem 'disk' estão na lista que id cospe. Embora seja fácil estender a lista de grupos para um usuário, isso não é exatamente o que você deseja, pois adicionar root ou disk à sua conta de usuário é um grande risco de segurança. Você poderia, como usuário normal, gravar em qualquer disco em um nível muito baixo. Uma solução melhor é explicada abaixo.

Com as informações limitadas disponíveis no momento em que escrevo, não posso entrar em muitos detalhes, mas foi o que fiz para realizar uma VM Vbox em execução a partir de um Volume lógico com meu próprio nome de usuário:

Crie o seguinte arquivo: /etc/udev/rules.d/65-vmdmsetup.rules com conteúdo:

SUBSYSTEM!="block",                             GOTO="vm_device_mapper_end"
KERNEL!="dm-*",                                 GOTO="vm_device_mapper_end"
ACTION!="add|change",                           GOTO="vm_device_mapper_end"

# Obtain device status
IMPORT{program}="/sbin/dmsetup export -j%M -m%m"
ENV{DM_NAME}!="?*",                             GOTO="vm_device_mapper_end"

ENV{DM_NAME}=="vg_usbraid-vm_webserver",        GROUP="groupid"                                                

LABEL="vm_device_mapper_end"

Onde:

  • vg_usbraid é o nome do grupo de volumes
  • vm_webserver é o nome do volume lógico
  • groupid é o id do grupo que vem com seu nome de usuário. Verifique por 'gid =' na saída de id

É claro que você precisa recarregar o udev, mas erros de digitação nas regras do udev podem travar seu sistema. Portanto, certifique-se de ter fechado o máximo de aplicativos possível e, talvez, apenas execute um sync para liberar o máximo possível de dados para o disco. Considere aumentar o nível de registro para que, caso não funcione, pelo menos você tenha alguma pista sobre o que deu errado.

$ udevadm control --log-priority=info
$ sudo udevadm control --reload

No registro do Ubuntu é redirecionado para /var/log/syslog .

Somente quando o udev é configurado, você deve criar o volume lógico, caso contrário, o udev não verá os eventos. Se o seu LV já existe, execute um:

$ sudo udevadm trigger --subsystem-match=block

Em seguida, verifique se as permissões foram definidas corretamente usando:

$ ls -lL vg_usbraid-vm_webserver
brw-rw---- 1 root groupid  252,   8 Oct 26 09:26 vg_usbraid-vm_webserver
                  ^^^^^^^

E retorne a alavanca de registro para a configuração padrão:

$ sudo udevadm control --log-priority=err
    
por 31.10.2012 / 21:41