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


22

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

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

注:virsh start testbed(testbedはドメイン/ VMの名前です)を使用して、コマンドラインからVMを起動できます。

回答:


23

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

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

既にCDROMを定義していて、ISOイメージを指している場合、私の経験では、同じコマンドを実行できます。hdc一部はあなたが持っているブロックデバイス一致する必要がある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 detach-disk testbed hdc、得ましたerror: unsupported configuration: This type of device cannot be hot unplugged
ΤΖΩΤΖΙΟΥ

IDEデバイスは実際にはホットプラグ対応ではありません。detach-disk停止した仮想マシンでは機能しません。CDを完全にvirsh edit testbed削除するには、マシンが停止している間に使用diskし、cdromを定義している要素を削除する必要があります。viエディターのエキスパートでない場合はexport EDITOR=nano、編集コマンドを実行する前に実行してください。
ウィギー

ところで、私の答えがあなたを助けたと感じたら、それを答えとして受け入れてください。
ウィギー

あなたの答えを受け入れます。問題は、デバイスがテストベッドVMに接続されていて、ディスクを挿入せずにテストベッドを起動した場合、テストベッドは起動せず、仮想マネージャーGUIを開いてデバイスを最初に切断する必要があるということです。それが私の質問で、私もデバイスを切断する方法が欲しいと言った理由です。
ΤΖΩΤΖΙΟΥ

4

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-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 #

「情報ブロック」コマンドを実行すると、「エラー:内部エラーがJSONを解析できません。情報ブロック:字句エラー:JSONテキスト内の文字が無効です。」というエラーが表示されます。
cg。

私の下から構文が変わったに違いないようです。私はそれを書いたときにそれが働いたことを誓います。Joe Hussの答えが示唆する構文を試してみましたが、現在は機能しています。回答を更新しました。
キーストゥーンブリー

1

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

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

すなわち

 virsh qemu-monitor-command windows44407 --hmp --cmd "info block"

0

別の方法で渡さない限り正しく動作しない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 editがエラーを出したため、XMLを強制的に受け入れなければなりませんでした。iを押してから、vmを再起動してテストします。


-6

マウント-t iso9660 / dev / sr0 / media

/ devディレクトリのcdromに設定されているデバイスを使用できます。また、/ dev / cdromは、ほとんどのLinuxシステムの適切なデバイスへのリンクです。-tはマウントするデバイスのタイプを表し、iso9660はcdromメディアのユニバーサルタイプです。

マウントポイントは、明らかに必要なものであれば何でもかまいませんが、存在することを確認してください。


あの これが、ホストにCDをマウントする方法です。わかりました、私の間違い。「cdromデバイスをkvm / qemuドメイン/ VMに接続する方法」この回答はまったく役に立たないため、編集するか削除する必要があることに注意してください。
ΤΖΩΤΖΙΟΥ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.