`-Nodefaults 'QEmu не работает, как я ожидал - PullRequest
0 голосов
/ 20 октября 2018

Я ожидал, что QEmu -nodefaults предотвратит создание устройств по умолчанию, но я либо использую его неправильно, либо он работает не так, как я ожидал.

Я получаю это сообщение, используя сокращенноеприведенная ниже командная строка с QEmu 3.0.

Сообщение:

    qemu-system-i386: warning: multiple floppy disk controllers 
    with iobase=0x3f0 have been found
    the one being picked for CMOS setup might not reflect your intent

Дополнительное сообщение в терминале виртуальной машины:

    could not read the boot disk

Командная строка:

    qemu-system-i386 \
       -machine type=isapc,usb=no \
       -nodefaults \
       -device isa-vga \
       -blockdev driver=file,node-name=fda-img,filename=fda.img \
       -blockdev driver=raw,node-name=fda,file=fda-img \
       -device isa-fdc,driveA=fda,fdtypeA=144,fdtypeB=none,bootindexA=0

Я попытался удалить -machine type=isapc, но ничего не изменилось.

Это так, хотя в документации сказано:

-nodefaults

Не создавайте устройства по умолчанию.Обычно QEMU устанавливает устройства по умолчанию, такие как последовательный порт, параллельный порт, виртуальная консоль, устройство мониторинга, адаптер VGA, дисковод гибких дисков и CD-ROM и другие.Параметр -nodefaults отключит все эти устройства по умолчанию.

Я попытался добавить параметр --verbose в командную строку, надеясь, что он запросит дамп полной конфигурации, созданной QEmu, нотакой опции, к сожалению, не существует.

Мое наивное чувство - это то, что оно сломано, но я должен также учитывать, что я могу что-то упустить ... (отсюда и этот наивный вопрос).

-Обновление для получения более подробной информации -

Хотя нет способа вывести созданную машину из командной строки, я обнаружил, что в мониторе есть info qtree, который выводит дерево устройств.Ниже указано, что:

    […]
    dev: isa-fdc, id ""
      iobase = 1008 (0x3f0)
      irq = 6 (0x6)
      dma = 2 (0x2)
      driveA = ""
      driveB = ""
      check_media_rate = true
      fdtypeA = "144"
      fdtypeB = "none"
      fallback = "288"
      isa irq 6
      bus: floppy-bus.1
        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"
    […]
    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
    […]

Создает два контроллера гибких дисков, игнорируя -nodefaults.Я все еще что-то упускаю?

Также, к удивлению, для первого контроллера, который я создаю, driveA и driveB - пустые строки, в то время как driveA назначается в командной строке.

1 Ответ

0 голосов
/ 22 октября 2018

Я, наконец, считаю, что документация неясна, и это скорее -machine none, которое не создает никакого устройства.Однако при этом невозможно добавить шину, которая потребовалась бы для подключения какого-либо устройства.Я предполагаю, что в этом конкретном случае isapc не может быть создан без какого-либо устройства, и его нужно использовать как есть, как отправную точку.Затем бэкэнды должны быть присоединены без создания внешних интерфейсов (если формулировка верна).

Вот пример фрагмента командной строки:

[…]
-blockdev driver=file,node-name=fda-img,filename=dos-6-22/Dos622-1.img \
-blockdev driver=raw,node-name=fda,file=fda-img \
-global isa-fdc.driveA=fda \
[…]

Обратите внимание на -global isa-fdc.driveA=fda, которыйважная часть в этом фрагменте;Вот как бэкэнд присоединяется к принудительно созданному веб-интерфейсу.

Обновление:

Устройства, созданные с помощью -machine <model>, являются особым случаем, который не учитывается-nodefaults;это то, что фактическая документация забыла упомянуть.

Обновление 2:

Представлено как ошибка документации, здесь: https://bugs.launchpad.net/qemu/+bug/1799768

...