NVIDIA Kernel Module Change in TrueNAS 25.10 - What This Means for You

I ended up getting my PNY RTX 5060 ti detected with nvidia-smi and I am now able to use Frigate with the GPU. I needed to generate my own nvidia.raw file that is compatible with TrueNAS 25.10.1 including the kernel, middleware, and many other components.

I found that following the guide from TrueNAS Build Nvidia vGPU Driver extensions (systemd-sysext) - HomeLabProject really helped but I did need to make a change to the extensions.py to force it to download and configure the 580.105.08 driver, which is the same as the development build for TrueNAS SCALE 26.

Below are the exact steps I followed. Since I changed the default bundled driver, I expect this to be unsupported and done at my own risk. It does however show updating the driver fixed my card making it useable with TrueNAS. The good news is I was able to make a backup copy of the original nvidia.raw file, which is 570.172.08, so reverting is pretty straight forward with the steps below by just replacing the file being copied.

I ran the build steps in a separate Debian 12 VM, not on TrueNAS.

sudo apt update

sudo apt install build-essential debootstrap git python3-pip python3-venv squashfs-tools unzip libjson-perl rsync libarchive-tools

mkdir ~/nvidia_build
git clone -b TS-25.10.1 https://github.com/truenas/scale-build.git
cd scale-build
export TRUENAS_TRAIN="TrueNAS-SCALE-Goldeye"
export TRUENAS_VERSION="25.10.1"
export PATH=$PATH:/usr/sbin:/sbin

nano scale_build/extensions.py

Find and modify the download_nvidia_driver function (around line 200-300, depending on version):
Replace the entire function with this (adapts for standard open driver download)

    def download_nvidia_driver(self):
        version = "580.105.08"
        prefix = "https://us.download.nvidia.com/XFree86/Linux-x86_64"
        filename = f"NVIDIA-Linux-x86_64-{version}.run"
        result = f"{self.chroot}/{filename}"
        self.run([
            "wget", "-c", "-O", f"/{filename}", f"{prefix}/{version}/{filename}"
        ])
        os.chmod(result, 0o755)
        return result

Then run the following. This took me about an hour to complete.

make checkout
make packages
make update

mkdir -p ./tmpfile/rootfs
sudo mount ./tmp/update/rootfs.squashfs ./tmpfile/rootfs

ls -al ./tmpfile/rootfs/usr/share/truenas/sysext-extensions/nvidia.raw
sudo cp "~/nvidia_build/scale-build/tmpfile/rootfs/usr/share/truenas/sysext-extensions/nvidia.raw" ~/nvidia_580.105.08.raw

sudo umount ./tmpfile/rootfs
rmdir ./tmpfile/rootfs

Enable SSH on TrueNAS and enter perform the following.

Download your nvidia.raw file and upload to your target TrueNAS system in SSH.

  1. If you checked Install NVIDIA Drivers on the settings panel

sudo systemd-sysext unmerge

  1. You need to make the /usr dataset writable

sudo zfs set readonly=off “$(zfs list -H -o name /usr)”

  1. Backup the old one and copy the new one.
sudo mv /usr/share/truenas/sysext-extensions/nvidia.raw /usr/share/truenas/sysext-extensions/nvidia.bak

sudo cp “~/nvidia_580.105.08.raw” /usr/share/truenas/sysext-extensions/nvidia.raw

  1. Then, set the /usr dataset back to read-only

sudo zfs set readonly=on “$(zfs list -H -o name /usr)”

  1. After you’ve copied the file, simply run

sudo systemd-sysext merge

Reboot TrueNAS