Skip to main content

nvidia-smi

„nvidia-smi: command not found“ – so fixt du das (Debian/Kali)

Diese Anleitung hilft dir, nvidia-smi wieder lauffähig zu machen und erklärt kurz, warum der Fehler passiert. Sie ist bewusst einfach gehalten – Schritt für Schritt, mit Kopierbefehlen.

TL;DR – Schnelllösung

  1. Stelle sicher, dass das NVIDIA/CUDA-Repository aktiv ist (für Treiber 580.x):
install -d /etc/apt/keyrings
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub \
  | gpg --dearmor -o /etc/apt/keyrings/cuda-archive-keyring.gpg

cat >/etc/apt/sources.list.d/cuda-debian12-x86_64.list <<'EOF'
deb [arch=amd64 signed-by=/etc/apt/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /
EOF

apt-get update
  1. Reihen konsistent halten: gleiche Treiberlinie verwenden (hier 580.x). Prüfe die installierten Versionen:
apt-cache policy nvidia-driver nvidia-alternative libnvidia-ml1 | sed -n '1,200p'
  1. Fehlendes nvidia-alternative in 580 installieren (sofern nicht schon da):
apt-get install -y nvidia-alternative=580.82.07-1
  1. Falls das 580er Repo keine echte nvidia-smi-Binary liefert: nur die Binary aus 560er-Paket extrahieren (kein Downgrade!):
apt-get download nvidia-smi=560.35.05-1
dpkg-deb -x nvidia-smi_560.35.05-1_amd64.deb /tmp/nsmi
install -D -m 0755 /tmp/nsmi/usr/lib/nvidia/current/nvidia-smi /usr/local/bin/nvidia-smi
ln -sf /usr/local/bin/nvidia-smi /usr/bin/nvidia-smi
hash -r
nvidia-smi -h
nvidia-smi -q | head -n 20
Hinweis: Dieser Weg belässt dein System auf Treiberlinie 580, nutzt aber die 560er nvidia-smi-Binary. In der Praxis ist das mit libnvidia-ml1 580 kompatibel und genügt für Monitoring.

Warum passiert der Fehler?

  • nvidia-smi gehört nicht immer zum Paket nvidia-smi. In manchen Repos ist das nur ein „Dummy“ (enthält nur Doku).
  • Die echte Binary steckt je nach Distribution/Version in anderen Paketen (z. B. nvidia-driver-bin, nvidia-utils-*) – oder wird über Metapakete geliefert.
  • Mischt man Repositories (z. B. Kali 550.x + NVIDIA 580.x), passen die Versionsabhängigkeiten oft nicht zusammen – dann fehlt am Ende die Binary im PATH.

Sauberer Weg (empfohlen): konsistente Repo-Linie

Entscheide dich für eine Linie: entweder komplett 580.x (NVIDIA/CUDA) oder komplett 550.x (Kali). Mischen führt zu Konflikten.

Variante A – 580.x (NVIDIA/CUDA)

  1. CUDA-Repo eintragen (siehe TL;DR) und doppelte Zeilen entfernen:
awk '!seen[$0]++' /etc/apt/sources.list.d/cuda-debian12-x86_64.list \
  > /etc/apt/sources.list.d/cuda-debian12_x86_64.fixed && \
mv /etc/apt/sources.list.d/cuda-debian12_x86_64.fixed /etc/apt/sources.list.d/cuda-debian12-x86_64.list
apt-get update
  1. Sicherstellen, dass alle Kernpakete 580 sind:
apt-cache policy nvidia-driver nvidia-alternative libnvidia-ml1
  1. nvidia-alternative ggf. nachziehen:
apt-get install -y nvidia-alternative=580.82.07-1

Wenn keine 580er nvidia-smi-Binary verfügbar ist: siehe Abschnitt „Binary pragmatisch bereitstellen“.

Variante B – 550.x (Kali)

Nur falls du auf Kali-Stand bleiben willst.

  1. CUDA-Repo deaktivieren (um Versionen nicht zu mischen).
  2. Kali-Pakete sauber auf 550 ausrichten:
apt-get update
apt-get install -y \
  nvidia-driver=550.163.01-3 \
  nvidia-driver-bin=550.163.01-3 \
  nvidia-alternative=550.163.01-3 \
  libnvidia-ml1=550.163.01-3 \
  --allow-downgrades

Danach ist /usr/bin/nvidia-smi normalerweise direkt vorhanden.

Binary pragmatisch bereitstellen (ohne System-Downgrade)

Wenn die 580er Repo-Linie keine nvidia-smi-Binary liefert, extrahieren wir nur die Binary aus dem 560er Paket:

apt-get download nvidia-smi=560.35.05-1
dpkg-deb -x nvidia-smi_560.35.05-1_amd64.deb /tmp/nsmi
install -D -m 0755 /tmp/nsmi/usr/lib/nvidia/current/nvidia-smi /usr/local/bin/nvidia-smi
ln -sf /usr/local/bin/nvidia-smi /usr/bin/nvidia-smi
hash -r
nvidia-smi -q | head -n 20
Aufräumen (optional):
rm -f /usr/bin/nvidia-smi /usr/local/bin/nvidia-smi
rm -rf /tmp/nsmi

Prüfen, ob der Treiber wirklich läuft

nvidia-smi startet auch ohne aktive GPU, zeigt dann aber z. B. „No devices were found“. Treiberstatus prüfen:

lsmod | grep -i nvidia || modprobe nvidia || true
dmesg | grep -i nvidia | tail -n 60
uname -r

Wenn das Kernelmodul fehlt oder nicht baut:

apt-get install -y dkms linux-headers-$(uname -r)
reboot

Alternative: Im Container testen

Mit nvidia-docker2/nvidia-container-toolkit kannst du nvidia-smi im Container ausführen (ohne Host-Binary):

docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu24.04 nvidia-smi

Fehlersuche (Kurzcheckliste)

  • Repo doppelt? Datei auf doppelte Zeilen prüfen:
    nl -ba '/etc/apt/sources.list.d/cuda-debian12-x86_64.list'
  • zsh „bad pattern“? Eckige Klammern in Befehlen quoten:
    noglob cat /etc/apt/sources.list.d/cuda-debian12-x86_64.list
  • Welche Versionen verfügbar?
    apt-cache policy nvidia-driver nvidia-driver-bin nvidia-alternative libnvidia-ml1
  • Wo liegt die Binary?
    apt-file update
    apt-file search -x '(^|/)nvidia-smi$'
  • Secure Boot? Kann das Laden des Moduls blockieren → Logs prüfen:
    dmesg | grep -i 'nvidia\|secure\|module verification'

FAQ

Ist die 560er Binary mit 580 kompatibel?
Für die reine Abfrage über NVML (nvidia-smi) funktioniert das üblicherweise problemlos. Wir installieren keine 560er Systempakete, sondern nutzen nur die einzelne Binary.

Warum nicht einfach „apt install nvidia-smi“?
Weil dieses Paket in einigen Repositories nur ein Platzhalter/Dummy ist (liefert keine Binary). Die echte nvidia-smi kann in anderen Paketen stecken.

Wie mache ich das rückgängig?
Symlinks/Binary entfernen:

rm -f /usr/bin/nvidia-smi /usr/local/bin/nvidia-smi

Repository-Zeilen ggf. wieder anpassen und apt-get update.

 


Stand: Beispielbefehle für Debian 12/Kali, Treiberlinie 580.x. Versionsnummern bitte bei Bedarf mit apt-cache policy prüfen.