Làm cách nào để kết nối thiết bị cdrom với miền kvm / qemu (sử dụng các công cụ dòng lệnh)?


22

Tôi đã thiết lập một máy ảo chạy Windows XP trên máy tính xách tay Ubuntu của mình. Sử dụng virt-managerứng dụng GUI, tôi có thể chèn CD vào ổ đĩa của mình và đi đến Chi tiết → IDE CDROM 1 và nhấp vào Connectnút. Sau đó, CD sẽ có sẵn trong máy ảo của tôi.

Làm thế nào tôi có thể làm tương tự thông qua dòng lệnh? Rõ ràng, tôi cũng muốn có thể ngắt kết nối khỏi dòng lệnh.

Lưu ý: Tôi có thể khởi động VM từ dòng lệnh bằng cách sử dụng virsh start testbed(testbed là tên miền / VM).

Câu trả lời:


23

Nếu bạn đã xác định không có CDROM khi tạo máy ảo, bạn có thể đính kèm thiết bị ngay cả với miền đang chạy (máy ảo) bằng cách chạy lệnh sau:

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

Nếu bạn đã xác định CDROM, nhưng nó chỉ vào hình ảnh ISO, theo kinh nghiệm của tôi, bạn vẫn có thể chạy cùng một lệnh. Phần hdccần khớp với thiết bị khối bạn có trong testbedmáy ảo.

Khi bạn muốn trỏ đến một hình ảnh ISO một lần nữa, bạn thay thế /dev/sr0vào tên tệp trên máy chủ, đại loại như

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

Tài liệu gợi ý sử dụng virsh update-device, nhưng sẽ tốn nhiều công sức hơn để tạo một định nghĩa XML giống như:

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

Nếu bạn đang theo cách này, hãy lưu một cái gì đó như thế vào một tệp (nói ~/cdrom-real.xml) và sau đó bắn:

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

Đây trông giống như những gì tôi muốn; Tôi sẽ xác minh sớm nhất có thể (không thể vào lúc này). Cảm ơn bạn trong mọi trường hợp.
ΤΖΩΤΖΙΟΥ

Vâng, đây là nó. Bạn cũng biết cách tháo thiết bị? Tôi đã thử virsh detach-disk testbed hdc, nhưng tôi đã nhận error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ

Các thiết bị IDE thực sự không phải là hotpluggable. detach-diskkhông hoạt động cho một máy ảo đã dừng. Để loại bỏ CD hoàn toàn, bạn cần sử dụng virsh edit testbedtrong khi máy bị dừng và xóa diskphần tử xác định thành cdrom. Nếu bạn không phải là vichuyên gia biên tập, hãy thực hiện export EDITOR=nanotrước khi thực hiện lệnh chỉnh sửa.
tóc giả

Nhân tiện, nếu bạn cảm thấy rằng câu trả lời của tôi đã giúp bạn, xin vui lòng chấp nhận nó như một câu trả lời.
tóc giả

Tôi sẽ chấp nhận câu trả lời của bạn. Vấn đề là, nếu thiết bị được kết nối với VM đã được kiểm tra và tôi bắt đầu thử nghiệm mà không cần lắp đĩa, thì thử nghiệm sẽ không xuất hiện và tôi cần mở GUI quản lý ảo và ngắt kết nối thiết bị trước. Đó là lý do tại sao trong câu hỏi của tôi, tôi đã nói rằng tôi cũng muốn có một cách để ngắt kết nối thiết bị.
ΤΖΩΤΖΙΟΥ

4

Sử dụng lệnh qemu-Monitor-virsh của virsh để truyền đẩy ra và thay đổi các lệnh thành qemu.

Trước tiên, sử dụng "khối thông tin" để lấy tên thiết bị của qemu cho cdrom của bạn.

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

Vì vậy, trong trường hợp của tôi, tôi quan tâm đến drive-ide0-0-0 . Vì vậy, để thay đổi đĩa, hãy làm điều này:

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 #

Lệnh "khối thông tin" gây ra lỗi cho tôi: "lỗi: lỗi nội bộ không thể phân tích khối thông tin json: lỗi từ vựng: char không hợp lệ trong văn bản json."
cg.

Có vẻ cú pháp phải thay đổi từ dưới tôi. Tôi thề nó đã làm việc khi tôi viết nó. Tôi đã thử cú pháp được đề xuất bởi câu trả lời của Joe Huss và nó hoạt động ngay bây giờ. Tôi đã cập nhật câu trả lời của mình.
Keith Twombley

1

Về lệnh "khối thông tin" ở trên, cách gọi chính xác như sau:

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

I E

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

0

Tôi đã chuyển qua một trình phát BluRay không hoạt động chính xác trừ khi tôi chuyển qua một cách khác. Đây là cách tôi đã làm nó dựa trên bài viết này.

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

Tìm SCSI #:

lsscsi

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

Chỉnh sửa tên miền XML và thêm cái này:

Lưu ý: Thay thế scsi_host # bằng # được tìm thấy trong 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>

Tôi đã buộc XML phải được chấp nhận vì chỉnh sửa virsh đã báo lỗi, chỉ cần nhấn i và sau đó khởi động lại vm để kiểm tra.


-6

gắn kết -t iso9660 / dev / sr0 / media

Bạn có thể sử dụng bất kỳ thiết bị nào được đặt cho thư mục cdrom trong / dev. Ngoài ra / dev / cdrom là một liên kết đến thiết bị phù hợp trên hầu hết các hệ thống Linux. -T dành cho loại thiết bị bạn đang lắp và iso9660 là loại phổ biến cho phương tiện cdrom.

Điểm gắn kết có thể là bất cứ điều gì bạn muốn rõ ràng, chỉ cần chắc chắn rằng nó tồn tại.


Ừm. Đó là cách tôi có thể gắn CD vào máy chủ. Ok, sai lầm của tôi. Làm thế nào để kết nối thiết bị cdrom với tên miền kvm / qemu / VM? Lưu ý rằng câu trả lời này hoàn toàn không hữu ích, vì vậy bạn nên chỉnh sửa hoặc xóa nó.
ΤΖΩΤΖΙΟΥ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.