最後活躍 1716098027

We will pass a GPU through to a proxmox container and utilize it for video transcoding.

修訂 55a9619816401b0ba23bd9cad2426f9d3487adae

tutorial.md 原始檔案

We will pass a GPU through to a proxmox container and utilize it for video transcoding.

In PVE Host shell

uname -r

  • Install headers apt install pve-headers

  • Blacklist nouveau nano /etc/modprobe.d/blacklist.conf

  • Add lines blacklist nouveau

  • Update Initramfs update-initramfs -u

  • Reboot!

  • Install dependencies apt install build-essential

  • Download driver (https://www.nvidia.com/Download/index.aspx?lang=en-us) wget {YOUR-DRIVER-URL)

  • Make the driver file executable chmod +x {YOUR-DRIVER-FILE}

  • Install the driver ./{YOUR-DRIVER-FILE}

  • Make sure the driver loads when restarted nano /etc/modules-load.d/modules.conf

  • Add lines

nvidia
nvidia-modeset
nvidia_uvm
  • Update Initramfs update-initramfs -u
  • Create udev rules nano /etc/udev/rules.d/70-nvidia.rules
  • Add lines
KERNEL=="nvidia", RUN+="/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 666 /dev/nvidia*'"
KERNEL=="nvidia_modeset", RUN+="/bin/bash -c '/usr/bin/nvidia-modprobe -c0 -m && /bin/chmod 666 /dev/nvidia-modeset*'"
KERNEL=="nvidia_uvm", RUN+="/bin/bash -c '/usr/bin/nvidia-modprobe -c0 -u && /bin/chmod 666 /dev/nvidia-uvm*'"
  • Reboot!

  • Check if the driver is running nvidia-smi

  • Edit the container conf you want to passthrough to nano /etc/pve/lxc/{YOUR-LXC-ID}.conf

  • Note the output of this ls -l /dev/nv*

  • Add these lines but make sure the path (numbers) are correct

#Allow cgroup access
lxc.cgroup2.devices.allow = c 195:0 rw
lxc.cgroup2.devices.allow = c 195:255 rw
lxc.cgroup2.devices.allow = c 195:254 rw
lxc.cgroup2.devices.allow = c 509:0 rw
lxc.cgroup2.devices.allow = c 509:1 rw
lxc.cgroup2.devices.allow = c 10:144 rw

#Pass through device files
lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry = /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry = /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry = /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry = /dev/nvram dev/nvram none bind,optional,create=file
  • Start the container
  • In LXC shell apt update && apt upgrade -y
  • Download driver (https://www.nvidia.com/Download/index.aspx?lang=en-us) wget {YOUR-DRIVER-URL)
  • Make the driver file executable chmod +x {YOUR-DRIVER-FILE}
  • Install the driver ./{YOUR-DRIVER-FILE} --no-kernel-module
  • Reboot!
  • See if the driver is working nvidia-smi

Now you can install Jellyfin and use your nVidia GPU for transcoding.

Video tutorial: https://www.youtube.com/watch?v=-Us8KPOhOCY