From 9b7248f13bc60c48fa05d31e296d79c69f8bfd08 Mon Sep 17 00:00:00 2001 From: Jan Date: Thu, 30 Jul 2026 13:14:13 +0200 Subject: [PATCH] =?UTF-8?q?install=5Follama=5Fdeb=5Ffix.sh=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install_ollama_deb_fix.sh | 80 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 install_ollama_deb_fix.sh diff --git a/install_ollama_deb_fix.sh b/install_ollama_deb_fix.sh new file mode 100644 index 0000000..bfab85c --- /dev/null +++ b/install_ollama_deb_fix.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +# Repariert/aktiviert AMD-GPU-Nutzung in Ollama auf Debian 13 über Vulkan (Mesa/RADV). +# Beste Wahl für viele Radeon-Karten, wenn ROCm auf Debian auf CPU zurückfällt. +set -Eeuo pipefail + +log() { printf '\n\033[1;32m==> %s\033[0m\n' "$*"; } +warn() { printf '\n\033[1;33mWARNUNG: %s\033[0m\n' "$*" >&2; } +die() { printf '\n\033[1;31mFEHLER: %s\033[0m\n' "$*" >&2; exit 1; } + +[[ $EUID -eq 0 ]] || die "Bitte mit sudo ausführen." +[[ -r /etc/os-release ]] || die "/etc/os-release fehlt." +# shellcheck disable=SC1091 +source /etc/os-release +[[ "${ID:-}" == "debian" && "${VERSION_ID:-}" == "13" ]] || \ + warn "Erwartet wurde Debian 13; erkannt: ${PRETTY_NAME:-unbekannt}" + +OLLAMA_BIN="$(command -v ollama || true)" +[[ -n "$OLLAMA_BIN" ]] || die "Ollama wurde nicht gefunden." +id ollama >/dev/null 2>&1 || die "Der Systembenutzer 'ollama' fehlt." + +log "AMD-GPU und Kernel-Treiber anzeigen" +lspci -nnk | grep -EA4 -i 'VGA|3D|Display' || true +modprobe amdgpu || true + +log "Vulkan-/Mesa-Pakete installieren" +export DEBIAN_FRONTEND=noninteractive +apt-get update +apt-get install -y --no-install-recommends \ + mesa-vulkan-drivers vulkan-tools libvulkan1 libcap2-bin pciutils + +if ! dpkg -s firmware-amd-graphics >/dev/null 2>&1; then + if ! apt-get install -y --no-install-recommends firmware-amd-graphics; then + warn "firmware-amd-graphics konnte nicht installiert werden. Prüfe, ob 'non-free-firmware' in den APT-Quellen aktiviert ist." + fi +fi + +log "Ollama Zugriff auf AMD-Geräte geben" +for group in render video; do + getent group "$group" >/dev/null 2>&1 && usermod -aG "$group" ollama + if [[ -n "${SUDO_USER:-}" && "${SUDO_USER}" != "root" ]] && id "$SUDO_USER" >/dev/null 2>&1; then + getent group "$group" >/dev/null 2>&1 && usermod -aG "$group" "$SUDO_USER" + fi +done + +# Ollama empfiehlt dies für eine zuverlässigere VRAM-Erkennung mit Vulkan. +setcap cap_perfmon+ep "$OLLAMA_BIN" || warn "cap_perfmon konnte nicht gesetzt werden. Vulkan kann trotzdem funktionieren." + +log "Vulkan-Backend für den systemd-Dienst aktivieren" +install -d -m 0755 /etc/systemd/system/ollama.service.d +cat > /etc/systemd/system/ollama.service.d/30-amd-vulkan.conf <<'CONF' +[Service] +Environment="OLLAMA_VULKAN=1" +Environment="OLLAMA_DEBUG=1" +CONF +chmod 0644 /etc/systemd/system/ollama.service.d/30-amd-vulkan.conf + +systemctl daemon-reload +systemctl restart ollama.service +sleep 3 + +log "Vulkan-Erkennung als Benutzer ollama" +sudo -u ollama vulkaninfo --summary 2>&1 | \ + grep -E -i 'GPU|deviceName|deviceType|driverName|driverInfo|apiVersion' | head -n 80 || true + +log "Geräte und Berechtigungen" +ls -l /dev/kfd /dev/dri/renderD* 2>/dev/null || true +id ollama + +log "Ollama-Umgebung" +systemctl show ollama.service -p Environment --no-pager + +log "Ollama-GPU-Erkennung im Journal" +journalctl -u ollama.service -b --no-pager -n 250 | \ + grep -E -i 'vulkan|rocm|gpu|amdgpu|device|offload|inference compute|no compatible|discovery|error|warn' | tail -n 100 || true + +printf '\nFertig. Starte nun ein Modell und prüfe parallel:\n' +printf ' ollama run \n' +printf ' watch -n 1 ollama ps\n\n' +printf 'In der Spalte PROCESSOR sollte 100%% GPU oder ein CPU/GPU-Split stehen.\n' +printf 'Bei mehreren GPUs steht der verwendbare Vulkan-Index im Journal; dann kann GGML_VK_VISIBLE_DEVICES gesetzt werden.\n' \ No newline at end of file