代码之家  ›  专栏  ›  技术社区  ›  Hibou57

QEmu'eject'抱怨设备在那里时找不到

  •  0
  • Hibou57  · 技术社区  · 7 年前

    我需要从QEmu3中弹出一张软盘。0监视器,但命令意外失败,抱怨设备未找到,而它确实在那里。

    设备清单:

    (qemu) info block
    fda: dos-6-22/Dos622-1.img (raw)
        Attached to:      /machine/unattached/device[11]
        Removable device: not locked, tray closed
        Cache mode:       writeback
    
    hda: hda.img (raw)
        Attached to:      /machine/peripheral-anon/device[1]
        Cache mode:       writeback
    

    弹出命令结果:

    (qemu) eject fda
    Device 'fda' not found
    

    尽管文件上说我必须这样做: https://www.linux-kvm.org/page/Change_cdrom (只是我想弹出软盘而不是光盘)。

    这个 change 司令部也有同样的抱怨:

    (qemu) change fda dos-6-22/Dos622-2.img raw
    Device 'fda' not found
    

    这是虫子还是我做错了什么?

    我尝试使用不同的节点名,结果总是一样的。

    更新:

    我很确定没有正确的答案,这是一个错误,我刚刚提交: https://bugs.launchpad.net/qemu/+bug/1799766 .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Hibou57    7 年前

    我发帖回答,但我不能完全确定。我可以说,如果我理解正确,这是一个错误。

    答案分为两部分。

    第一部分是一个简单的失败调用:

    qemu-system-i386 \
       -monitor stdio \
       -machine type=isapc,vmport=off \
       -blockdev driver=file,node-name=fda-img,filename=fda.img \
       -blockdev driver=raw,node-name=fda,file=fda-img \
       -global isa-fdc.driveA=fda
    
    (qemu) info block
    ide1-cd0: [not inserted]
        Attached to:      /machine/unattached/device[19]
        Removable device: not locked, tray closed
    
    sd0: [not inserted]
        Removable device: not locked, tray closed
    
    fda: fda.img (raw)
        Attached to:      /machine/unattached/device[13]
        Removable device: not locked, tray closed
        Cache mode:       writeback
    (qemu) eject fda
    Device 'fda' not found
    

    第二部分,没有最后一个论点也是一样的 -global isa-fdc.driveA=fda

    qemu-system-i386 \
       -monitor stdio \
       -machine type=isapc,vmport=off \
       -blockdev driver=file,node-name=fda-img,filename=fda.img \
       -blockdev driver=raw,node-name=fda,file=fda-img
    
    (qemu) info block
    ide1-cd0: [not inserted]
        Attached to:      /machine/unattached/device[19]
        Removable device: not locked, tray closed
    
    floppy0: [not inserted]
        Attached to:      /machine/unattached/device[13]
        Removable device: not locked, tray closed
    
    sd0: [not inserted]
        Removable device: not locked, tray closed
    (qemu) eject floppy0
    

    -全球isa fdc。Driva=fda 被移除。然而,文件显示:

    -全局驱动程序=驱动程序,属性=属性,值=值 将drivers property prop的默认值设置为value,例如:

    qemu-system-i386-全球ide hd。物理块大小=4096磁盘映像。img 尤其是,你可以 使用此选项可设置由机器型号自动创建的设备的驱动程序属性 。要创建一个非自动创建的设备并设置其属性,请使用-device。

    -全球驱动力。prop=value是-global driver=driver,property=prop,value=value的缩写。即使驱动程序中包含一个点,也可以使用longhand语法。

    我在引用中强调的是,我没有滥用 -global 这很可能是一个错误。

    更新以了解更多详细信息:

    它似乎在使用 -drive 而不是 -device driveA 虽然RedHat文档建议使用 -装置 而不是 -开车 以及QEmu3。0文件显示 -开车 基本上是一条捷径 -装置 (本质上,没有说明区别)。

    下面是两个案例,除了 info block 摘自 info qtree .

    有了这个, eject floppy0 作品:

    qemu-system-i386 \
       -monitor stdio \
       -machine type=isapc,vmport=off \
       -drive format=raw,if=floppy,media=disk,file=fda.img \
       -device isa-vga,vgamem_mb=1 \
       -serial msmouse
    
    […]
    
    floppy0 (#block156): fda.img (raw)
        Attached to:      /machine/unattached/device[12]
        Removable device: not locked, tray closed
        Cache mode:       writeback
    
    […]
    
      dev: isa-fdc, id ""
        iobase = 1008 (0x3f0)
        irq = 6 (0x6)
        dma = 2 (0x2)
        driveA = ""
        driveB = ""
        check_media_rate = true
        fdtypeA = "auto"
        fdtypeB = "auto"
        fallback = "288"
        isa irq 6
        bus: floppy-bus.0
          type floppy-bus
          dev: floppy, id ""
            unit = 0 (0x0)
            drive = "floppy0"
            logical_block_size = 512 (0x200)
            physical_block_size = 512 (0x200)
            min_io_size = 0 (0x0)
            opt_io_size = 0 (0x0)
            discard_granularity = 4294967295 (0xffffffff)
            write-cache = "auto"
            share-rw = false
            drive-type = "144"
    

    有了这个, eject fda 不起作用:

    qemu-system-i386 \
       -monitor stdio \
       -machine type=isapc,vmport=off \
       -blockdev driver=file,node-name=fda-img,filename=fda.img \
       -blockdev driver=raw,node-name=fda,file=fda-img \
       -global isa-fdc.driveA=fda \
       -device isa-vga,vgamem_mb=1 \
       -serial msmouse
    
    […]
    
    fda: fda.img (raw)
        Attached to:      /machine/unattached/device[12]
        Removable device: not locked, tray closed
        Cache mode:       writeback
    
    […]
    
      dev: isa-fdc, id ""
        iobase = 1008 (0x3f0)
        irq = 6 (0x6)
        dma = 2 (0x2)
        driveA = ""
        driveB = ""
        check_media_rate = true
        fdtypeA = "auto"
        fdtypeB = "auto"
        fallback = "288"
        isa irq 6
        bus: floppy-bus.0
          type floppy-bus
          dev: floppy, id ""
            unit = 0 (0x0)
            drive = "fda"
            logical_block_size = 512 (0x200)
            physical_block_size = 512 (0x200)
            min_io_size = 0 (0x0)
            opt_io_size = 0 (0x0)
            discard_granularity = 4294967295 (0xffffffff)
            write-cache = "auto"
            share-rw = false
            drive-type = "144"