标签: libvirt

Libvirt qemu 更改硬件标识符?

我遇到了一个奇怪的问题,我无法弄清楚。我有一台Windows 7虚拟机,原本是物理机,不久前降级为VM。我曾经用它启动

qemu-system-x86_64 --enable-kvm -vga std -m 4G -smp cores=4 /path/to/image 
Run Code Online (Sandbox Code Playgroud)

它确实改变了我的硬件信息,足以触发任何 Windows 激活。我最近开始使用 libvirt 和 virt-manager。一切都很顺利,直到我开始导入这台 Windows 机器。当我最终启动它时,它触发了 Windows 激活的废话。

我截取了报告的硬件规格 (msinfo32) 的屏幕截图,关闭,然后使用没有问题的命令重新启动,并比较了报告的硬件。一切看起来都一样。所以我开始研究 WMIC,看看是否可以获得更详细的信息。我唯一注意到的是两次启动时 cpu ProcessorID 字段是不同的。我尝试使用 来对我的配置进行各种调整(主要是 cpu 参数(match='exact'、mode='host-model'、mode='host-passthrough' 等))virsh edit machinename,但无济于事。

使用 ps,我可以看到 libvirt 正在运行以下命令(为了便于阅读,分成多行):

qemu-system-x86_64 -enable-kvm -name win7 -S \
-machine pc-i440fx-trusty,accel=kvm,usb=off -m 4096 \ 
-realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 \
-uuid 71ca9116-a4a1-b799-dab5-01a483bce024 \
-no-user-config -nodefaults \
-chardev socket,id=charmonitor,path=/var /lib/libvirt/qemu/win7.monitor,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc -no-shutdown -boot strict=on \
-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
-drive file=/media/paul/VirtualMachines/win7.vmdk,if=none,id=drive-ide0-0-0,format=vmdk …
Run Code Online (Sandbox Code Playgroud)

virtual-machine virt-manager libvirt

6
推荐指数
0
解决办法
1万
查看次数

Meaning of "target" in virsh XML VM definitions

