Vollständig portables Linux-ELF bauen
Some checks failed
Tests / test (push) Has been cancelled

This commit is contained in:
2026-10-15 11:23:21 +02:00
parent e799682e10
commit bf34593bbb
10 changed files with 581 additions and 166 deletions

View File

@@ -7,7 +7,7 @@ auch ohne Netzwerk lokal.
## Ablauf in der Werkstatt
1. `csr-intake-x86_64.run` auf dem zu prüfenden Linux-Rechner starten.
1. `csr-intake-x86_64` auf dem zu prüfenden Linux-Rechner starten.
2. Beim ersten Einsatz unter **Einstellungen** das Werkstatt-WLAN verbinden und
**WLAN speichern** aktiviert lassen.
3. Das Gerät wird über DMI-UUID oder Hersteller und Seriennummer erkannt.
@@ -39,27 +39,32 @@ Reparaturen, Berichte und die Synchronisationswarteschlange sind über das Menü
## Anwendung starten
Die Release-Datei enthält Oberfläche und Hardware-Scanner. Sie entpackt geprüfte
Programmdateien in den Benutzer-Cache und speichert Einstellungen, Berichte und die
Offline-Warteschlange standardmäßig unter `~/.local/share/csr-intake`.
Die Release-Datei ist ein statisch gelinktes Linux-ELF. Sie enthält Oberfläche,
Hardware-Scanner, Python-Laufzeit, TLS, SQLite und alle unmittelbar benötigten
Laufzeitbibliotheken. Sie benötigt weder eine installierte Python-Version noch
Shell-, Archiv- oder glibc-Werkzeuge. Geprüfte Programmdateien werden in den
Benutzer-Cache entpackt. Einstellungen, Berichte und die Offline-Warteschlange
liegen standardmäßig unter `~/.local/share/csr-intake`.
```bash
chmod +x csr-intake-x86_64.run
./csr-intake-x86_64.run
chmod +x csr-intake-x86_64
./csr-intake-x86_64
```
Ein anderer Datenordner kann mit `--data /pfad/zum/ordner` gewählt werden:
```bash
./csr-intake-x86_64.run --data "$HOME/csr-intake-daten"
./csr-intake-x86_64.run --version
./csr-intake-x86_64.run --check-bundle
./csr-intake-x86_64 --data "$HOME/csr-intake-daten"
./csr-intake-x86_64 --version
./csr-intake-x86_64 --check-bundle
```
Die Anwendung ist für x86-64 Linux gebaut. Sie benötigt eine grafische Sitzung,
Python 3, SQLite und NetworkManager. Einzelne Diagnosen verwenden Systemwerkzeuge
wie `smartctl`, `stress-ng`, `ffmpeg`, `arecord`, `lsusb` und `xdg-open`. Fehlt ein
Werkzeug, wird der Test als **nicht verfügbar** und nicht als Hardwarefehler bewertet.
Die Anwendung ist für x86-64 Linux ab Kernel 4.4 gebaut. Clientprogramme für WLAN,
HTTP, Audio, Video, SMART und USB werden in den Build übernommen, sofern sie auf dem
Build-Rechner verfügbar sind. Benötigt werden nur eine grafische Linux-Sitzung, der
Kernel und die Systemdienste für die tatsächlich verwendete Hardware, insbesondere
der NetworkManager-Dienst für WLAN. Ein im Build nicht vorhandenes Diagnosewerkzeug
macht nur den betreffenden Test **nicht verfügbar**.
## Konfiguration
@@ -85,13 +90,13 @@ aus und erzeugt anschließend genau ein verteilbares Artefakt:
```bash
bash scripts/build-release.sh
./dist/csr-intake-x86_64.run --check-bundle
./dist/csr-intake-x86_64 --check-bundle
```
Das Ergebnis liegt in `dist/csr-intake-x86_64.run`. `build/release.json` enthält
Das Ergebnis liegt in `dist/csr-intake-x86_64`. `build/release.json` enthält
Build-ID, Versionen und SHA-256-Prüfsummen der eingebetteten Programme. Die CI stellt
bei jedem erfolgreichen Build eine neutrale `.run`-Datei ohne Zugangsdaten als
Artefakt bereit.
bei jedem erfolgreichen Build eine neutrale ELF-Datei ohne Zugangsdaten als Artefakt
bereit.
Für eine werkstattgebundene Datei können `inventory-api-key` und
`inventory-server.crt` vor dem Build in `.bundle-secrets/` abgelegt werden. Der Build
@@ -106,6 +111,7 @@ einen lesbaren Zugangsschlüssel und darf nur wie ein Passwort weitergegeben wer
| --- | --- |
| `gui/` | Bedienoberfläche und geführte Tests |
| `scanner/` | Hardwareerkennung und Messwerte |
| `launcher/` | Statischer ELF-Starter und eingebettete Laufzeit |
| `scripts/` | Build, Synchronisation und lokale Datenwerkzeuge |
| `tests/` | Python- und Rauchtests |
| `config.example/` | Beispiel für die Inventarverbindung |