Why did Adding nomodeset in GRUB enable my lone GPU for Applications in TrueNAS SCALE?

Hi everyone,

I have a Lenovo ThinkStation P520 running TrueNAS SCALE in headless mode(no internal GPU). My setup includes an NVIDIA RTX 3090 GPU, which I wanted to use for applications mainly ML model inference. Initially, the GPU seemed to be locked for Applications. i.e. I could not allocate it while creating the apps.

After some research, I modified my GRUB configuration to include the nomodeset kernel parameter, as follows:

GRUB_CMDLINE_LINUX_DEFAULT="libata.allow_tpm=1 amd_iommu=on iommu=pt intel_iommu=on nomodeset"

After applying this change and rebooting, the GPU became available for applications, and I confirmed it was not being used by the console (decodes=none in vgaarb). My applications can now use the GPU without issue.

Here’s the relevant context about my setup:

  • Hardware:
    • Lenovo ThinkStation P520
    • NVIDIA RTX 3090
    • Intel Xeon CPU
  • TrueNAS SCALE Version: [Include the version you’re running]
  • Key BIOS Settings:
    • IOMMU is enabled.
    • No onboard graphics (GPU is the primary display adapter).

I did this on a lark, but did not record the changes quite enough.

Questions:

  1. How exactly did adding nomodeset resolve this issue? I mean I vaguely that it prevents video drivers from being loaded in grub, but could someone explain how that works technically?
  2. Does this change affect any other aspects of TrueNAS SCALE functionality (e.g., logging, system stability)?
  3. Are there better practices or alternative approaches to ensure the GPU remains free for applications while keeping the system functional?