I recently found that the target=hda tag in virsh was actually not translating into guest OS (guest OS's use /dev/sdX as the disk device names, in general, it seems).

virt-install and /dev/hda vs. /dev/sda

I am thus now wondering, what is the meaning of the "target dev" declarations which comprise my virt-install / virsth dumped XML files?

<disk type='file' device='disk'>
    <driver name='qemu' type='raw' cache='none'/>
    <source file='/VirtualMachines/bthadoop-sda.raw'/>
    <target dev='hda' bus='ide'/>
    <alias name='ide0-0-0'/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' …
Run Code Online (Sandbox Code Playgroud)

devices libvirt

5
推荐指数
1
解决办法
4309
查看次数

VGA 直通 - 在所有 AMD 硬件上使用 KVM 和 libvirt 的代码 43

我在 FX-8320 和华擎 970 Extreme3​​ R2.0 主板上设置了一个带有 R9-270 和 ATI Rage(PCI 显卡,不使用 radeon 驱动程序)的系统,目的是运行 Debian Wheezy主机和 Windows 8.1 Pro 作为来宾,R9 传递到来宾系统。我已经按照 Debian Wiki 中的指南来执行此操作(https://wiki.debian.org/VGAPassthrough)并已完成,但是当我使用卡及其音频设备启动来宾时,我得到代码 43在客人和卡不起作用。我还测试过将它传递给 Ubuntu 来宾,但它也不起作用。

显然,获得代码 43 错误是相当普遍的,但这些错误主要是与 Nvidia GPU 相关的,而我见过的唯一一个 AMD 错误仅在该用户离开 AMD CPU 时出现。该指南没有对 Code 43 故障排除的任何解释,大概是因为作者没有得到它。我在 KVM 上运行 VM,并使用 virt-manager 的添加硬件对话框传递卡及其音频设备。已知此软件配置有效,因为这与上述指南的作者使用的设置相同。

似乎对这个问题的支持(可以理解)很少,因为它不常用。

编辑:可能应该注意,我已将主机上的 radeon 驱动程序列入黑名单,而且由于它不在指南中,而且我无法找到有关其工作原理的很好解释,因此我没有使用 PCI 存根驱动程序。

kvm qemu libvirt

5
推荐指数
1
解决办法
3265
查看次数

检索 libvirt 域的串口信息?

我正在尝试检索串行端口信息,又名Source Pathlibvirt 域(使用 qemu/KVM 机器):

Serial Device 1 (Primary Console)
  Device type: pty
  Source path: /dev/pts/2
Run Code Online (Sandbox Code Playgroud)

但是我在这里检查了API 参考,它似乎不支持Source Path.

有没有类似的命令VBoxManage可以直接列出这些信息?


奇怪,我在libvirt群里,可以用 控制(启动、停止等)KVM机器virt-managervirsh还显示virsh #提示。

但是我看不到任何virsh list --all命令,我仍然必须以 root 权限运行它。

qemu libvirt

5
推荐指数
1
解决办法
4833
查看次数

如果我在没有防火墙的情况下运行 Fedora,libvirt dnsmasq 是否会暴露在网络中?

Ubuntu 有一句好话:默认安装时没有开放端口。其他 Linux 操作系统看起来类似,包括 Fedora。配置防火墙策略可能会很麻烦,因此这是一个很好的默认设置。

Ubuntu 特别免除了 DHCP 客户端(必需)和 mDNS。(没有防火墙区域来区分,mDNS 最好保持启用状态。Poettering 投入了一些工作来确保 avahi-daemon 的安全性,我认为正是出于这个原因)。

因此我可以关闭 Fedora firewalld,以允许我使用虚拟机的桥接/路由网络。除了 - 这些 dnsmasq 端口怎么样?他们会暴露在外部网络中吗?

sudo ss -nultp  # List TCP and UDP listening sockets
Run Code Online (Sandbox Code Playgroud)
Netid    State     Recv-Q    Send-Q                           Local Address:Port        Peer Address:Port                                                                                                                 
udp      UNCONN    0         0                                    127.0.0.1:323              0.0.0.0:*        users:(("chronyd",pid=1249,fd=5))                                                                           
udp      UNCONN    0         0                                      0.0.0.0:41662            0.0.0.0:*        users:(("avahi-daemon",pid=1216,fd=14))                                                                     
udp      UNCONN    0         0                                      0.0.0.0:5353             0.0.0.0:*        users:(("avahi-daemon",pid=1216,fd=12))                                                                     
udp      UNCONN    0         0                                192.168.122.1:53               0.0.0.0:*        users:(("dnsmasq",pid=2011,fd=5))                                                                           
udp      UNCONN    0         0                               0.0.0.0%virbr0:67               0.0.0.0:*        users:(("dnsmasq",pid=2011,fd=3))                                                                           
udp      UNCONN    0 …
Run Code Online (Sandbox Code Playgroud)

security fedora firewall dnsmasq libvirt

5
推荐指数
1
解决办法
1276
查看次数

libvirt 支持哪个版本的 VBOX API?

我的 Gentoo 系统上安装了libvirt1.3.5 和virtualbox5.0.20。当我启动libvirtd服务时,我得到了

Libvirt doesn't support VirtualBox API version 5000020
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到libvirt需要哪个 vbox API?

virtualbox libvirt

5
推荐指数
1
解决办法
1941
查看次数

从 qemu 来宾挂载文件夹时写入访问被拒绝

我已经使用 virt-manager 设置了一个 qemu Linux 客户机。我已经成功挂载了一个主机路径。主机上的 libvirt 配置片段:

<filesystem type='mount' accessmode='mapped'>
  <source dir='/home/robert/Documents/sources/oss/linux'/>
  <target dir='/linux-src'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</filesystem>
Run Code Online (Sandbox Code Playgroud)

来宾上的 fstab 行:

/linux-src /mnt/linux-src 9p defaults 0 0
Run Code Online (Sandbox Code Playgroud)

访问和阅读工作正常,但我无法写入该目录

$ cd /mnt/linux-src
$ touch asd
$ touch: cannot touch 'asd': Permission denied
Run Code Online (Sandbox Code Playgroud)

我作为root来宾中的用户运行,文件属于我的用户 ( robert) 在主机上。

我该怎么做才能允许来宾对该文件夹的写访问权限?

kvm qemu libvirt

5
推荐指数
1
解决办法
4364
查看次数

为什么我的网络连接被拒绝?

我有一个在 Fedora 31 主机上运行的 CentOS 8 来宾。来宾连接到桥接网络virbr0,并且具有地址192.168.122.217。我可以通过该地址的 ssh 登录来宾。

如果我在监听端口 80 的来宾上启动服务,从主机到来宾的所有连接都会失败,如下所示:

$ curl 192.168.122.217
curl: (7) Failed to connect to 192.168.122.217 port 80: No route to host
Run Code Online (Sandbox Code Playgroud)

该服务必须0.0.0.0

guest# ss -tln
State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port

LISTEN   0         128                 0.0.0.0:22               0.0.0.0:*
LISTEN   0         5                   0.0.0.0:80               0.0.0.0:*
LISTEN   0         128                    [::]:22                  [::]:*
Run Code Online (Sandbox Code Playgroud)

使用tcpdumpvirbr0在主机上或在eth0来宾上),我看到来宾似乎在回复 ICMP“禁止管理员”消息。

19:09:25.698175 IP 192.168.122.1.33472 > 192.168.122.217.http: Flags [S], seq 959177236, win 64240, options …
Run Code Online (Sandbox Code Playgroud)

linux networking firewall centos libvirt

5
推荐指数
1
解决办法
1万
查看次数

将 libvirt xml 转换为 qemu 命令行

我使用 virt-manager 创建了一个虚拟机,我可以使用 virsh edit 编辑该 xml,但我想问您是否有方法将 libvirt xml 转换为 qemu 命令行。我发现不久前也有人提出了同样的问题:

https://www.reddit.com/r/VFIO/comments/dh9iyo/convert_libvirt_xml_into_qemu_command_line_and/

用户 jkhsjdhjs 说:

要将 libvirt xml 转换为 qemu 命令行,您只需使用 libvirt 启动虚拟机即可。libvirt 将使用大量命令行参数启动 qemu 进程,然后您可以保存这些参数。由于 libvirt 只是启动一个 qemu 进程,因此它们应该执行完全相同的操作。

好吧,但是怎么样?我想了解如何使用 libvirt 启动虚拟机,以便我可以看到 qemu 命令中包含的每个选项。

我尝试过:

virsh dumpxml win10

virsh domxml-to-native qemu-argv win10.xml

error: internal error: invalid PCI passthrough type 'default'
Run Code Online (Sandbox Code Playgroud)

kvm virtual-machine qemu libvirt

5
推荐指数
2
解决办法
1万
查看次数

如何在 SMB/CIFS 网络共享上使用 QEMU/KVM 虚拟机磁盘映像:权限被拒绝

环境

networking kvm ubuntu qemu libvirt

5
推荐指数
1
解决办法
7695
查看次数