【问题标题】:QEmu `eject` complains device is not found while it is thereQEmu `eject` 抱怨设备在那里时找不到
【发布时间】:2018-10-22 12:45:50
【问题描述】:

我需要从 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(只是我想弹出软盘而不是 CD-ROM)。

change 命令同样报错:

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

这是一个错误还是我做错了什么?

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

更新:

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

【问题讨论】:

    标签: qemu


    【解决方案1】:

    我将发布作为答案,但我不确定。我只能说,如果我理解正确的话,这是一个错误。

    答案分为两部分。

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

    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
    

    删除-global isa-fdc.driveA=fda 时会出现更多错误。但是,文档说:

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

    qemu-system-i386 -global ide-hd.physical_block_size=4096 disk-image.img 特别是,您可以使用它来设置由机器型号自动创建的设备的驱动程序属性。要创建非自动创建的设备并为其设置属性,请使用 -device。

    -global driver.prop=value 是 -global driver=driver,property=prop,value=value 的简写。即使驱动程序包含点,速记语法也有效。

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

    更新详情:

    似乎使用-drive而不是-devicedriveA赋值,结果不一样,虽然RedHat文档建议使用-device而不是-drive和QEmu3.0文档说-drive本质上是-device 的快捷方式(“本质上”,没有说明区别)。

    下面,两个案例,除了info blockinfo 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      • 2014-08-24
      • 2016-07-08
      • 2018-04-12
      • 2010-09-12
      • 2018-10-08
      • 2020-06-22
      相关资源
      最近更新 更多