Windowsを実行している仮想マシンをセットアップしましたXP Ubuntuラップトップ上。virt-manager
GUIアプリケーションを使用して、ドライブにCDを挿入し、[詳細]→[IDE CDROM 1]に移動します。 Connect
ボタンをクリックすると、仮想マシンでCDが利用可能になります。
コマンドラインからどうすれば同じことができますか?もちろん、コマンドラインからも切断できるようにしたいと思います。
注:virsh start testbed
を使用して、コマンドラインからVMを開始できます(テストベッドはドメイン/ VMの名前です)。
仮想マシンの作成時にCDROMを定義しなかった場合は、次のコマンドを実行して、実行中のドメイン(仮想マシン)にもデバイスを接続できます。
virsh attach-disk testbed /dev/sr0 hdc --type cdrom
すでにCDROMを定義していても、それがISOイメージを指している場合、私の経験では、同じコマンドを実行できます。 hdc
partは、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
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 #
上記の「info block」コマンドに関して、それを呼び出す正しい方法は次のとおりです。
virsh qemu-monitor-command <domain> --hmp --cmd "info block"
すなわち
virsh qemu-monitor-command windows44407 --hmp --cmd "info block"
別の方法で通過しないと正しく動作しない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を再起動してテストしました。