web-dev-qa-db-ja.com

CDROMデバイスをkvm / qemuドメインに接続する方法(コマンドラインツールを使用)

Windowsを実行している仮想マシンをセットアップしましたXP Ubuntuラップトップ上。virt-manager GUIアプリケーションを使用して、ドライブにCDを挿入し、[詳細]→[IDE CDROM 1]に移動します。 Connectボタンをクリックすると、仮想マシンでCDが利用可能になります。

コマンドラインからどうすれば同じことができますか?もちろん、コマンドラインからも切断できるようにしたいと思います。

注:virsh start testbedを使用して、コマンドラインからVMを開始できます(テストベッドはドメイン/ VMの名前です)。

22

仮想マシンの作成時にCDROMを定義しなかった場合は、次のコマンドを実行して、実行中のドメイン(仮想マシン)にもデバイスを接続できます。

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

すでにCDROMを定義していても、それがISOイメージを指している場合、私の経験では、同じコマンドを実行できます。 hdcpartは、testbed仮想マシンにあるブロックデバイスと一致する必要があります。

もう一度ISOイメージを指定する場合は、/dev/sr0をホスト上のファイル名に置き換えます。

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

ドキュメントではvirsh update-deviceの使用を推奨していますが、次のようなXML定義を作成する方が手間がかかります。

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

このようになっている場合は、そのようなものをファイルに保存し(~/cdrom-real.xmlなど)、起動します。

virsh update-device testbed ~/cdrom-real.xml
23
wigy

Virshのqemu-monitor-commandを使用して、ejectコマンドとchangeコマンドをqemuに渡します。

まず、「情報ブロック」を使用して、cdromのqemuのデバイス名を取得します。

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

だから私の場合、私はdrive-ide0-0-に興味があります。ディスクを変更するには、次のようにします。

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 #
4
Keith Twombley

上記の「info block」コマンドに関して、それを呼び出す正しい方法は次のとおりです。

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

すなわち

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

別の方法で通過しないと正しく動作しないBluRayプレーヤーを通過していました。これがこの記事に基づいて私がどのようにしたかです。

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

SCSI#を見つけます:

lsscsi

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

ドメインXMLを編集し、これを追加します。

注:scsi_Host#を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>

Virsh編集でエラーが発生したため、XMLを強制的に受け入れる必要がありました。iを押してから、vmを再起動してテストしました。

0