Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.

Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI,
control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
tomasz-syn-grzegorza
2026-07-05 12:02:04 +00:00
commit 359afb3a59
153 changed files with 18169 additions and 0 deletions
+367
View File
@@ -0,0 +1,367 @@
# 02 — Sterowniki NVIDIA
> **Cel rozdziału:** zainstalować sterownik NVIDIA dla RTX 3090 Ti na headless serwerze Ubuntu 26.04, tak aby `nvidia-smi` działało na hoście przed konfiguracją GPU w Dockerze.
**Szacowany czas:** 1530 minut (zależy od pobierania pakietów i ewentualnego DKMS)
**Wymagania:** ukończony rozdział [01 — Aktualizacja systemu i Docker CE](01-system-update-and-docker.md)
---
## Spis treści
1. [Weryfikacja punktu startowego](#1-weryfikacja-punktu-startowego)
2. [Wybór sterownika](#2-wybór-sterownika)
3. [Instalacja sterownika](#3-instalacja-sterownika)
4. [Restart i pierwsze uruchomienie](#4-restart-i-pierwsze-uruchomienie)
5. [Konfiguracja serwerowa (opcjonalna)](#5-konfiguracja-serwerowa-opcjonalna)
6. [Weryfikacja](#6-weryfikacja)
7. [Troubleshooting](#7-troubleshooting)
8. [Czego nie robimy w tym kroku](#8-czego-nie-robimy-w-tym-kroku)
9. [Następny krok](#9-następny-krok)
---
## 1. Weryfikacja punktu startowego
```bash
# Docker z rozdziału 01 — musi działać
docker --version
docker ps
# GPU widoczne w PCI
lspci | grep -i "nvidia"
# nvidia-smi jeszcze nie działa — to normalne
nvidia-smi 2>/dev/null || echo "nvidia-smi: not available (expected)"
# lista dostępnych sterowników
sudo ubuntu-drivers devices
```
**Oczekiwany wynik:**
- RTX 3090 Ti (`GA102`) widoczna w `lspci`
- `nvidia-smi` niedostępne
- `ubuntu-drivers` pokazuje m.in. `nvidia-driver-595-open` jako **recommended**
Sprawdź też Secure Boot (wpływa na DKMS):
```bash
mokutil --sb-state 2>/dev/null || echo "mokutil not available"
```
Na tym serwerze Secure Boot jest wyłączony — nie będzie promptu MOK przy instalacji.
---
## 2. Wybór sterownika
Dla **headless serwera AI** (vLLM + ComfyUI, bez monitora) rekomendujemy wariant **server + open kernel modules**:
| Wariant | Pakiet | Kiedy użyć |
|---------|--------|------------|
| **Rekomendowany** | `nvidia-driver-595-server-open` | Serwer compute, bez GUI, nowoczesne moduły open |
| Alternatywa | `nvidia-driver-595-open` | Jeśli server-open sprawia problemy |
| Nie używamy | `nouveau` | Sterownik open-source — za wolny do AI |
**Dlaczego server-open, a nie desktop `595-open`?**
- Wariant **server** nie ciągnie zbędnych zależności od display managera
- Wariant **open** to aktualna rekomendacja Ubuntu 26.04 dla nowoczesnych GPU
- Sterownik pochodzi z repozytorium Ubuntu (`restricted`) — aktualizuje się przez `apt upgrade` i przeżywa upgrade kernela (DKMS / prebuilt modules)
**Uwaga:** Na hoście **nie instalujemy** pełnego CUDA Toolkit. Kontenery vLLM/ComfyUI dostarczą własne biblioteki CUDA — w rozdziale 03 dodamy tylko NVIDIA Container Toolkit.
**Dual GPU:** W tym systemie jest też iGPU AMD (HawkPoint). Do workloadów AI używamy wyłącznie NVIDIA:
```bash
# zapisz na później — używane w compose stackach
export CUDA_VISIBLE_DEVICES=0
```
---
## 3. Instalacja sterownika
### 3.1 Pakiety pomocnicze
```bash
sudo apt update
sudo apt install -y ubuntu-drivers-common
```
### 3.2 Instalacja sterownika server-open (rekomendowana)
```bash
sudo ubuntu-drivers install --gpgpu nvidia:595-server-open
```
Flaga `--gpgpu` filtruje sterowniki pod obciążenia compute (bez GUI).
Jeśli powyższa komenda zgłosi brak pakietu, użyj bezpośredniej instalacji apt:
```bash
sudo apt install -y nvidia-driver-595-server-open
```
### 3.3 Narzędzia monitorowania (`nvidia-smi`)
Na serwerach headless pakiet `nvidia-utils` czasem nie jest dołączany automatycznie:
```bash
sudo apt install -y nvidia-utils-595-server
```
### 3.4 Alternatywa — sterownik desktop recommended
Jeśli wolisz iść ścieżką „recommended” z `ubuntu-drivers devices`:
```bash
sudo ubuntu-drivers install nvidia:595-open
sudo apt install -y nvidia-utils-595
```
Ta ścieżka też zadziała — ale dla serwera AI preferujemy wariant z sekcji 3.2.
### 3.5 Sprawdzenie zainstalowanych pakietów
```bash
dpkg -l | grep -i nvidia | grep -v linux-firmware
```
Oczekiwane m.in.: `nvidia-driver-595-server-open`, `nvidia-utils-595-server`.
---
## 4. Restart i pierwsze uruchomienie
Sterownik NVIDIA ładuje się do jądra dopiero po restarcie:
```bash
sudo reboot
```
Po restarcie zaloguj się ponownie przez SSH i wróć do sekcji 6 (Weryfikacja).
---
## 5. Konfiguracja serwerowa (opcjonalna)
Te kroki możesz wykonać po pierwszym udanym `nvidia-smi`.
### 5.1 Persistence mode
Zmniejsza opóźnienie przy pierwszym uruchomieniu workloadu GPU (kontenery startują szybciej):
```bash
# włącz persistence mode
sudo nvidia-smi -pm 1
# sprawdź
nvidia-smi | grep -i persistence
```
Aby włączać przy każdym bootcie, utwórz systemd service (opcjonalnie):
```bash
sudo tee /etc/systemd/system/nvidia-persistenced.service <<'EOF'
[Unit]
Description=NVIDIA Persistence Daemon
After=nvidia-persistenced.socket
[Service]
Type=forking
ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now nvidia-persistenced 2>/dev/null || true
```
**Uwaga:** Na Ubuntu 26.04 daemon może już być zarządzany przez pakiet sterownika — jeśli `nvidia-persistenced` działa, nie twórz duplikatu.
### 5.2 Limit mocy GPU (opcjonalnie)
RTX 3090 Ti domyślnie pobiera dużo energii. Na serwerze domowym możesz ograniczyć TDP:
```bash
# sprawdź aktualny limit (450W max dla 3090 Ti)
nvidia-smi -q -d POWER | grep -E "Power Limit|Power Draw"
# przykład: limit 350W (wartość w mW) — dostosuj do swojego PSU
# sudo nvidia-smi -pl 350
```
Pomiń ten krok, jeśli zależy Ci na maksymalnej wydajności inference.
---
## 6. Weryfikacja
Wykonaj wszystkie punkty po restarcie.
### 6.1 `nvidia-smi`
```bash
nvidia-smi
```
Oczekiwane:
- GPU: **NVIDIA GeForce RTX 3090 Ti**
- Driver Version: **595.x**
- CUDA Version: wyświetlona (np. 12.x) — to wersja wspierana przez sterownik, nie osobna instalacja CUDA
- Brak błędów `NVIDIA-SMI has failed`
### 6.2 Wersja modułu jądra
```bash
cat /proc/driver/nvidia/version
```
### 6.3 Pełna lista GPU
```bash
nvidia-smi -L
```
Oczekiwane: jedna karta NVIDIA (GPU 0). iGPU AMD nie pojawia się w `nvidia-smi` — to prawidłowe.
### 6.4 Test obciążenia (krótki)
```bash
nvidia-smi dmon -s pucvmet -d 1 -c 3
```
Powinieneś zobaczyć odczyty temperatury, mocy i wykorzystania GPU.
### 6.5 Docker nadal działa
```bash
docker run --rm hello-world
```
Sterownik NVIDIA nie powinien zakłócić Dockera z rozdziału 01.
### Checklist
- [ ] `nvidia-smi` działa bez błędów
- [ ] Widoczna RTX 3090 Ti (24 GB VRAM)
- [ ] Driver Version 595.x
- [ ] `cat /proc/driver/nvidia/version` zwraca wersję
- [ ] Docker nadal działa (`hello-world` OK)
- [ ] (Opcjonalnie) persistence mode włączony
---
## 7. Troubleshooting
### 7.1 `NVIDIA-SMI has failed` po restarcie
**Przyczyna:** Moduł jądra nie załadowany lub konflikt z `nouveau`.
**Diagnostyka:**
```bash
lsmod | grep -E 'nvidia|nouveau'
dmesg | grep -i nvidia | tail -20
```
**Rozwiązanie:**
```bash
# nouveau powinien być wyłączony — jeśli załadowany:
cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf 2>/dev/null
# przeinstaluj sterownik
sudo apt install --reinstall nvidia-driver-595-server-open
sudo reboot
```
### 7.2 DKMS — błąd kompilacji modułu
**Objaw:** Instalacja kończy się błędem DKMS.
**Rozwiązanie:**
```bash
# upewnij się, że masz nagłówki kernela
sudo apt install -y linux-headers-$(uname -r) build-essential dkms
# ponów instalację
sudo apt install --reinstall nvidia-driver-595-server-open
```
### 7.3 Secure Boot — moduł niepodpisany
**Objaw:** Po restarcie brak `nvidia` w `lsmod`, Secure Boot enabled.
Na tym serwerze Secure Boot jest wyłączony. Jeśli włączysz go później:
```bash
mokutil --sb-state
# wymagana rejestracja klucza MOK po instalacji sterownika
sudo reboot # → menu MOK enrollment
```
### 7.4 `ubuntu-drivers install` — GUI nie działa
Na Ubuntu 26.04 zakładka „Additional Drivers” w GUI może być pusta — to znany problem. **Używaj wyłącznie CLI** (ten rozdział).
### 7.5 Po aktualizacji kernela — `nvidia-smi` przestaje działać
Po `apt upgrade` z nowym kernelem wymagany restart:
```bash
test -f /var/run/reboot-required && echo "Reboot required" || echo "OK"
sudo reboot
```
Ubuntu 26.04 na tym sprzęcie używa prebuilt modules (`linux-modules-nvidia-*`) — zwykle nie wymaga ręcznej rekompilacji DKMS.
### 7.6 Zła karta GPU używana przez aplikację
Jeśli w przyszłości pojawi się druga karta NVIDIA, wymuszaj:
```bash
export CUDA_VISIBLE_DEVICES=0
```
Dla RTX 3090 Ti jako jedynej karty NVIDIA w systemie domyślnie jest `GPU 0`.
---
## 8. Czego nie robimy w tym kroku
| Element | Rozdział |
|---------|----------|
| NVIDIA Container Toolkit (`nvidia-ctk`) | 03 |
| GPU w kontenerach Docker (`--gpus all`) | 03 |
| CUDA Toolkit na hoście | niepotrzebne — CUDA w kontenerach |
| vLLM | 04 |
| ComfyUI | 05 |
| Firewall | 06 |
---
## 9. Następny krok
Po przejściu checklisty z sekcji 6:
1. Zgłoś w rozmowie z Cursorem, że krok 02 jest gotowy (lub opisz problemy).
2. Przejdź do rozdziału [**03 — NVIDIA Container Toolkit**](03-nvidia-container-toolkit.md).
---
## Podsumowanie wykonanych zmian
Po ukończeniu tego rozdziału na serwerze powinno być:
- Zainstalowany sterownik `nvidia-driver-595-server-open` (lub `595-open`)
- Działające `nvidia-smi` z RTX 3090 Ti
- Narzędzia `nvidia-utils-595-server`
- Docker z rozdziału 01 nadal sprawny
- (Opcjonalnie) włączony persistence mode