diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-setup/ubuntu-softwareupdates.png b/docs/developer-guide/assets/ubuntu-softwareupdates.png similarity index 100% rename from docs/developer-guide/get-started/deployment/assets/emt-vm-host-setup/ubuntu-softwareupdates.png rename to docs/developer-guide/assets/ubuntu-softwareupdates.png diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-boot-screen.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-boot-screen.png deleted file mode 100644 index ee19bab430..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-boot-screen.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-install.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-install.png deleted file mode 100644 index 54e64b71ba..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-ubuntu/ubuntu-install.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-dell-update-package.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-dell-update-package.png deleted file mode 100644 index 0834aa8eba..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-dell-update-package.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-device-installation-restrictions.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-device-installation-restrictions.png deleted file mode 100644 index 1b2e211830..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-device-installation-restrictions.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters-expanded.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters-expanded.png deleted file mode 100644 index d134df9973..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters-expanded.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters.png deleted file mode 100644 index 4f6e478128..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-display-adapters.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-explorer.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-explorer.png deleted file mode 100644 index cd2235eb03..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-explorer.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-properties.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-properties.png deleted file mode 100644 index 8f5e4d8fb3..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-graphics-properties.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-connect.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-connect.png deleted file mode 100644 index 247c7266c1..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-connect.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch1.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch1.png deleted file mode 100644 index f620e0bbfb..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch1.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch2.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch2.png deleted file mode 100644 index cf5bfdb5d3..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-install-patch2.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-installer.PNG b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-installer.PNG deleted file mode 100644 index 543ffdff46..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-installer.PNG and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-reboot.PNG b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-reboot.PNG deleted file mode 100644 index c483b4df15..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-intel-graphics-reboot.PNG and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-enabled.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-enabled.png deleted file mode 100644 index 570a4fd742..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-enabled.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-show.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-show.png deleted file mode 100644 index 306f0a8729..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation-show.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation.png deleted file mode 100644 index 490e754656..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-prevent-device-installation.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-ready-to-install.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-ready-to-install.png deleted file mode 100644 index 53818905f7..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-ready-to-install.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-image.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-image.png deleted file mode 100644 index 86c99da68a..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-image.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-install-location.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-install-location.png deleted file mode 100644 index 7f0b172f57..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-select-install-location.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-setup-option.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-setup-option.png deleted file mode 100644 index 3868bb0d92..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-setup-option.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-explorer.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-explorer.png deleted file mode 100644 index b1caa91309..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-explorer.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-installer.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-installer.png deleted file mode 100644 index b99158dcfb..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-installer.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-sandbox.png b/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-sandbox.png deleted file mode 100644 index 9aa3b96318..0000000000 Binary files a/docs/developer-guide/get-started/deployment/assets/emt-vm-host-win/win11-zc-sandbox.png and /dev/null differ diff --git a/docs/developer-guide/get-started/deployment/emt-vm-host.md b/docs/developer-guide/get-started/deployment/emt-vm-host.md index e3a1c00951..2ece02c0b9 100644 --- a/docs/developer-guide/get-started/deployment/emt-vm-host.md +++ b/docs/developer-guide/get-started/deployment/emt-vm-host.md @@ -1,87 +1,351 @@ -# Create VMs under Edge Microvisor Toolkit Host +# Create Guest OS VMs for Edge Microvisor Toolkit Host -Edge Microvisor Toolkit supports SR-IOV (Single Root Input/Output Virtualization), which allows it to serve as a host OS for virtualization of other operating systems, running as a guest OS in a virtual machine. +Edge Microvisor Toolkit supports SR-IOV (Single Root Input/Output Virtualization), +which allows it to serve as a host OS for virtualization of other operating systems, +running as a guest OS in a virtual machine. -> **NOTE:** Contact Your Intel representative for more details on required resources. +The guide provides instructions on how to perform automated script-based +deployment of guest Ubuntu 22.04 and Windows 11 Enterprise operating systems, +using virtual machines on [Intel IoT platforms](#supported-intel-iot-platforms) +using [libvirt toolkit](https://libvirt.org/) on +[KVM/QEMU](https://libvirt.org/drvqemu.html) hypervisor/emulator. -## Prerequisites -1. Prepare Ubuntu Host for creating Guest VM images, as well as Guest VM images, according to the guides below: +**Table of contents:** - - [Kernel and Host User Space Setup](./vm-host/emt-vm-host-setup.md) - - [Windows Guest VM](./vm-host/emt-vm-host-win-guest.md) - - [Ubuntu Guest VM](./vm-host/emt-vm-host-ubuntu-guest.md) +- [Requirements](#requirements) + - [Supported Intel IoT Platforms](#supported-intel-iot-platforms) + - [Host operating system](#host-operating-system) + - [Supported guest operating systems](#supported-guest-operating-systems) + - [Device support in guest VMs](#device-support-in-guest-vms) + - [KVM MultiOS repository](#kvm-multios-repository) +- [Set up the Ubuntu host](#set-up-the-ubuntu-host) + - [Configure BIOS settings](#configure-bios-settings) + - [Install Ubuntu 22.04](#install-ubuntu-2204) +- [Create guest OS images](#create-guest-os-images) + - [Create Ubuntu VM image](#create-ubuntu-vm-image) + - [Create Windows 11 Enterprise VM image](#create-windows-11-enterprise-vm-image) -2. Adjust EMT kernel parameters +## Requirements -To enable SR-IOV usage in EMT Host, you need to set the following kernel parameters: +### Supported Intel IoT Platforms -```bash -udmabuf.list_limit=8192 i915.enable_guc=3 i915.max_vfs=7 intel_iommu=on i915.force_probe=* -sudo vim /etc/default/grub -sudo grub2-mkconfig -o /boot/grub2/grub.cfg "$@" -``` +Currently, only RPL-P (Raptor Lake P) platforms are supported. + +### Host operating system + +[Ubuntu 22.04 (Jammy Jellyfish) Intel IOT](https://cdimage.ubuntu.com/releases/jammy/release/inteliot/ubuntu-22.04-desktop-amd64+intel-iot.iso) - +the operating system used as a host where [guest VM images are created](#create-guest-os-images). + +### Supported guest operating systems + +| OS | Details | +| --- | --- | +| Ubuntu 22.04 | 6.12 kernel- [lts-v6.12.76-linux-260309T025316Z](https://github.com/intel/linux-intel-lts/releases/tag/lts-v6.12.76-linux-260309T025316Z) | +| Windows 11 | [IoT Enterprise](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-11-enterprise) | + +### Device support in guest VMs + +| Device | Ubuntu 22.04 | Windows 11 IoT Enterprise | +| --- | --- | --- | +| Storage | Sharing | Sharing | +| iGPU * | SR-IOV | virtio-gpu, SR-IOV | +| Display* | SR-IOV | SR-IOV | +| Audio | emulation | emulation | +| USB inputs (mouse/keyboard) | Passthrough or emulation | Passthrough or emulation | +| LAN | Virtual NAT | Virtual NAT | +| External PCI Ethernet Adapter | Passthrough | Passthrough | +| External USB Ethernet Adapter | Passthrough | Passthrough | +| TSN i225/i226 Ethernet Adapter | Passthrough | Passthrough | +| Wi-fi | Passthrough | Passthrough | +| Bluetooth | Passthrough | Passthrough | +| SATA controller | Passthrough | Passthrough | +| USB Controller | Passthrough | Passthrough | +| Serial Controller | Passthrough** | Passthrough** | +| NPU | Passthrough | Passthrough | +| IPU | Passthrough | Passthrough | +| TPM | Passthrough | SW emulation | + +> **Note:** +> When a device is a passthrough to a guest VM, it can be used by that VM only +> and will not be available to any other VM or host. +> +> \*\* Not Validated in this release. + +### KVM MultiOS repository + +The [kvm-multios](https://github.com/intel/kvm-multios) repository contains +configuration and setup scripts required for preparing kernel-based virtual +machines on Intel IoT platforms. This guide uses the +[`v0.19.0`](https://github.com/intel/kvm-multios/tree/v0.19.0) release tag. +For more details, refer to +[the documentation](https://github.com/intel/kvm-multios/blob/v0.19.0/documentation/README.md). + +## Set up the Ubuntu host + +The Ubuntu host operating system is used to prepare the guest OS images +that will be used in virtual machines on Edge Microvisor Toolkit serving +as hypervisor. + +### Configure BIOS settings + +Make sure the following settings are configured: + +| Name | Menu | Setting | +| --- | --- | --- | +| Intel Virtualization Technology (VMX) | Intel Advanced Menu -> CPU Configuration -> VMX | Enable | +| Intel VT for Directed I/O (VT-d) | Intel Advanced Menu -> System Agent (SA) Configuration -> VT-d | Enable | + +### Install Ubuntu 22.04 + +1. Download [Ubuntu 22.04 (Jammy Jellyfish) Intel IOT ISO](https://cdimage.ubuntu.com/releases/jammy/release/inteliot/ubuntu-22.04-desktop-amd64+intel-iot.iso) + +2. Install the OS: + + ```bash + # Copy the iso file into a USB drive + sudo dd if=./ubuntu-22.04-desktop-amd64+intel-iot.iso of=/dev/sdX bs=4M && sync + + # Check the boot order number X of the USB drive + sudo efibootmgr + + # Select the USB drive as the next boot device + sudo efibootmgr -n X + + # Reboot into the drive to start the installation + sudo reboot + ``` -> **Note:** You can learn more about specific kernel patches related to VM hosting and -> SR-IOV implementation in the relevant [SPEC file](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0/SPECS/kernel/kernel.spec) +> **Note:** If operating behind a corporate firewall, setup proxy settings as required. -## Hosting Guest VMs under EMT +3. In the **Software & Updates** GUI, make sure to download from **Main server**, as shown below: -1. Transfer the prepared Guest VM images to a bootable USB Drive. + ![Software and Updates](../../assets/ubuntu-softwareupdates.png) -2. Convert the qcow2 image to raw image: +4. Update the main APT sources configuration file: ```bash - qemu-img convert -f qcow2 -O raw ubuntu.qcow2 ubuntu22_disk.img - qemu-img convert -f qcow2 -O raw windows.qcow2 win11_disk.img + sudo nano /etc/apt/sources.list.d/intel-rpl.list ``` -3. Copy the images `user-apps/win11vm/disk.img` and `user-apps/ub22vm/disk.img` respectively - before creating the bootable USB drive. During the process of creating a bootable USB drive, - these VM images will be copied to USB drive, for installation during provisioning. + Add the following lines: + + ```bash + deb https://download.01.org/intel-linux-overlay/ubuntu jammy main non-free multimedia kernels + deb-src https://download.01.org/intel-linux-overlay/ubuntu jammy main non-free multimedia kernels + ``` +5. Download the GPG key: -4. Follow the deployment procedure to bring up the system with Application VM, - refer to Get Started Guide of Edge Microvisor ToolKit Standalone Node. + ```bash + sudo wget https://download.01.org/intel-linux-overlay/ubuntu/E6FA98203588250569758E97D176E3162086EE4C.gpg -O /etc/apt/trusted.gpg.d/rpl.gpg + ``` -5. Update the config file according to your specific use case: +6. Set the preferred list for pinning APT packages: - Refer to [EMT Get Started Guide](../../emt-get-started.md). + ```bash + sudo nano /etc/apt/preferences.d/intel-rpl + ``` - Add the following commands to the config-file to launch the automated deployment of applications VMs: + Add the following lines: ```bash - - k wait --for=condition=ready pod --all --timeout=300s - - k create ns user-apps - - cd /opt/user-apps/helm_charts/sidecar && k apply -f - - cd /opt/user-apps/helm_charts/sidecar && k apply -f - - cd /opt/user-apps/helm_charts/ && helm install ub22vm . - - cd /opt/user-apps/helm_charts/ && helm install win11vm . + Package:* + Pin:release o=intel-iot-linux-overlay + Pin-Priority:2000 ``` +4. Upgrade the Ubuntu host software to the latest version: -## Sidecar Configuration + ```bash + # Upgrade Ubuntu software + # Generic host kernel installed from Ubuntu may be incompatible with board + # Therefore after upgrade, continue to install host kernel and firmware before rebooting + sudo apt -y update + sudo apt -y upgrade + ``` +5. Install required APT packages: -1. Identification of USB port details. + ```bash + sudo apt install vim ocl-icd-libopencl1 curl openssh-server net-tools gir1.2-gst-plugins-bad-1.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gst-rtsp-server-1.0 gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-opencv gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-apps gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio gstreamer1.0-qt5 gstreamer1.0-rtsp gstreamer1.0-tools gstreamer1.0-x intel-media-va-driver-non-free libdrm-amdgpu1 libdrm-common libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm-tests libdrm2 libgstrtspserver-1.0-dev libgstrtspserver-1.0-0 libgstreamer-gl1.0-0 libgstreamer-opencv1.0-0 libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-0 libgstreamer-plugins-good1.0-dev libgstreamer1.0-0 libgstreamer1.0-dev libigdgmm-dev libigdgmm12 libmfx-gen1.2 libtpms-dev libtpms0 libva-dev libva-drm2 libva-glx2 libva-wayland2 libva-x11-2 libva2 libwayland-bin libwayland-client0 libwayland-cursor0 libwayland-dev libwayland-doc libwayland-egl-backend-dev libwayland-egl1 libwayland-server0 libxatracker2 linux-firmware mesa-utils libgl1-mesa-dev libglx-mesa0 libgl1-mesa-dri mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers libvpl-dev libvpl-tools libmfx-gen-dev onevpl-tools ovmf ovmf-ia32 va-driver-all vainfo weston xserver-xorg-core libvirt0 libvirt-clients libvirt-daemon libvirt-daemon-config-network libvirt-daemon-config-nwfilter libvirt-daemon-driver-lxc libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-storage-iscsi-direct libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-storage-zfs libvirt-daemon-driver-vbox libvirt-daemon-driver-xen libvirt-daemon-system libvirt-daemon-system-systemd libvirt-dev libvirt-doc libvirt-login-shell libvirt-sanlock libvirt-wireshark libnss-libvirt swtpm swtpm-tools bmap-tools adb autoconf automake libtool cmake g++ gcc git intel-gpu-tools libssl3 libssl-dev make mosquitto mosquitto-clients build-essential apt-transport-https default-jre docker-compose git-lfs gnuplot lbzip2 libglew-dev libglm-dev libsdl2-dev mc openssl pciutils python3-pandas python3-pip python3-seaborn terminator wmctrl wayland-protocols gdbserver ethtool iperf3 msr-tools powertop linuxptp lsscsi tpm2-tools tpm2-abrmd binutils cifs-utils i2c-tools xdotool gnupg lsb-release intel-opencl-icd iproute2 socat + ``` - The following commands helps to identify the USB ports Bus and Port numbers to map these devices in the sidecar configuration. +6. Download and install required Debian packages: ```bash - sudo cat /proc/bus/input/devices - sudo lsusb - sudo lsusb -t + wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.10.8/intel-igc-core-2_2.10.8+18926_amd64.deb + wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.10.8/intel-igc-opencl-2_2.10.8+18926_amd64.deb + wget https://github.com/intel/compute-runtime/releases/download/25.13.33276.16/intel-level-zero-gpu_1.6.33276.16_amd64.deb + wget https://github.com/intel/compute-runtime/releases/download/25.13.33276.16/intel-opencl-icd_25.13.33276.16_amd64.deb + sudo dpkgi -i *.deb ``` -2. Display Port Configuration. +7. Install Linux headers and update the bootloader: + + - Install Linux headers: + + ```bash + sudo apt install linux-headers-6.12-intel linux-image-6.12-intel + ``` + + - Update the bootloader: + + ```bash + sudo sed -i 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"i915.enable_guc=3 i915.max_vfs=7 i915.force_probe=* udmabuf.list_limit=8192 console=tty0 console=ttyS0,115200n8 systemd.unified_cgroup_hierarchy=0 cgroup_enable=memory cgroup_enable=cpuset\"/' /etc/default/grub + sudo sed -i 's/GRUB_DEFAULT=.*/GRUB_DEFAULT=\"Advanced options for Ubuntu>Ubuntu, with Linux 6.12-intel\"/g' /etc/default/grub + sudo update-grub + ``` + + - Reboot the system: + + ```bash + sudo reboot + ``` + +8. Ensure the host platform meets the following requirements: + + - it has sufficiently large disk allocation for `/var` during installation of OS, + + > **Note:** The default storage path for libvirt for all guest domain disk + > images and other usage is at `/var`. + - it has a physical display monitor connected prior to the installation, + - it has a network connection and Internet access + - proxy variables (http_proxy, https_proxy, no_proxy) are set appropriately in + `/etc/environment` if required for the network access, + - it is updated by running `sudo apt update`, + - it has a current date/ time set up, + - a user already logged into the UI home screen prior to any operations, + or a user account set to auto-login, as required for VM support with Intel + GPU SR-IOV. + + For more details, refer to + [the prerequisites](https://github.com/intel/kvm-multios/blob/v0.19.0/documentation/setup_sriov.md#prerequisites). + + +6. Clone the KVM MultiOS repository: + + Check the [tag version](#kvm-multios-repository) + and clone the [kvm-multios](https://github.com/intel/kvm-multios) repository. + + ```sh + cd ~ + git clone -b https://github.com/intel/kvm-multios.git + ``` + +6. Run the host setup script: + + ```bash + cd kvm-multios + ./host_setup/ubuntu/setup_host.sh -u GUI + ``` + +## Create Guest OS images + +Now that the host has been set up, you can prepare +[Ubuntu 22.04](#create-ubuntu-vm-image) and +[Windows 11 Enterprise](#create-windows-11-enterprise-vm-image) +operating systems for your virtual machines. + +### Create Ubuntu VM image + +Open a terminal window in the host, and run the following command to start +automated creation of the Ubuntu VM image. + +```bash +./guest_setup/ubuntu/ubuntu_setup.sh --force --viewer +``` + +Once the installation has completed, the VM image will be in the shutdown state. +The `ubuntu.qcow2` VM image will be located in the `/var/lib/libvirt/images/` +directory. The image must be copied to an appropriate host machine with +SR-IOV support. + +For more details, refer to +[the Ubuntu VM installation guide](https://github.com/intel/kvm-multios/blob/v0.19.0/documentation/ubuntu_vm.md). + +## Create Windows 11 Enterprise VM image + +1. Download Windows 11 ISO image. + + Download Windows 11 24H2 Enterprise Evaluation at + . + +2. (Optional) Create a no-prompt Windows installation ISO image. + + For more details, refer to + [the Windows VM installation guide](https://github.com/intel/kvm-multios/blob/v0.19.0/documentation/windows_vm.md). + + > **Important:** + > + > - This step is required only for a fully-automated setup without any human intervention. + > - This step is optional if you are able to monitor the initial boot during the installation + and respond when prompted with _"Press Any Key To Boot From..."_. + +3. Download the Windows 11 OS patch 26100.7922. + + 1. Download the required .msu files: + + - **KB5043080:** + + ```bash + https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/d8b7f92b-bd35-4b4c-96e5-46ce984b31e0/public/windows11.0-kb5043080-x64_953449672073f8fb99badb4cc6d5d7849b9c83e8.msu + ``` + + - **KB5077241:** + + ```bash + https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/66b28d24-251c-4c0a-8a19-82bc599deac3/public/windows11.0-kb5077241-x64_739bca934f7f45038f9752637f632afa52c35f75.msu + ``` + + 2. Copy the .msu files to the `unattend_win11` folder: + + ```bash + cp windows11.0-kb5043080-x64_953449672073f8fb99badb4cc6d5d7849b9c83e8.msu ./guest_setup/ubuntu/unattend_win11/windows-updates_01.msu + cp windows11.0-kb5077241-x64_739bca934f7f45038f9752637f632afa52c35f75.msu ./guest_setup/ubuntu/unattend_win11/windows-updates_02.msu + ``` + +4. Prepare the iGFX driver. + + 1. Download the driver .zip package: + + > **Note:** Contact your Intel representative for more details on this resource. + + 2. Copy the package to the `unattend_win11` folder: + + ```bash + cp GFX-prod-hini-releases* ./guest_setup/ubuntu/unattend_win11/Driver-Release-64-bit.zip + ``` + +5. Prepare the Intel Graphics SR-IOV ZeroCopy driver. + + 1. Download the `ZCBuild__Installer.zip` package: + + > **Note:** Contact your Intel representative for more details on this resource. + + 2. Copy the `ZCBuild_xxxx_Installer.zip` to the `unattend_win11` folder: + + ```bash + cp ZCBuild_*_Installer.zip ./guest_setup/ubuntu/unattend_win11/ZCBuild_MSFT_Signed_Installer.zip + ``` + +6. Create the guest Windows 11 VM image. + + Use the command below to start automated OS image creation. + + ```bash + ./guest_setup/ubuntu/win11_setup.sh -p client --force --viewer + ``` + + Once the process has finished, the VM image will be in the shutdown state. + It will be located at: `/var/lib/libvirt/images/window11.qcow2`. + The image must be copied to an appropriate host machine with SR-IOV support. + - The reference display port sidecar configuration yaml files are provided in the zipped file to choose the right one for the system configuration. +7. Use the virtual machines on [Edge Microvisor Toolkit host](../emt-installation-howto.md). - diff --git a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-setup.md b/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-setup.md deleted file mode 100644 index a1be480bd0..0000000000 --- a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-setup.md +++ /dev/null @@ -1,237 +0,0 @@ -# Set up Kernel and Host User Space - -Follow the steps below to generate the necessary kernel and userspace files -to set up an Ubuntu 22.04 hypervisor for hosting guest VMs. - -> **Note:** To run Windows VM installation for SR-IOV, you need an Ubuntu host -> with SR-IOV on a supported Intel Core platform with iGPU. - -You can [build the kernel](#build-custom-intel-kernel) either on an Ubuntu 22.04 host -or in an Ubuntu 22.04 docker container on an Ubuntu host. - -> **Note:** You can learn more about specific kernel patches related to VM hosting and -> SR-IOV implementation in the relevant [SPEC file](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0/SPECS/kernel/kernel.spec) - -## Required Host BIOS Settings - -| | | | -|---|---|---| -|Intel (VMX) Virtualization|Intel Advanced Menu -> CPU Configuration|Enabled| -|VT-d|Intel Advanced Menu -> System Agent (SA) Configuration|Enabled| -|SRIOV Enable|Intel Advanced Menu -> System Agent (SA) Configuration -> Graphics Configuration|Enabled| -|Intel(R) TCC Mode|Intel Advanced Menu -> Intel(R) Time Coordinated Computing|Disabled| -|#AC Split Lock|Intel Advanced Menu -> Intel(R) Time Coordinated Computing|Disabled| -|Attemp Secure Boot|Boot Maintenance Manager Menu -> Secure Boot Configuration Menu|Disabled| - -> **Note:** ***A BIOS menu can vary depending on the release.*** - -## Install Ubuntu host - -1. Download [Ubuntu 22.04 (Jammy Jellyfish) Intel IOT ISO](https://cdimage.ubuntu.com/releases/jammy/release/inteliot/ubuntu-22.04-desktop-amd64+intel-iot.iso) - -2. Install Ubuntu 22.04 (Jammy Jellyfish): - - ```bash - # Copy the iso file into a USB drive - sudo dd if=./ubuntu-22.04-desktop-amd64+intel-iot.iso of=/dev/sdX bs=4M && sync - - # Check the boot order number X of the USB drive - sudo efibootmgr - - # Select the USB drive as the next boot device - sudo efibootmgr -n X - - # Reboot into the drive to start the installation - sudo reboot - ``` - -> **Note:** If operating behind a corporate firewall, setup proxy settings as required. - -3. In the **Software & Updates** GUI, make sure to download from **Main server**, as shown below: - - ![Software and Updates](../assets/emt-vm-host-setup/ubuntu-softwareupdates.png) - -4. Upgrade the Ubuntu host software to the latest version: - - ```bash - # Upgrade Ubuntu software - # Generic host kernel installed from Ubuntu may be incompatible with board - # Therefore after upgrade, continue to install host kernel and firmware before rebooting - sudo apt -y update - sudo apt -y upgrade - ``` - -## Setup custom Intel kernel on Ubuntu Host - -### Kernel Setup prerequisites - -1. MultiOS virtualization scripts, obtained from Your Intel Representative. - -2. **kernel-config-6_12.zip** (included in the package above) - -### Build custom Intel Kernel - -1. Create a working directory: - - ```bash - # Create a working directory - mkdir - cd - ``` - -2. Extract files - - ```bash - # Extract files - unzip -jo virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip - unzip -jo kernel-config-6_12.zip - ``` - -3. Build the Kernel debian files and package them: - - ```bash - # build kernel debs - ./sriov_prepare_kernel.sh - - # package deb files - cd sriov_build - find . -name "*.deb" - ./linux-headers-6.12.xx-lts2024-iotg_xxxx_amd64.deb - ./linux-image-6.12.xx-lts2024-iotg-dbg_amd64.deb - ./linux-image-6.12.xx-lts2024-iotg_xxxx_amd64.deb - ./linux-libc-dev_6.12.xx-xxxx_amd64.deb - ``` - -4. Create the **lts2024-iotg-kernel-rel.tar.gz** package and copy it to the working directory: - - ```bash - # Create lts2024-iotg-kernel-rel.tar.gz - tar czvf lts2024-iotg-kernel-rel.tar.gz *.deb - - # copy to working dir - cd - - cp sriov_build/lts2024-iotg-kernel-rel.tar.gz . - ``` - -### Install custom Intel kernel on Ubuntu SR-IOV host - -1. Boot into the Ubuntu Host OS and navigate to the work directory:" - - ```bash - # Change to work directory - cd ~ - ``` - -2. Copy the source files: - - ```bash - # Copy files - cp /lts2024-iotg-kernel-rel.tar.gz . - cp /virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip . - ``` - -3. Extract the script files: - - ```bash - # Extract script files - unzip -jo virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip - ``` - -4. Perform the kernel setup and reboot the Ubuntu host: - - ```bash - # Perform the kernel setup - # This will install the kernel and firmware, and update grub - sudo ./sriov_setup_kernel.sh - - # Reboot the Ubuntu host - sudo reboot - ``` - -### Setup Ubuntu host for SR-IOV - -1. Boot into the Ubuntu Host OS and navigate to the work directory: - - ```bash - # Go to the work directory - cd ~ - ``` - -2. Extract files from `sriov_patches.zip` (included in - `virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip`) - - ```bash - # Extract files - unzip sriov_patches.zip - ``` - -3. Update the host with extracted patches and reboot the host: - - ```bash - # Update the host - sudo ./sriov_setup_ubuntu.sh - - # Reboot the host - sudo reboot - ``` - - > **Note:** If you need to run any benchmarks or reliability tests on the host, - > make sure to disable auto suspend and hibernation by running the following commands: - - ```bash - # Disable the suspend and hibernate services - sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target - # Reboot the Ubuntu host - sudo reboot now - ``` - -### OPTIONAL: Generate guest VM installation files - -You can generate guest VM installation files by either running an initial full -setup on an Ubuntu 22.04 host with SR-IOV installed, or by generating the files -in an Ubuntu 22.04 docker container. - -#### Option 1: Initial full setup of Ubuntu 22.04 SRIOV host - -Once you have performed a full initial setup of the first host OS, (meaning -installation of [Intel custom host kernel](#install-custom-intel-kernel-on-ubuntu-sr-iov-host) and [SR-IOV](#setup-ubuntu-host-for-sr-iov) on Ubuntu) you should see -`packages` and `sriov_install` directories with install files. - -Copy these directories to use in future setups of the second or subsequent hosts. - -```bash -# Copy the directories containing the install files -cp -r packages -cp -r sriov_install -``` - -#### Option 2: Ubuntu 22.04 Docker container - -Alternatively, the install files can be generated in an Ubuntu docker container -by performing the following steps: - -```bash -# Update and upgrade Ubuntu docker container -sudo apt -y update -sudo apt -y upgrade - -# Copy the script files -cp /virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip . - -# Extract files -unzip -jo virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip -unzip sriov_patches.zip - -# Prepare and create install files -sudo ./sriov_prepare_projects.sh -sudo ./sriov_install_projects.sh - -# Copy the directories containing the install files -cp -r packages -cp -r sriov_install -``` - -## Next - -- Create a [Windows 11 Guest VM image](./emt-vm-host-win-guest.md) -- Create a [Ubuntu Guest VM image](./emt-vm-host-ubuntu-guest.md) diff --git a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-ubuntu-guest.md b/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-ubuntu-guest.md deleted file mode 100644 index 0d417ada66..0000000000 --- a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-ubuntu-guest.md +++ /dev/null @@ -1,226 +0,0 @@ -# Create Ubuntu Guest VM under Ubuntu Host - -## Install and Setup Ubuntu VM - -### Prerequisites - -1. Installation scripts - - Download the required installation scripts from the release package - `RPL-S_RPL-SR_KVM_MultiOS.zip`, obtained from Your Intel Representative. - - Run the following - - ```bash - # Change to work directory - cd ~ - - # Copy files - cp /virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip . - - # Extract script files - unzip -jo virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip - ``` - -2. Ubuntu ISO image - - Download [Ubuntu 24.04.2 LTS image](https://cdimage.ubuntu.com/releases/jammy/release/inteliot/ubuntu-22.04-desktop-amd64+intel-iot.iso) - - -#### Prepare Ubuntu VM image - -1. Create a symlink. - - ```bash - ln -s ubuntu-22.04-desktop-amd64+intel-iot.iso ubuntu.iso - ``` - -2. Create an empty Ubuntu image file. - - ```bash - cd /home/$USER/ - qemu-img create -f qcow2 ubuntu.qcow2 64G - ``` - -3. Prepare OVMF files. - - ```bash - cd /home/$USER/ - ln -sf ovmf/OVMF_CODE.fd OVMF_CODE.fd - cp ovmf/OVMF_VARS.fd OVMF_VARS_ubuntu.fd - ``` - -4. Create a separate copy of OVMF for Ubuntu VM use: - - ```bash - # Make a copy of OVMF for Ubuntu guest - ln -sf ovmf/OVMF_CODE.fd OVMF_CODE.fd - cp ovmf/OVMF_VARS.fd OVMF_VARS_ubuntu.fd - ``` - -#### Install Ubuntu VM Image - -1. Run `install_ubuntu.sh` to start Ubuntu guest VM installation. - - ```bash - # Start guest VM to install Ubuntu - sudo ./install_ubuntu.sh - ``` - - > **Note:** If guest VM enters UEFI shell instead of Ubuntu, please type the - > following in the EFI shell: - - ```bash - fs0: - cd efi/boot - grubx64.efi - ``` - - Then, press the enter key and continue booting to Ubuntu, as shown below. - - ![Ubuntu Boot Screen](../assets/emt-vm-host-ubuntu/ubuntu-boot-screen.png) - -2. Install Ubuntu for the guest OS. - - ![Ubuntu Install UI](../assets/emt-vm-host-ubuntu/ubuntu-install.png) - - > **Note:** At the end of Ubuntu installation, the installer will ask you to - > remove the installation disk. Just press 'Enter' to reboot to the newly - > installed Ubuntu guest OS. - -### Configure Ubuntu Guest VM - -1. Open a terminal within the Ubuntu guest VM. - -2. Run the command shown below to upgrade Ubuntu software. - - ```bash - # Upgrade Ubuntu software - sudo apt -y update - sudo apt -y upgrade - ``` - - > **Note:** If operating behind a corporate firewall, setup proxy settings as required. - -3. Install custom intel kernel and configure the Ubuntu guest OS. - - Copy the following files and directories from the `/home/$USER` directory of - the host OS to the `/home/$USER/` directory of the guest OS: - - - lts2024-iotg-kernel-rel.tar.gz - - the `packages` directory - - the `sriov_install` directory - - Boot into the Ubuntu guest image: - - ```bash - # Change to work directory - cd ~ - - # Copy install files from host into /home/$USER - # Format: - # scp -r @:{file1, - # file2, - # file3, - # dir1, - # dir2} - # where, - # : the username of your host machine. - # : the IP address of your host machine. - # : source directory on the host - # : target directory on the guest - scp -r @:/home//{lts2024-iotg-kernel-rel.tar.gz,virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip,packages,sriov_install} /home/$USER - - # Extract script files - unzip -jo virtualization.multios.kvm.scripts-rpls_sriov_kvm_multios_emt-3.1_ww2525.zip - unzip sriov_patches.zip - - # Perform kernel setup - # This will install kernel and firmware, and update grub - sudo ./sriov_setup_kernel.sh - - # Reboot the guest - sudo reboot - ``` - -9. Reboot into the guest: - - ```bash - # after reboot check the kernel version - uname -r - 6.12.32-lts2024-iotg - - # Update and configure the guest - sudo ./configure_ubuntu_guest.sh - ``` - - > **IMPORTANT:** Please shutdown the guest properly once the installation - is completed! - - The ubuntu.qcow2 image is now ready to use. - -## Configuration Options for Running Ubuntu VM - -### Changing Guest VM Memory and Number of CPUs - -The default launch command without any parameters is for 2 cores and 2G RAM. -You can change that with startup parameters. - -Below is an example of guest start configuration for 4 cores and 4GB of RAM: - -```bash -# Add -m option to specify 4G of memory -# Add -c option to specify 4 cpu cores for guest VM -sudo -E ./start_ubuntu.sh -m 4G -c 4 -``` - -### Enabling USB Devices in Guest VM - -For Ubuntu guest VMs, USB devices can be setup in two ways: - -1. Passthrough of all USB host devices. - - USB host passthrough parameter option can be added in the launch command - to passthrough all USB devices on the USB host. - - Add an additional parameter to the Guest VM launch command: - - ```bash - # Note: all connected USB devices will be passthrough to the - guest VM with USB host passthrough option - sudo -E ./start_ubuntu.sh --passthrough-pci-usb - ``` - -2. Passthrough of selected USB devices. - - An external command option can be used to passthrough only a few selected USB devices. - - Retrieve the vendorid and productid of USB device. In this example, `046d` is vendor - ID, `c06a` is product ID. - - ```bash - # On target terminal. - lsusb - Bus 004 Device 003: ID 046d:c06a Logitech, Inc. USB Optical - Mouse - ``` - - Add an additonal parameter to the Guest VM launch command: - - ```bash - # Add extra command when start guest - sudo -E ./start_ubuntu.sh -e "-device usb-host,vendorid=0x046d,productid=0xc06a" - ``` - -> **Note:** A passthrough device option can only be used once because a device -> can be passed through to only 1 guest VM at a time. - -### Enabling PCIe Wi-Fi Adapter Device in Guest VM - -For Ubuntu guest VMs, PCI Wi-Fi device passthrough can be setup by adding -`--passthrough-pci-wifi` parameter to guest VM launch command: - -```bash -# Add --passthrough-pci-wifi for passing through Wifi adapter -sudo -E ./start_ubuntu.sh --passthrough-pci-wifi -``` \ No newline at end of file diff --git a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-win-guest.md b/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-win-guest.md deleted file mode 100644 index b897c5f4bb..0000000000 --- a/docs/developer-guide/get-started/deployment/vm-host/emt-vm-host-win-guest.md +++ /dev/null @@ -1,400 +0,0 @@ -# Create Windows 11 Guest VM under Ubuntu Host - -## Install and Setup Windows 11 VM - -### Prerequisites - -1. Installation Script - - If you already have installed the required `rpls_sriov_kvm_multios_emt-3.1_ww2525.zip` script as part of the host setup, skip this step. Otherwise, download the installation script from a source provided by Your Intel Representative. - - Unzip and install it on the host OS: - - ```bash - unzip -jo rpls_sriov_kvm_multios_emt-3.1_ww2525.zip - ``` - -2. Windows ISO Image - - Download [Windows 11 Enterprise version 24H2](https://www.microsoft.com/en-us/software-download/windows11) into your working - directory, where you unzipped the installation scripts and ran the host setup. - For purpose of this guide we're assuming this directory to be `/home/$USER`. - -### Prepare Windows VM Image - -1. Create a symlink. - - ```bash - # Windows 11 - ln -s 26100.1.240331-1435.ge_release_CLIENTENTERPRISE_OEM_x64FRE_en-us.iso windows.iso - ``` - -2. Create an empty Windows image file: - - ```bash - cd /home/$USER/ - qemu-img create -f qcow2 win.qcow2 64G - ``` - -3. Prepare OVMF files: - - ```bash - ln -sf ovmf/OVMF_CODE.fd OVMF_CODE.fd - cp ovmf/OVMF_VARS.fd OVMF_VARS_windows.fd - ``` - -### Install Windows VM Image - -1. Run `install_windows.sh` to install the Windows guest OS. - - ```bash - # Start guest VM to install Windows - cd /home/$USER/ - sudo ./install_windows.sh - ``` - - > **Note:** If you miss the “Press Any Key” message, press ESC key until you - > reach the EFI shell prompt, then type “reset” to start over again. - > Then, follow the Windows installation steps. - -2. Select **Install Windows 11** and click **Next**: - - ![Choose Setup Option](../assets/emt-vm-host-win/win11-setup-option.png) - -3. Select **Windows 11 IoT Enterprise**": - - ![Select Windows Image](../assets/emt-vm-host-win/win11-select-image.png) - -4. Select **Drive 0 Unallocated Space** and click **Next**: - - ![Select Install Location](../assets/emt-vm-host-win/win11-select-install-location.png) - -5. Select **Ready to install**: - - ![Ready to Install](../assets/emt-vm-host-win/win11-ready-to-install.png) - -6. Follow the Windows installation steps as usual, rebooting as necessary. - When the installer asks for a network connection, select **I don't have internet**. - - ![Network](../assets/emt-vm-host-win/win11-install-connect.png) - - Windows will be installed to `win.qcow2`. - -7. Once the installation is done, disable the automatic updates temporarily with the - following steps: - - - Open **Settings**. - - Click **Updates & Security**. - - Click **Windows Update**. - - Click **Pause updates for 7 days**. - -8. Properly shut down the Windows guest OS. - -### Configure SRIOV on Windows 11 Enterprise VM - -#### Required Drivers - -1. [Intel Graphics UHD Iris Xe GFX driver ver. 32.0.101.6733](https://dl.dell.com/FOLDER13027935M/2/Intel-Graphics-UHD-Iris-Xe-Graphics-Driver_VFN34_WIN64_32.0.101.6733_A04.EXE) - -2. [SRIOV ZeroCopy Windows driver (v1797)](https://www.intel.com/content/www/us/en/download/844242/844243/display-virtualization-drivers-for-arrow-lake-uh-arrow-lake-s.html) - -3. Windows 11 OS Patch 26100.3037: - - [KB5043080](https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/d8b7f92b-bd35-4b4c-96e5-46ce984b31e0/public/windows11.0-kb5043080-x64_953449672073f8fb99badb4cc6d5d7849b9c83e8.msu) - - [KB5050094](https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/2d3f9ba9-5096-4b23-9709-3af7d7a2103f/public/windows11.0-kb5050094-x64_3d5a5f9ef20fc35cc1bd2ccb08921ee8713ce622.msu) - -4. Windows VirtIO Drivers: - - [https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/) - - [https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.271-1/virtio-win-gt-x64.msi](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.271-1/virtio-win-gt-x64.msi) - - > **Note:** To get access to **Intel Graphics UHD Iris Xe GFX driver ver. 32.0.101.6733** - > and **SRIOV ZeroCopy Windows driver (v1797)**, apply for access in **Intel AGS**. - > Remember to setup the proxy settings if operating from behind a corporate firewall. - -#### Launch Windows Guest VM and Install Drivers - -##### Launch Windows Guest VM - -From Host OS launch Windows guest VM with `start_windows.sh`. - -```bash -# Start guest VM to install Windows drivers -cd /home/$USER/ -sudo ./start_windows.sh -``` - -##### Download and install Windows 11 OS patches in correct order - -1. Double click on the **KB5043080** *.msu file to start the installation. - After successful installation reboot the Windows Guest VM. - -2. Double click on the **KB5050094** *.msu file to start the installation. - After successful installation reboot the Windows Guest VM. - - ![patch1](../assets/emt-vm-host-win/win11-install-patch1.png) - - ![patch2](../assets/emt-vm-host-win/win11-install-patch2.png) - - - -##### Install GFX Driver - -1. Download [Intel Graphics UHD Iris Xe GFX driver ver. 32.0.101.6733](https://dl.dell.com/FOLDER13027935M/2/Intel-Graphics-UHD-Iris-Xe-Graphics-Driver_VFN34_WIN64_32.0.101.6733_A04.EXE) - -2. Use the File Explorer to navigate to the downloaded .exe file, and launch it. - -3. Wait for the **Dell Update Package** window to open, then click - **INSTALL** and follow the prompts. - - ![Windows 11 Dell Update Package](../assets/emt-vm-host-win/win11-dell-update-package.png) - -4. After intel GFX Driver installation windows opens, click the - **Begin Installation** button: - - ![Windows 11 Intel Graphics Installer](../assets/emt-vm-host-win/win11-intel-graphics-installer.PNG) - - - -5. After the installation is completed, reboot the Windows guest VM: - - ![Intel Graphics Reboot Prompt](../assets/emt-vm-host-win/win11-intel-graphics-reboot.PNG) - -6. Launch Device Manager to verify the installation. - -7. Expand the "Display adapters" item in the device list. - -8. Right-click on the graphics device and select Properties. Click Drivertab. - Verify that the Intel® Graphics version is 32.0.101.6733. - - - -##### Install SR-IOV Zero Copy Driver - -1. Download Windows Zero Copy Drivers Release 1797 [DVServer, DVServerKMD] - [SRIOV ZeroCopy Windows driver (v1797)](https://www.intel.com/content/www/us/en/download/844242/844243/display-virtualization-drivers-for-arrow-lake-uh-arrow-lake-s.html) - - Please make sure the correct ZCBuild version is chosen from the drop-down. - By default, the latest ZCBuild version will be the first one. - -2. Use File Explorer to extract the .zip file. - - The SR-IOV Zero Copy Driver can be installed either with the GUI installer - or through the command line. - -**Install SR-IOV Zero Copy Driver Using GUI Installer** - -1. Go to the directory containing **ZeroCopyInstaller**. - - ![Zero Copy Installer in Windows Explorer](../assets/emt-vm-host-win/win11-zc-explorer.png) - -2. Double-click the **ZeroCopyInstaller** to run it. - - ![Zero Copy UAC Prompt](../assets/emt-vm-host-win/win11-zc-sandbox.png) - -3. Click on the Install button when prompted. - - ![Zero Copy Installer UI](../assets/emt-vm-host-win/win11-zc-installer.png) - -4. Once the installation is completed, click the **Finish** - button to restart Windows. - -**Install SR-IOV Zero Copy Driver Using Command Line** - -1. Open Powershell in administrator mode. - -2. Navigate to the directory containing **ZeroCopyInstaller**. - -3. Enter the following command to perform the installation: - - ```shell - C:\> .\ZeroCopyInstaller.exe /VERYSILENT /SUPPRESSMSGBOXES - ``` - - > **Note:** Option usage details: - > - `/VERYSILENT` Runs silently without displaying windows - > - `/SUPPRESSMSGBOXES` Suppresses message boxes from displaying - > - `/NORESTART` Avoids restarting the system after installation. - -4. Wait for the Windows guest to automatically restart. - -**Verify SR-IOV Zero Copy Driver Installation** - -1. Launch **Device Manager** to verify the installation. - -2. Expand the **Display adapters** item in the device list, as shown below: - - ![Display Adapters](../assets/emt-vm-host-win/win11-display-adapters.png) - -3. Verify that **DVServerUMD Device** and **VServerKMD driver** are loaded properly. - -4. In Task Manager, verify that the **GPU** tab is showing correct information. - -#### Disable Graphics Driver Updates - -##### Identify the Graphics Hardware ID - -1. Launch the Device Manager. - -2. Expand the **Display adapters** item in the device list: - - ![Display Adapters Expanded](../assets/emt-vm-host-win/win11-display-adapters-expanded.png) - -3. Right click on the graphics device and select **Properties**. - -4. Switch to the **Details** tab and select **Hardware IDs** from the - **Property** drop down list. - - ![Graphics Properties](../assets/emt-vm-host-win/win11-graphics-properties.png) - -5. Right click on the second ID in the list and select **Copy** from the context menu. - -##### Enable Group Policy Disabling Graphics Driver Update - -1. In the Windows search bar type `gpedit.msc` and launch the Group Policy Editor. - -2. On the left pane, navigate to **Computer Configuration** - -> **Administrative Templates** -> **System** -> **Device Installation** - -> **Device Installation Restrictions** - - ![Device Installation Restrictions](../assets/emt-vm-host-win/win11-device-installation-restrictions.png) - -3. On the right pane, double click **Prevent installation of devices that match** - **any of these device IDs** to display additional configuration options. - - ![Prevent Device Installation](../assets/emt-vm-host-win/win11-prevent-device-installation.png) - -4. In the new pop-up window, click the **Enabled** radio button. - - ![Prevent Device Installation - Enabled](../assets/emt-vm-host-win/win11-prevent-device-installation-enabled.png) - -5. Clicking **Show…** will bring up a new window. Enter the device hardware - ID copied earlier: - - ![Prevent Device Installation - Show](../assets/emt-vm-host-win/win11-prevent-device-installation-show.png) - -6. Click **OK** in all the dialog windows to disable graphics driver updates. - - >**Note:** To allow the graphics driver to be updated, follow the steps above, - but select the **Disabled** radio button instead of **Enabled**. - -##### Resume Windows Update - -Resume the automatic Windows updates (excluding Graphics driver) with the following steps: - -1. Open **Settings**. - -2. Select **Update and Security**. - -3. Select **Windows Update**. - -4. Click the **Resume Updates** button. - -#### Install Windows VirtIO Drivers - -Use one of the provided [links](#required-drivers), or download the most recent -`virtio-win-gt-x64.msi or virtio-win-gt-x86.msi` from inside the VM. - -Run the downloaded installer and follow the installation process. - -> **IMPORTANT NOTE:** Please shutdown the guest properly once the -installation is completed! - -## Configuration Options for Running Windows Guest VM - -### HMI Buildtime and Runtime Customer Applications - -Contact Your Intel Representative to obtain the required application. - -1. Launch Windows VM - - ```bash - # Change to work directory - cd - - # Launch Windows 11 guest VM - sudo ./start_windows.sh - ``` - -2. Install the HMI applications - - Download the HMI application to the host OS. In the Winodws guest VM - use SCP to get the HMI application. - - Follow the HMI installation user guide to install and configure the License. - - > **IMPORTANT NOTE:** Please shutdown the guest properly once the - installation is completed! The win.qcow2 image is now ready to use. - -### Changing Guest VM Memory and Number of CPUs - -The default launch command without any parameters is for 2 cores and 2G RAM. -You can change that with startup parameters: - -Below is an example of guest start configuration for 4 cores and 4GB of RAM: - -```bash -# Add -m option to specify 4G of memory -# Add -c option to specify 4 cpu cores for guest VM -sudo -E ./start_windows.sh -m 4G -c 4 -``` - -#### Enabling USB Devices in Windows Guest VM** - -For Windows guest VMs, USB devices can be setup in two ways: - -1. Passthrough of all USB Host Devices - - USB host passthrough parameter option can be added in the launch command - to passthrough all USB devices on the USB host. - - Specify an additional parameter to the Guest VM launch command as shown below. - - ```bash - # Note: all connected USB devices will be passthrough to the - guest VM with USB host passthrough option - sudo -E ./start_windows.sh --passthrough-pci-usb - ``` - -2. Passthrough of selected USB devices. - - An external command option can be used to passthrough only a few selected USB devices. - - Retrieve the vendorid and productid of USB device. In this example, `046d` - is vendor ID, `c06a` is product ID. - - ```bash - # On the target terminal. - $ lsusb - ``` - -Displays the following information: - - ```bash - Bus 004 Device 003: ID 046d:c06a Logitech, Inc. USB Optical - Mouse - ``` - - Specify an additional parameter to the Guest VM launch command: - - ```bash - # Add extra command when starting the guest OS - sudo -E ./start_windows.sh -e "-device usbhost,vendorid=0x046d,productid=0xc06a" - ``` - - > **Note:** A passthrough device option can only be used once because a device - > can be passed through to only 1 guest VM at a time. - -#### Enabling PCIe Wi-Fi Adapter Device in Windows Guest VM - -For Windows guest VMs, PCI Wi-Fi device passthrough can be setup by adding -`--passthrough-pci-wifi` parameter to guest VM launch command: - -```bash -# Add --passthrough-pci-wifi for passing through Wifi adapter -sudo -E ./start_windows.sh --passthrough-pci-wifi -```