Я создал виртуальную машину с помощью следующей команды в qemu с включенным KVM.
qemu-kvm -m 1024 -enable-kvm -hda /var/lib/libvirt/images/fedora.img
Я хотел бы знать, какие именно устройства эмулируются для этой виртуальной машины, включая хранилище и сеть (я могу видеть сетевой интерфейс, включенный внутри виртуальной машины с помощью ifconfig).
info qtree
Эта потрясающая команда монитора QEMU показывает красивое древовидное представление о том, как размещены все устройства QEMU.
Вы можете получить приглашение монитора QEMU через:
-nographic
?
1, 2, 3 и т. д. в графическом окне QEMU-monitor telnet::45454,server,nowait
а затем подключитесь к нему с помощью telnet 45454
Тогда, например, я могу видеть свое сетевое устройство как:
dev: rtl8139, id ""
mac = "52:54:00:12:34:56"
vlan = <null>
netdev = "net0"
addr = 03.0
romfile = "efi-rtl8139.rom"
rombar = 1 (0x1)
multifunction = false
command_serr_enable = true
x-pcie-lnksta-dllla = true
x-pcie-extcap-init = true
class Ethernet controller, addr 00:03.0, pci id 10ec:8139 (sub 1af4:1100)
bar 0: i/o at 0xc000 [0xc0ff]
bar 1: mem at 0xfeb51000 [0xfeb510ff]
bar 6: mem at 0xffffffffffffffff [0x3fffe]
и мое устройство хранения как:
bus: virtio-bus
type virtio-pci-bus
dev: virtio-blk-device, id ""
drive = "virtio0"
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
rerror = "auto"
werror = "auto"
cyls = 1040 (0x410)
heads = 16 (0x10)
secs = 63 (0x3f)
serial = ""
config-wce = true
scsi = false
request-merging = true
num-queues = 1 (0x1)
queue-size = 128 (0x80)
iothread = ""
indirect_desc = true
event_idx = true
notify_on_empty = true
any_layout = true
iommu_platform = false
и другие устройства PCI как:
dev: edu, id ""
addr = 06.0
romfile = ""
rombar = 1 (0x1)
multifunction = false
command_serr_enable = true
x-pcie-lnksta-dllla = true
x-pcie-extcap-init = true
class Class 00ff, addr 00:06.0, pci id 1234:11e8 (sub 1af4:1100)
bar 0: mem at 0xfea00000 [0xfeafffff]
Протестировано в QEMU v2.12.
Если у вас есть доступ к гостю, почему бы не использовать что-то вроде lspci. Если вы пытаетесь получить это от хоста, вам нужно выяснить, какие значения по умолчанию использует qemu. Это будет зависеть от того, какую версию вы используете.
Я бы посоветовал вам использовать libvirt вместо ручного запуска qemu. Это даст вам лучшие API для гостей и на самом деле предоставит вам эту информацию в разумном виде (вы можете просто использовать virsh dumpxml
сбросить конфигурацию гостя, включая все подключенные аппаратные устройства).