Microsoft Edit provides terminal editing with full mouse and copy-paste support.
???+ note
The current version of Edit (1.2.0) is not available via the package manager apt yet. This could change at some point in the future, making for an easier deployment.
Intel Integrated Graphics (iGPU) is a GPU that is integrated into the CPU. The GPU is a part of the CPU and is used to render graphics. Proxmox may be configured to use iGPU split passthrough to VM to allow the VM to use the iGPU for hardware acceleration for example using video encoding/decoding and Transcoding for series like [Plex][plex-url], [Emby][emby-url] and [Jellyfin][jellyfin-url]. This guide will show you how to configure Proxmox to use iGPU passthrough to VM.
!!! Warning “”
**Your mileage may vary depending on your hardware. The following guide was tested with Intel Gen8 CPU.**
!!! Failure “Supported CPUs”
`iGPU GVT-g Split Passthrough` is supported only on Intel's **5th generation to 10th generation** CPUs!
Known supported CPU families:
- **Broadwell**
- **Skylake**
- **Kaby Lake**
- **Coffee Lake**
- **Comet Lake**
There are two ways to use iGPU passthrough to VM. The first way is to use the Full iGPU Passthrough to VM. The second way is to use the iGPU GVT-g technology which allows as to split the iGPU into two parts. We will be covering the Split iGPU Passthrough. If you want to use the split Full iGPU Passthrough you can find the guide [here][igpu-full-passthrough-url].
The following examples uses SSH connection to the Proxmox server. The editor is nano but feel free to use any other editor.
We will be editing the grub configuration file.
Edit the grub configuration file.
Terminal window
nano/etc/default/grub
Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT by default they should look like this:
Terminal window
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
We want to allow passthrough and Blacklists known graphics drivers to prevent proxmox from utilizing the iGPU.
Your GRUB_CMDLINE_LINUX_DEFAULT should look like this:
This will blacklist most of the graphics drivers from proxmox. If you have a specific driver you need to use for Proxmox Host you need to remove it from `modprobe.blacklist`
Save and exit the editor.
Update the grub configuration to apply the changes the next time the system boots.
Terminal window
update-grub
Next we need to add vfio modules to allow PCI passthrough.
Edit the /etc/modules file.
Terminal window
nano/etc/modules
Add the following line to the end of the file:
Terminal window
# Modules required for PCI passthrough
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
# Modules required for Intel GVT-g Split
kvmgt
Save and exit the editor.
Update configuration changes made in your /etc filesystem
Terminal window
update-initramfs-u-kall
Reboot Proxmox to apply the changes
Verify that IOMMU is enabled
Terminal window
dmesg|grep-eDMAR-eIOMMU
There should be a line that looks like DMAR: IOMMU enabled. If there is no output, something is wrong.
If you have multiple VGA, look for the one that has the Intel in the name.
Here, the PCI address of the iGPU is 00:02.0.
For best performance the VM should be configured the Machine type to ==q35==.
This will allow the VM to utilize PCI-Express passthrough.
Open the web gui and navigate to the Hardware tab of the VM you want to add a vGPU.
Click Add above the device list and then choose PCI Device
Open the Device dropdown and select the iGPU, which you can find using it’s PCI address. This list uses a different format for the PCI addresses id, 00:02.0 is listed as 0000:00:02.0.
Click Mdev Type, You should be presented with a list of the available split passthrough devices choose the better performing one for the vm.
Select ROM-Bar, PCI-Express and then click Add.
The Windows Virtual Machine Proxmox Setting should look like this:
Power on the Windows Virtual Machine.
Open the VM’s Console.
Install the latest version of [Intel’s Graphics Driver][intel-gpu-drivers-url]{target=_blank} or use the [Intel Driver & Support Assistant][intel-driver-and-support-assistant-url]{target=_blank} installer.
If all when well you should see the following output in Device Manager and [GPU-Z][gpu-z-url]{target=_blank}:
That’s it! You should now be able to use the iGPU for hardware acceleration inside the VM and still have proxmox’s output on the screen.
Linux Virtual Machine iGPU Passthrough Configuration
If you have multiple VGA, look for the one that has the Intel in the name.
![Proxmox lspci vga][proxmox-lspci-vga-img]
Here, the PCI address of the iGPU is 00:02.0.
VM should be configured the Machine type to ==i440fx==.
Open the web gui and navigate to the Hardware tab of the VM you want to add a vGPU to.
Click Add above the device list and then choose PCI Device
![Ubuntu VM Add PCI Device][ubuntu-vm-add-pci-device-img]
Open the Device dropdown and select the iGPU, which you can find using it’s PCI address. This list uses a different format for the PCI addresses id, 00:02.0 is listed as 0000:00:02.0.
![Add iGPU MDev to VM][general-add-igpu-mdev-to-vm-img]
Click Mdev Type, You should be presented with a list of the available split passthrough devices choose the better performing one for the vm.
Select ROM-Bar, and then click Add.
The Ubuntu Virtual Machine Proxmox Setting should look like this:
Boot the VM. To test the iGPU passthrough was successful, you can use the following command:
There are many reasons to do this, or to use an application like the one shared here. For example, an application that phones home may need testing for its behavior when it loses connection with an URL, or a system needs to be kept from accessing unsecure sites/services online.
The executable will create a profile called myprofilename inside the hosts file. That is to keep additions separate from the default/manually entered ones already in the hosts file.
This application can be used to perform backups and restores of the hosts file too. More about it can be found in the documentation at: https://guumaster.github.io/hostctl/
Upon connecting the GOG Galaxy client to Ubisoft Connect, it goes into a disconnected state again. This happens just seconds after signing in to the Ubisoft Connect account using the plugin’s login.
???+ note
This seems to be an open issue in the GitHub repo referenced below. A definitive solution has not been found as this method needs to be re-applied from time to time.
Inside the LXC container, use the root user to create a non-root user. In this example the user is added to the sudo and docker groups after installing Docker inside the LXC container.
Terminal window
useradd-s/bin/bash-m-Gsudo,dockerismael
Change the user password as needed.
Terminal window
suismael
passwd
This user’s default UID:GID will be 1000:1000. If not, create it with:
Take note of this UID:GID as it will be used to map the share in Proxmox. The share itself can live on another system; here an unRAID VM on the same host is used.
If at some point Proxmox loses connectivity with an SMB/CIFS share, it will not restore the connection by itself until a restart of the Proxmox node is performed.
With the script below, the Proxmox node restores the connection automatically.
On the node’s shell, create a bash script that looks for mount points in /mnt/pve/ and unmounts them if they become stale:
Terminal window
nanoremount.sh
Put this content into the file:
#!/bin/bash
list=$(ls/mnt/pve)
foriin$list
do
status=$(ls/mnt/pve/$i2>&1)
if [[ $status=~ .*Stale.* ]]
then
umount/mnt/pve/$i
fi
done
Remember to make the script executable by the user creating it:
Terminal window
chmod766/root/remount.sh
Add a cron job for this script to run automatically:
Terminal window
***** /root/remount.sh >/dev/null 2>&1
With that, any SMB/CIFS connections are restored automatically. That is because the service pvestatd tries to remount every SMB share every 10 seconds.
This approach could work for NFS shares too, but that possibility has not been tested.
Linux-to-Linux SSH setups are straightforward, but the Windows OpenSSH client needs a different approach to copy a generated key for password-less logins.
Generate your private and public keys in your Windows PowerShell shell
The command below performs the equivalent of ssh-copy-id using the OpenSSH client on Windows. Edit user@host.address with the remote user and host IP/hostname.
SSH local port forwarding exposes a web UI from a remote server on the local machine. This is useful for tools such as Portainer running on a cloud VM.
Run this command on the local machine:
Terminal window
ssh-L9000:127.0.0.1:9000my_user@my-remote-server
This forwards the remote port 9000 to the local machine: