My guest OS is an x86 (.vmdk format) and it seems from QEMU documentation that since my host is an ARM Raspberry Pi 3, I can't take advantage of KVM even after enabling it in the kernel.
Is that correct?
armkvmqemuvirtual machinex86
My guest OS is an x86 (.vmdk format) and it seems from QEMU documentation that since my host is an ARM Raspberry Pi 3, I can't take advantage of KVM even after enabling it in the kernel.
Is that correct?
Temperatures should not be present in virtualized CPUs, and this is expected behaviour.
The CPUs in a VM are virtual, and they may not map exactly one-to-one to real CPUs.
There are also expected differences/trade offs in a virtual environment/VMs, where complete emulations of the host environment are not expected to be found, and often are even not desirable due to performance reasons.
Thus, for instance, the extra effort in some virtualization plataforms to paravirtualize network interface cards and disk controllers instead of emulating the full hardware - the differences in performance often can reach orders of magnitude.
For capturing hardware data, namely temperature, and other monitoring data of the host, I would advise besides monitoring the VMs, also doing direct monitoring to the host, for instance, configuring SNMP services.
I made it work with Debian 10 host, and a Windows 10 guest, in both directions.
install virt-manager install the spice-guest-tools in windows (it has a non-costly license on http://spice-space.org/)
find the details tab for the VM put the video qxl to qxl (other may work but slower) bottom left, click add hardware, add a channel, and put the spicevmc type with the redhat name. This is very important for the clipboard to work.
You must restart virt-manager. It is also important you shut down the OS of the VM.
you can also use the option virt-manager --debug to see logs when you copy paste.
Here can be found more details: https://blogs.nologin.es/rickyepoderi/index.php?/archives/87-Copy-n-Paste-in-KVM.html
thanks to redhat that provided all the drivers
Since my answer was popular, I would like also to share how to share a folder. I don't think it is supported for linux kernel older than 4.19. But it works on 4.19. You need to be careful that you do not share a folder with the whole internet wihtout password. But you need to check this yourself.
Use virt-manager to share files between Linux host and Windows guest?
You set a folder as shared by right clicking on Windows.
linux with Nautilus can connect to the smb://IP_WINDOWS. But it is better to use the shell it is more stable.
enable firmware rules on windows Open Control Panel, click System and Security, and then click Windows Firewall.
In the left pane, click Advanced settings, and in the console tree, click Inbound Rules.
Under Inbound Rules, locate the rules File and Printer Sharing (NB-Session-In) and File and Printer Sharing (SMB-In).
For each rule, right-click the rule, and then click Enable Rule.
find ips using ipconfig and ifconfig
remove password protection for smb https://pureinfotech.com/setup-network-file-sharing-windows-10/
It is important to deactivate authenticate for all networks in the network configuration in windows, accessible from file sharing. then the folder must be created from scratch to make sure it works
See in particular the section "How to share files over the network without needing a password" at the pureinfotech.com link above.
If you make the public network have free access without password, it may be a security risk (do not put your credit card number in the shared folder yet). But it will work. You can expand upon those instructions. I don't think a VM inside linux is easily accessible from the public network, but maybe.
-- And this is how to mount sudo mount -t cifs //192.168.1.123/Users/MrHappy/Desktop/repos /media/vm -o user=externo,password=asd,uid=1000,gid=1000,mfsymlinks
or add this in /etc/fstab //192.168.1.123/Users/MrHappy/Desktop/repos /media/vm cifs user=externo,password=asd,uid=1000,gid=1000,mfsymlinks And then one can mount using sudo mount /media/vm
it is important to replace the gid and uid with the ones of the linux machine, using "id -g user" and "id -u user" the ui adn gid are so taht not only root has access but also the user
the option mfsymlinks enables symlinks to work
before you shut down the host computer, you should run this or the mount point is stuck: sudo umount -a -t cifs -l It is better to do it a few minutes before shutting down the computer.
if you want to make a plug-and play usb microphone (such as audio technica) work in a windows guest, you just need to add a "usb redirection" module in virtmanager, and perhaps set the hardware usb device to usb 3 if the socket is blue for usb 3. lsusb -v can inspect that the host finds the device. Windows device manager should then see the device. Try to unplug and replug. do not add the specific usb name in virt-manager or it crashes. sometimes, you may need in windows to unplug-replug the microphone, and open settings/system/sound to see the microphone appear.
On a working PC, I was using the Intel integrated graphics and not an amd/nvidia card. I had tearing for videos inside the VM. I removed it by activating TearFree in the intel driver. You can check that TearFree is enabled by running "grep -i tear /var/log/Xorg.0.log"
Best Answer
The naive way to run a virtual machine is to interpret each instruction. The VM software decodes each instruction and runs it.
When the instruction set of the virtual machine is the same as the host, an alternative method is to simply execute the instructions. Only a few instructions can't be executed directly because the guest doesn't have full control over the hardware. A sticky point is memory accesses: the guest doesn't have access to the whole memory, so a translation needs to be performed on the addresses. High-end CPUs such as x86 CPUs with the VT-x (Intel) or AMD-V (AMD) extension, or ARM Cortex-A15 and above (including the Pi 2 and the Pi 3), have hardware features to perform this address translation. KVM is a component of the Linux kernel that takes advantage of these instructions to allow a code in a virtual machine to be executed directly by the native processor.
This doesn't help you, because you aren't trying to execute ARM code on an ARM CPU, or x86 on an x86 CPU. You want to execute x86 code on an ARM CPU. For this, software to decode and interpret the instructions is necessary. KVM doesn't help here.