Como conectar um dispositivo cdrom a um domínio kvm / qemu (usando ferramentas de linha de comando)?

22

Eu configurei uma máquina virtual executando o Windows XP no meu laptop Ubuntu. Usando o virt-manageraplicativo GUI, posso inserir um CD na minha unidade e ir para Detalhes → IDE CDROM 1 e clicar no Connectbotão. Em seguida, o CD fica disponível na minha máquina virtual.

Como posso fazer o mesmo através da linha de comando? Obviamente, eu também gostaria de me desconectar da linha de comando.

Nota: Posso iniciar a VM a partir da linha de comando usando virsh start testbed(testbed sendo o nome do domínio / VM).

ΤΖΩΤΖΙΟΥ
fonte

Respostas:

23

Se você não definiu nenhum CDROM ao criar sua máquina virtual, poderá conectar o dispositivo até um domínio em execução (máquina virtual) executando o seguinte comando:

virsh attach-disk testbed /dev/sr0 hdc --type cdrom

Se você já definiu um CDROM, mas ele apontou para uma imagem ISO, na minha experiência, você ainda pode executar o mesmo comando. A hdcpeça precisa corresponder ao dispositivo de bloco que você possui na testbedmáquina virtual.

Quando você deseja apontar para uma imagem ISO novamente, substitui /dev/sr0o nome do arquivo no host, algo como

virsh attach-disk testbed ~/virtio-win-0.1-22.iso hdc --type cdrom

A documentação sugere o uso virsh update-device, mas é mais trabalhoso criar uma definição XML semelhante a:

<disk type='block' device='cdrom'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/sr0'/>
  <target dev='hdc' bus='ide'/>
  <readonly/>
</disk>

Se você gosta dessa maneira, salve algo assim em um arquivo (por exemplo ~/cdrom-real.xml) e, em seguida, dispare:

virsh update-device testbed ~/cdrom-real.xml
peruca
fonte
Parece que é o que eu quero; Vou verificar o mais rápido possível (não posso no momento). Obrigado em qualquer caso.
ΤΖΩΤΖΙΟΥ
Sim, é isso. Você também sabe como desconectar o dispositivo? Eu tentei virsh detach-disk testbed hdc, mas consegui error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
Os dispositivos IDE não são realmente hotpluggable. detach-disknão funciona para uma máquina virtual parada. Para remover o CD completamente, é necessário usar virsh edit testbedenquanto a máquina está parada e excluir o diskelemento que define o cdrom. Se você não é um viespecialista em editor, execute export EDITOR=nanoantes de executar o comando de edição.
Wigy #
A propósito, se você acha que minha resposta o ajudou, aceite-a como resposta.
Wigy #
Eu aceitarei sua resposta. O problema é que, se o dispositivo estiver conectado à VM do testbed e eu começar o testbed sem um disco inserido, o testbed não será exibido e eu preciso abrir a GUI do gerenciador virtual e desconectar o dispositivo primeiro. Por isso, na minha pergunta, afirmei que também queria desconectar o dispositivo.
ΤΖΩΤΖΙΟΥ
4

Use o comando qemu-monitor-command do virsh para passar os comandos de ejeção e altere para qemu.

Primeiro use o "bloco de informações" para obter o nome do dispositivo qemu para o seu cdrom.

virsh # qemu-monitor-command mirage --hmp --cmd "info block"
drive-virtio-disk0: type=hd removable=0 file=/home/daoist/mirage/mirage.qcow2 ro=0 drv=raw encrypted=0
drive-ide0-0-0: type=cdrom removable=1 locked=0 file=/home/daoist/iso/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso ro=1 drv=raw encrypted=0

Então, no meu caso, estou interessado em drive-ide0-0-0 . Então, para mudar o disco, faça o seguinte:

virsh # qemu-monitor-command mirage --hmp --cmd "eject drive-ide0-0-0"
virsh # qemu-monitor-command mirage --hmp --cmd "change drive-ide0-0-0 /path/to/new.iso"
virsh #
Keith Twombley
fonte
O comando "bloco de informações" resulta em um erro para mim: "erro: erro interno não pode analisar json bloco de informações: erro lexical: caractere inválido no texto json."
cg.
Parece que a sintaxe deve ter mudado de baixo de mim. Juro que funcionou quando escrevi. Experimentei a sintaxe sugerida pela resposta de Joe Huss e ela funciona agora. Eu atualizei minha resposta.
Keith Twombley 01/07/2015
1

Em relação ao comando "bloco de informações" acima, a maneira correta de chamá-lo é assim:

 virsh qemu-monitor-command <domain> --hmp --cmd "info block"

ie

 virsh qemu-monitor-command windows44407 --hmp --cmd "info block"
Joe Huss
fonte
0

Eu estava passando por um reprodutor de BluRay que não funcionava corretamente, a menos que passasse por outro caminho. Aqui está como eu fiz isso com base neste artigo.

https://lime-technology.com/forums/topic/33851-blu-ray-dvd-rom-passthrough/

Encontre o número SCSI:

lsscsi

[root@kvmatrix ~]# lsscsi
[#:0:0:0]    cd/dvd  HL-DT-ST BD-RE  WH14NS40  1.03  /dev/sr0

Edite o XML do domínio e adicione:

Nota: Substitua scsi_host # pelo # encontrado em lssci

<controller type='scsi' index='0' model='virtio-scsi'/>
    <hostdev mode='subsystem' type='scsi'>
      <source>
        <adapter name='scsi_host#'/>
        <address type='scsi' bus='0' target='0' unit='0'/>
      </source>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </hostdev>

Eu tive que forçar o XML a ser aceito, pois o virsh edit deu erros, basta pressionar ie reiniciar o vm para testar.

FreeSoftwareServers
fonte
-6

montagem -t iso9660 / dev / sr0 / media

Você pode usar qualquer dispositivo definido para o seu cdrom no diretório / dev. Também / dev / cdrom é um link para o dispositivo apropriado na maioria dos sistemas Linux. -T é para o tipo de dispositivo que você está montando e iso9660 é o tipo universal para mídia de cdrom.

O ponto de montagem pode ser o que você quiser, obviamente, apenas verifique se ele existe.

Brian
fonte
Hum. É assim que eu posso montar um CD no host. Ok, meu erro. “Como conectar um dispositivo cdrom a um domínio kvm / qemu / VM?” Observe que esta resposta não é totalmente útil, portanto, você deve editá-lo ou excluí-lo.
ΤΖΩΤΖΙΟΥ