วิธีการเชื่อมต่ออุปกรณ์ cdrom กับโดเมน kvm / qemu (โดยใช้เครื่องมือบรรทัดคำสั่ง)


22

ฉันได้ตั้งค่าเครื่องเสมือนที่ใช้ Windows XP บนแล็ปท็อป Ubuntu ของฉันแล้ว เมื่อใช้virt-managerแอปพลิเคชัน GUI ฉันสามารถใส่แผ่นซีดีลงในไดรฟ์และไปที่รายละเอียด→ IDE CDROM 1 และคลิกที่Connectปุ่ม จากนั้นซีดีจะพร้อมใช้งานในเครื่องเสมือนของฉัน

ฉันจะทำสิ่งเดียวกันผ่านบรรทัดคำสั่งได้อย่างไร เห็นได้ชัดว่าฉันต้องการที่จะสามารถตัดการเชื่อมต่อจากบรรทัดคำสั่งได้เช่นกัน

หมายเหตุ: ฉันสามารถเริ่ม VM จากบรรทัดคำสั่งโดยใช้virsh start testbed(testbed เป็นชื่อของโดเมน / 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ไม่ทำงานสำหรับเครื่องเสมือนที่หยุดทำงาน ในการลบซีดีทั้งหมดคุณจำเป็นต้องใช้virsh edit testbedในขณะที่เครื่องหยุดและลบdiskองค์ประกอบที่กำหนดไปยัง cdrom หากคุณไม่ใช่viผู้เชี่ยวชาญด้านการแก้ไขให้ดำเนินการexport EDITOR=nanoก่อนดำเนินการคำสั่งแก้ไข
wigy

ถ้าคุณรู้สึกว่าคำตอบของฉันช่วยคุณได้โปรดยอมรับมันเป็นคำตอบ
wigy

ฉันจะยอมรับคำตอบของคุณ สิ่งคือถ้าอุปกรณ์เชื่อมต่อกับ testbed VM และฉันเริ่ม testbed โดยไม่ใส่ดิสก์ testbed จะไม่เกิดขึ้นและฉันต้องเปิด GUI ผู้จัดการเสมือนและตัดการเชื่อมต่ออุปกรณ์ก่อน นั่นคือเหตุผลที่ในคำถามของฉันฉันระบุว่าฉันต้องการวิธีการตัดการเชื่อมต่ออุปกรณ์ด้วย
ΤΖΩΤΖΙΟΥ

4

ใช้คำสั่ง qemu-monitor-command ของ virsh เพื่อส่ง eject และเปลี่ยนคำสั่งลงไปที่ qemu

ก่อนอื่นให้ใช้ "บล็อคข้อมูล" เพื่อรับชื่ออุปกรณ์ของ qemu สำหรับ 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

ดังนั้นในกรณีของฉันฉันสนใจในการไดรฟ์ 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 #

คำสั่ง "info block" ส่งผลให้เกิดข้อผิดพลาดสำหรับฉัน: "ข้อผิดพลาด: ข้อผิดพลาดภายในไม่สามารถแยกวิเคราะห์ json info block: ข้อผิดพลาดเกี่ยวกับคำ: char ไม่ถูกต้องในข้อความ json"
cg

ดูเหมือนว่าไวยากรณ์จะต้องเปลี่ยนจากฉัน ฉันสาบานว่ามันจะทำงานเมื่อฉันเขียนมัน ฉันลองใช้ไวยากรณ์ที่แนะนำโดยคำตอบของโจฮัสและทำงานได้ในขณะนี้ ฉันอัพเดตคำตอบแล้ว
Keith Twombley

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 # ด้วย # found ใน 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>

ฉันต้องบังคับ XML ให้เป็นที่ยอมรับเนื่องจากการแก้ไข virsh ให้ข้อผิดพลาดเพียงแค่กด i จากนั้นรีบูต VM เพื่อทดสอบ


-6

mount -t iso9660 / dev / sr0 / สื่อบันทึก

คุณสามารถใช้อุปกรณ์ใดก็ได้ที่ตั้งค่าไว้สำหรับ cdrom ของคุณในไดเรกทอรี / dev ยัง / dev / cdrom เป็นลิงค์ไปยังอุปกรณ์ที่เหมาะสมในระบบ Linux ส่วนใหญ่ -t สำหรับชนิดของอุปกรณ์ที่คุณกำลังติดตั้งและ iso9660 เป็นชนิดสากลสำหรับสื่อบันทึก cdrom

จุดเมานท์สามารถเป็นสิ่งที่คุณต้องการอย่างชัดเจนเพียงให้แน่ใจว่ามันมีอยู่


หนอ นั่นคือวิธีที่ฉันสามารถติดตั้งซีดีในโฮสต์ ตกลงความผิดของฉัน “ วิธีเชื่อมต่ออุปกรณ์ cdrom กับโดเมน kvm / qemu / VM ได้อย่างไร” โปรดทราบว่าคำตอบนี้ไม่เป็นประโยชน์อย่างสมบูรณ์ดังนั้นคุณควรแก้ไขหรือลบออก
ΤΖΩΤΖΙΟΥ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.