From e97a1ec9442b7bfaecd98f7b2bff3905e800e66c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 29 Oct 2025 13:17:35 +0100 Subject: [PATCH] fixes --- install/reitti-install.sh | 3 +-- misc/REFACTORING_SUMMARY.md | 46 +++++++++++++++++++++++++++++-------- misc/build.func | 10 ++++---- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/install/reitti-install.sh b/install/reitti-install.sh index 270134054..021cdc3be 100644 --- a/install/reitti-install.sh +++ b/install/reitti-install.sh @@ -122,8 +122,7 @@ Wants=postgresql.service redis-server.service rabbitmq-server.service photon.ser [Service] Type=simple WorkingDirectory=/opt/reitti/ -ExecStart=/usr/bin/java -jar /opt/reitti/reitti.jar \ - --spring.config.location=file:/opt/reitti/application.properties +ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g reitti.jar TimeoutStopSec=20 KillMode=process Restart=on-failure diff --git a/misc/REFACTORING_SUMMARY.md b/misc/REFACTORING_SUMMARY.md index 8115f7160..8365a50d3 100644 --- a/misc/REFACTORING_SUMMARY.md +++ b/misc/REFACTORING_SUMMARY.md @@ -1,7 +1,7 @@ # Build.func Refactoring Summary - CORRECTED -**Datum:** 29.10.2025 -**Backup:** build.func.backup-refactoring-* +**Datum:** 29.10.2025 +**Backup:** build.func.backup-refactoring-\* ## Durchgeführte Änderungen (KORRIGIERT) @@ -9,7 +9,8 @@ **Problem:** Nvidia-Unterstützung war überkompliziert mit Treiber-Checks, nvidia-smi Calls, automatischen Installationen -**Lösung (KORRIGIERT):** +**Lösung (KORRIGIERT):** + - ✅ Entfernt: `check_nvidia_host_setup()` Funktion (unnötige nvidia-smi Checks) - ✅ Entfernt: VAAPI/NVIDIA verification checks nach Container-Start - ✅ **BEHALTEN:** `lxc.mount.entry` für alle GPU-Typen (Intel/AMD/NVIDIA) ✅✅✅ @@ -18,6 +19,7 @@ - ✅ User installiert Treiber selbst im Container **GPU Config jetzt:** + ```lxc # Intel/AMD: lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file @@ -31,7 +33,8 @@ lxc.mount.entry: /dev/nvidia-uvm /dev/nvidia-uvm none bind,optional,create=file lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged ``` -**Resultat:** +**Resultat:** + - GPU Passthrough funktioniert rein über LXC mount entries - Keine unnötigen Host-Checks oder nvidia-smi calls - User installiert Treiber selbst im Container wenn nötig @@ -39,7 +42,8 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged ### 2. SSH Keys Funktionen ✅ -**Analyse:** +**Analyse:** + - `install_ssh_keys_into_ct()` - bereits gut strukturiert ✅ - `find_host_ssh_keys()` - bereits gut strukturiert ✅ @@ -47,22 +51,26 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged ### 3. Default Vars Logik überarbeitet ✅ -**Problem:** Einige var_* defaults machen keinen Sinn als globale Defaults: +**Problem:** Einige var\_\* defaults machen keinen Sinn als globale Defaults: + - `var_ctid` - Container-IDs können nur 1x vergeben werden ❌ - `var_ipv6_static` - Statische IPs können nur 1x vergeben werden ❌ **Kein Problem (KORRIGIERT):** + - `var_gateway` - Kann als Default gesetzt werden (User's Verantwortung) ✅ - `var_apt_cacher` - Kann als Default gesetzt werden + Runtime-Check ✅ - `var_apt_cacher_ip` - Kann als Default gesetzt werden + Runtime-Check ✅ **Lösung:** + - ✅ **ENTFERNT** aus VAR_WHITELIST: var_ctid, var_ipv6_static - ✅ **BEHALTEN** in VAR_WHITELIST: var_gateway, var_apt_cacher, var_apt_cacher_ip - ✅ **NEU:** Runtime-Check für APT Cacher Erreichbarkeit (curl timeout 2s) - ✅ Kommentare hinzugefügt zur Erklärung **APT Cacher Runtime Check:** + ```bash # Runtime check: Verify APT cacher is reachable if configured if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then @@ -78,6 +86,7 @@ fi ``` **Resultat:** + - Nur sinnvolle Defaults: keine var_ctid, keine static IPs - APT Cacher funktioniert mit automatischem Fallback wenn nicht erreichbar - Gateway bleibt als Default (User's Verantwortung bei Konflikten) @@ -85,12 +94,14 @@ fi ## Code-Statistik ### Vorher: + - Zeilen: 3,518 - check_nvidia_host_setup(): 22 Zeilen - NVIDIA verification: 8 Zeilen - Var whitelist entries: 28 Einträge ### Nachher: + - Zeilen: 3,458 - check_nvidia_host_setup(): **ENTFERNT** - NVIDIA verification: **ENTFERNT** @@ -99,22 +110,26 @@ fi - Var whitelist entries: 26 Einträge (var_ctid, var_ipv6_static entfernt) ### Einsparung: + - ~60 Zeilen Code -- 2 problematische var_* Einträge entfernt +- 2 problematische var\_\* Einträge entfernt - Komplexität reduziert - Robustheit erhöht (APT Cacher Check) ## Was wurde KORRIGIERT ### Fehler 1: lxc.mount.entry entfernt ❌ + **Problem:** Ich hatte die `lxc.mount.entry` Zeilen entfernt und nur `dev0:` Einträge behalten. **Lösung:** `lxc.mount.entry` für alle GPU-Typen wieder hinzugefügt! ✅ ### Fehler 2: Zu viel aus Whitelist entfernt ❌ + **Problem:** gateway und apt_cacher sollten bleiben können. **Lösung:** Nur var_ctid und var_ipv6_static entfernt! ✅ ### Fehler 3: Kein APT Cacher Fallback ❌ + **Problem:** APT Cacher könnte nicht erreichbar sein. **Lösung:** Runtime-Check mit curl --connect-timeout 2 hinzugefügt! ✅ @@ -123,20 +138,23 @@ fi Vor Deployment testen: ### GPU Passthrough: -- [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/* -- [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/* -- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia* + +- [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/\* +- [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/\* +- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia\* - [ ] Privileged: Check lxc.cgroup2.devices.allow - [ ] Unprivileged: Check nur lxc.mount.entry (keine cgroup) - [ ] Multi-GPU System (user selection) - [ ] System ohne GPU (skip passthrough) ### APT Cacher: + - [ ] APT Cacher erreichbar → verwendet - [ ] APT Cacher nicht erreichbar → deaktiviert mit Warning - [ ] APT Cacher nicht konfiguriert → skip ### Default Vars: + - [ ] var_ctid NICHT in defaults - [ ] var_ipv6_static NICHT in defaults - [ ] var_gateway in defaults ✅ @@ -147,11 +165,13 @@ Vor Deployment testen: **KEINE Breaking Changes mehr!** ### GPU Passthrough: + - ✅ lxc.mount.entry bleibt wie gehabt - ✅ Nur nvidia-smi Checks entfernt - ✅ User installiert Treiber selbst (war schon immer so) ### Default Vars: + - ✅ gateway bleibt verfügbar - ✅ apt_cacher bleibt verfügbar (+ neuer Check) - ❌ var_ctid entfernt (macht keinen Sinn) @@ -160,12 +180,14 @@ Vor Deployment testen: ## Vorteile ### GPU Passthrough: + - ✅ Einfacher Code, weniger Fehlerquellen - ✅ Keine Host-Dependencies (nvidia-smi) - ✅ lxc.mount.entry funktioniert wie erwartet ✅ - ✅ User hat Kontrolle über Container-Treiber ### Default Vars: + - ✅ APT Cacher mit automatischem Fallback - ✅ Gateway als Default möglich (User's Verantwortung) - ✅ Verhindert CT-ID und static IP Konflikte @@ -176,6 +198,7 @@ Vor Deployment testen: ### GPU Device Binding (KORRIGIERT): **Intel/AMD:** + ```lxc lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file lxc.mount.entry: /dev/dri/card0 /dev/dri/card0 none bind,optional,create=file @@ -185,6 +208,7 @@ lxc.cgroup2.devices.allow: c 226:0 rwm ``` **NVIDIA:** + ```lxc lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file @@ -198,10 +222,12 @@ lxc.cgroup2.devices.allow: c 195:255 rwm ### Whitelist Diff (KORRIGIERT): **Entfernt:** + - var_ctid (macht keinen Sinn - CT IDs sind unique) - var_ipv6_static (macht keinen Sinn - static IPs sind unique) **Behalten:** + - var_gateway (User's Verantwortung) - var_apt_cacher (mit Runtime-Check) - var_apt_cacher_ip (mit Runtime-Check) diff --git a/misc/build.func b/misc/build.func index e26406215..1ec46a2f6 100644 --- a/misc/build.func +++ b/misc/build.func @@ -307,7 +307,7 @@ base_settings() { GATE=${var_gateway:-""} APT_CACHER=${var_apt_cacher:-""} APT_CACHER_IP=${var_apt_cacher_ip:-""} - + # Runtime check: Verify APT cacher is reachable if configured if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then @@ -319,7 +319,7 @@ base_settings() { msg_ok "APT Cacher verified at ${APT_CACHER_IP}:3142" fi fi - + MTU=${var_mtu:-""} SD=${var_storage:-""} NS=${var_ns:-""} @@ -2197,7 +2197,7 @@ build_container() { # Check for NVIDIA GPU - look for NVIDIA vendor ID [10de] if echo "$pci_vga_info" | grep -q "\[10de:"; then msg_info "Detected NVIDIA GPU" - + # Simple passthrough - just bind /dev/nvidia* devices if they exist for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do [[ -e "$d" ]] && NVIDIA_DEVICES+=("$d") @@ -2311,7 +2311,7 @@ EOF # Add lxc.mount.entry for each device for dev in "${devices[@]}"; do echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG" - + if [[ "$CT_TYPE" == "0" ]]; then # Privileged container - also add cgroup allows local major minor @@ -2337,7 +2337,7 @@ EOF # Add lxc.mount.entry for each NVIDIA device for dev in "${NVIDIA_DEVICES[@]}"; do echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG" - + if [[ "$CT_TYPE" == "0" ]]; then # Privileged container - also add cgroup allows local major minor