mirror of
https://github.com/winapps-org/winapps.git
synced 2025-06-02 13:17:19 +02:00
Added documentation for configuring 'QEMU Guest Agent'
This commit is contained in:
parent
f70dd3f360
commit
07ccb3f958
@ -26,16 +26,27 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
sudo emerge app-emulation/virt-manager # Gentoo Linux
|
||||
```
|
||||
|
||||
3. Install `QEMU Guest Agent`.
|
||||
```bash
|
||||
sudo apt install qemu-guest-agent # Debian/Ubuntu
|
||||
sudo dnf install qemu-guest-agent # Fedora/RHEL
|
||||
sudo pacman -S qemu-guest-agent # Arch Linux
|
||||
sudo emerge app-emulation/qemu-guest-agent # Gentoo Linux
|
||||
sudo systemctl enable qemu-guest-agent
|
||||
sudo systemctl start qemu-guest-agent
|
||||
```
|
||||
|
||||
3. Download a [Windows 10](https://www.microsoft.com/software-download/windows10ISO) or [Windows 11](https://www.microsoft.com/software-download/windows11) installation `.ISO` image.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 'Professional', 'Enterprise' or 'Server' editions of Windows are required to run RDP applications. Windows 'Home' will NOT suffice.
|
||||
|
||||
4. Download [VirtIO drivers](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso) for the Windows virtual machine.
|
||||
4. Download [VirtIO drivers](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso) for the Windows virtual machine.
|
||||
|
||||
> [!NOTE]
|
||||
> VirtIO drivers enhance system performance and minimize overhead by enabling the Windows virtual machine to use specialised network and disk device drivers. These drivers are aware that they are operating inside a virtual machine, and cooperate with the hypervisor. This approach eliminates the need for the hypervisor to emulate physical hardware devices, which is a computationally expensive process. This setup allows guests to achieve high-performance network and disk operations, leveraging the benefits of paravirtualisation.
|
||||
> You can read more about `VirtIO` [here](https://wiki.libvirt.org/Virtio.html).
|
||||
> The above link contains the latest release of the `VirtIO` drivers for Windows, compiled and signed by Red Hat. Older versions of the `VirtIO` drivers can be downloaded [here](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D).
|
||||
> You can read more about `VirtIO` [here](https://wiki.libvirt.org/Virtio.html) and [here](https://developer.ibm.com/articles/l-virtio/).
|
||||
|
||||
## Creating a Windows VM
|
||||
> [!NOTE]
|
||||
@ -147,31 +158,41 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
> [!NOTE]
|
||||
> Hyper-V enlightenments make Windows (and other Hyper-V guests) think they are running on top of a Hyper-V compatible hypervisor. This enables use of Hyper-V specific features, allowing `KVM` to implement paravirtualised interfaces for improved virtual machine performance.
|
||||
|
||||
13. In the 'Memory' section, set the `Current allocation` to the minimum amount of memory you want the virtual machine to use, with a recommended value of `1024MB`.
|
||||
13. Add the following XML snippet within the `<devices>` section to enable the GNU/Linux host to communicate with Windows using `QEMU Guest Agent`.
|
||||
|
||||
```xml
|
||||
<channel type='unix'>
|
||||
<source mode='bind'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='2'/>
|
||||
</channel>
|
||||
```
|
||||
|
||||
14. In the 'Memory' section, set the `Current allocation` to the minimum amount of memory you want the virtual machine to use, with a recommended value of `1024MB`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/10.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
14. (Optional) Under `Boot Options`, enable `Start virtual machine on host boot up`.
|
||||
15. (Optional) Under `Boot Options`, enable `Start virtual machine on host boot up`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/11.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
15. Navigate to 'SATA Disk 1' and set the `Disk bus` type to `VirtIO`. This allows disk access to be paravirtualised, improving virtual machine performance.
|
||||
16. Navigate to 'SATA Disk 1' and set the `Disk bus` type to `VirtIO`. This allows disk access to be paravirtualised, improving virtual machine performance.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/12.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
16. Navigate to 'NIC' and set the `Device model` type to `virtio` to enable paravirtualised networking.
|
||||
17. Navigate to 'NIC' and set the `Device model` type to `virtio` to enable paravirtualised networking.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/13.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
17. Click the `Add Hardware` button in the lower left, and choose `Storage`. For `Device type`, select `CDROM device` and choose the VirtIO driver `.ISO` you downloaded earlier. Click `Finish` to add the new CD-ROM device.
|
||||
18. Click the `Add Hardware` button in the lower left, and choose `Storage`. For `Device type`, select `CDROM device` and choose the VirtIO driver `.ISO` you downloaded earlier. Click `Finish` to add the new CD-ROM device.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you skip this step, the Windows installer will fail to recognise and list the virtual hard drive you created earlier.
|
||||
@ -180,7 +201,7 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/14.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
18. Click `Begin Installation` in the top left.
|
||||
19. Click `Begin Installation` in the top left.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/15.png" width="700px"/>
|
||||
@ -367,6 +388,11 @@ Below is an example `.XML` file that describes a Windows 11 virtual machine.
|
||||
<target type="virtio" name="com.redhat.spice.0"/>
|
||||
<address type="virtio-serial" controller="0" bus="0" port="1"/>
|
||||
</channel>
|
||||
<channel type='unix'>
|
||||
<source mode='bind'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='2'/>
|
||||
</channel>
|
||||
<input type="tablet" bus="usb">
|
||||
<address type="usb" bus="0" port="1"/>
|
||||
</input>
|
||||
@ -458,7 +484,7 @@ Following the above, choose to `Continue with limited setup`.
|
||||
</p>
|
||||
|
||||
## Final Configuration Steps
|
||||
Open `File Explorer` and navigate to the drive where the `VirtIO` driver `.ISO` is mounted. Run `virt-win-gt-64.exe` to launch the `VirtIO` driver installer.
|
||||
Open `File Explorer` and navigate to the drive where the `VirtIO` driver `.ISO` is mounted. Run `virtio-win-gt-x64.exe` to launch the `VirtIO` driver installer.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/24.png" width="700px"/>
|
||||
@ -470,7 +496,21 @@ Leave everything as default and click `Next` through the installer. This will in
|
||||
<img src="./libvirt_images/25.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Once you finish the `VirtIO` driver installation, you will need to make some registry changes to enable RDP Applications to run on the system. Start by downloading the [RDPApps.reg](/install/RDPApps.reg) file, right-clicking on the `Raw` button, and clicking on `Save target as`.
|
||||
Next, install the `QEMU Guest Agent` within Windows. This agent allows the GNU/Linux host to request a graceful shutdown of the Windows system. To do this, either run `virtio-win-guest-tools.exe` or `guest-agent\qemu-ga-x86_64.msi`. You can confirm the guest agent was successfully installed by running `Get-Service QEMU-GA` within a PowerShell window. The output should resemble:
|
||||
|
||||
```
|
||||
Status Name DisplayName
|
||||
------ ---- -----------
|
||||
Running QEMU-GA QEMU Guest Agent
|
||||
```
|
||||
|
||||
You can then test whether the host GNU/Linux system can communicate with Windows via `QEMU Guest Agent` by running `virsh qemu-agent-command RDPWindows '{"execute":"guest-info"}'`. The output should resemble:
|
||||
|
||||
```
|
||||
{"return":{"version":"107.0.1","supported_commands":[{"enabled":true,"name":"guest-get-cpustats","success-response":true},{"enabled":true,"name":"guest-get-diskstats","success-response":true},{"enabled":true,"name":"guest-get-devices","success-response":true},{"enabled":true,"name":"guest-get-osinfo","success-response":true},{"enabled":true,"name":"guest-get-timezone","success-response":true},{"enabled":true,"name":"guest-get-users","success-response":true},{"enabled":true,"name":"guest-get-host-name","success-response":true},{"enabled":true,"name":"guest-exec","success-response":true},{"enabled":true,"name":"guest-exec-status","success-response":true},{"enabled":false,"name":"guest-get-memory-block-info","success-response":true},{"enabled":false,"name":"guest-set-memory-blocks","success-response":true},{"enabled":false,"name":"guest-get-memory-blocks","success-response":true},{"enabled":true,"name":"guest-set-user-password","success-response":true},{"enabled":true,"name":"guest-get-fsinfo","success-response":true},{"enabled":true,"name":"guest-get-disks","success-response":true},{"enabled":false,"name":"guest-set-vcpus","success-response":true},{"enabled":true,"name":"guest-get-vcpus","success-response":true},{"enabled":true,"name":"guest-network-get-interfaces","success-response":true},{"enabled":false,"name":"guest-suspend-hybrid","success-response":false},{"enabled":true,"name":"guest-suspend-ram","success-response":false},{"enabled":true,"name":"guest-suspend-disk","success-response":false},{"enabled":true,"name":"guest-fstrim","success-response":true},{"enabled":true,"name":"guest-fsfreeze-thaw","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze-list","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze","success-response":true},{"enabled":true,"name":"guest-fsfreeze-status","success-response":true},{"enabled":true,"name":"guest-file-flush","success-response":true},{"enabled":true,"name":"guest-file-seek","success-response":true},{"enabled":true,"name":"guest-file-write","success-response":true},{"enabled":true,"name":"guest-file-read","success-response":true},{"enabled":true,"name":"guest-file-close","success-response":true},{"enabled":true,"name":"guest-file-open","success-response":true},{"enabled":true,"name":"guest-shutdown","success-response":false},{"enabled":true,"name":"guest-info","success-response":true},{"enabled":true,"name":"guest-set-time","success-response":true},{"enabled":true,"name":"guest-get-time","success-response":true},{"enabled":true,"name":"guest-ping","success-response":true},{"enabled":true,"name":"guest-sync","success-response":true},{"enabled":true,"name":"guest-sync-delimited","success-response":true}]}}
|
||||
```
|
||||
|
||||
Next, you will need to make some registry changes to enable RDP Applications to run on the system. Start by downloading the [RDPApps.reg](/install/RDPApps.reg) file, right-clicking on the `Raw` button, and clicking on `Save target as`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/26.png" width="700px"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user