Live-USB durch eigenständige Anwendung ersetzen
Some checks failed
Tests / test (push) Has been cancelled
Some checks failed
Tests / test (push) Has been cancelled
This commit is contained in:
150
README.md
150
README.md
@@ -1,21 +1,22 @@
|
||||
# CS-R USB-AIO
|
||||
# CS-R Intake
|
||||
|
||||
Der USB-Stick unterstützt die Annahme und technische Prüfung gespendeter Computer.
|
||||
Er startet als eigenständiges Arch-Linux-Livesystem, erkennt das aktuelle Gerät über
|
||||
seine Hardware-ID und verbindet es mit der zentralen Inventarverwaltung.
|
||||
CS-R Intake ist eine eigenständige Linux-Anwendung für die Annahme und technische
|
||||
Prüfung gespendeter Computer. Sie erkennt das aktuelle Gerät über eine stabile
|
||||
Hardware-ID, verbindet es mit der Inventarverwaltung und speichert alle Arbeiten
|
||||
auch ohne Netzwerk lokal.
|
||||
|
||||
## Ablauf in der Werkstatt
|
||||
|
||||
1. Vom USB-Stick starten.
|
||||
1. `csr-intake-x86_64.run` 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.
|
||||
4. Die Inventarverwaltung liefert die vorhandene Gerätenummer oder vergibt eine neue.
|
||||
5. Geräte im Status **Eingang** erhalten automatisch einen Kurzscan mit Modell, CPU,
|
||||
RAM und Datenträgern.
|
||||
6. Danach kann der Techniker das Gerät ausschalten oder die Inspektion starten.
|
||||
5. Neue Geräte und Geräte im Status **Eingang** erhalten automatisch einen Kurzscan
|
||||
mit Modell, CPU, RAM und Datenträgern.
|
||||
6. Danach kann der Techniker die Anwendung schließen oder die Inspektion starten.
|
||||
7. Prüfstände und Ergebnisse werden als **Inspektion** synchronisiert. Offline
|
||||
gespeicherte Ergebnisse bleiben in der Warteschlange und werden später erneut gesendet.
|
||||
gespeicherte Ergebnisse bleiben in der Warteschlange und werden später gesendet.
|
||||
|
||||
Die Oberfläche konzentriert sich auf **Gerät**, **Inspektion** und **Einstellungen**.
|
||||
Reparaturen, Berichte und die Synchronisationswarteschlange sind über das Menü erreichbar.
|
||||
@@ -36,87 +37,70 @@ Reparaturen, Berichte und die Synchronisationswarteschlange sind über das Menü
|
||||
- zentrale Sprache, Testdauer und Grenzwerte
|
||||
- verifizierbarer Build mit Versions- und Prüfsummenmanifest
|
||||
|
||||
## 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`.
|
||||
|
||||
```bash
|
||||
chmod +x csr-intake-x86_64.run
|
||||
./csr-intake-x86_64.run
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Diese Dateien entstehen im Datenordner unter `config/`:
|
||||
|
||||
```text
|
||||
inventory.json
|
||||
inventory-api-key
|
||||
inventory-server.crt
|
||||
workshop-wifi.json
|
||||
workshop.json
|
||||
```
|
||||
|
||||
API-Schlüssel und WLAN-Passwort gehören nie in Git. Ein privates CA-Zertifikat darf
|
||||
nur als öffentliches Zertifikat gespeichert werden. Sensible Konfigurationsdateien
|
||||
sind nur für den Besitzer lesbar.
|
||||
|
||||
## Projekt bauen und prüfen
|
||||
|
||||
Voraussetzungen sind Rust, Cargo, Python 3 sowie die Entwicklungsbibliotheken für
|
||||
X11, Wayland und OpenGL. Der vollständige Build führt Rust-, Python- und Rauchtests
|
||||
aus und erzeugt anschließend genau ein verteilbares Artefakt:
|
||||
|
||||
```bash
|
||||
bash scripts/build-release.sh
|
||||
./dist/csr-intake-x86_64.run --check-bundle
|
||||
```
|
||||
|
||||
Das Ergebnis liegt in `dist/csr-intake-x86_64.run`. `build/release.json` enthält
|
||||
Build-ID, Versionen und SHA-256-Prüfsummen der eingebetteten Programme. Die CI stellt
|
||||
dieselbe `.run`-Datei bei jedem erfolgreichen Build als Artefakt bereit.
|
||||
|
||||
## Projektaufbau
|
||||
|
||||
| Pfad | Inhalt |
|
||||
| --- | --- |
|
||||
| `gui/` | Bedienoberfläche und geführte Tests |
|
||||
| `scanner/` | Hardwareerkennung und Messwerte |
|
||||
| `controller/` | Geräteklassifizierung und Auswertung |
|
||||
| `scripts/` | Build, Synchronisation und lokale Datenwerkzeuge |
|
||||
| `live/` | Start und Vorbereitung des Livesystems |
|
||||
| `tests/` | Python- und Rauchtests |
|
||||
| `config.example/` | Beispiel für die Inventarverbindung |
|
||||
|
||||
Der Inventory-Server wird in einem eigenen Repository gepflegt. Dieses Repository
|
||||
enthält ausschließlich den USB-Client.
|
||||
|
||||
## Entwicklung und Prüfung
|
||||
|
||||
Voraussetzungen sind Rust, Cargo und Python 3. Auf Arch Linux werden für den ISO-Bau
|
||||
zusätzlich `archiso`, GRUB, Dateisystemwerkzeuge und `libarchive` benötigt.
|
||||
|
||||
```bash
|
||||
bash scripts/build-release.sh
|
||||
```
|
||||
|
||||
Der Befehl führt die Rust-, Python- und Rauchtests aus, baut alle drei Programme im
|
||||
Release-Modus und erzeugt `build/release.json` mit Build-ID und SHA-256-Prüfsummen.
|
||||
|
||||
## Eigenständige Anwendung
|
||||
|
||||
Für einen normalen x86-64-Linux-Rechner kann eine einzelne ausführbare Datei gebaut
|
||||
werden. Sie enthält GUI und Hardware-Scanner und verwendet standardmäßig
|
||||
`~/.local/share/csr-intake` für Berichte und Einstellungen:
|
||||
|
||||
```bash
|
||||
bash scripts/build-release.sh
|
||||
bash scripts/build-standalone.sh
|
||||
./dist/csr-intake-x86_64.run
|
||||
```
|
||||
|
||||
Ein anderer Datenordner kann mit `--data /pfad/zum/ordner` gewählt werden. Das Paket
|
||||
ist für die Linux-Version des Build-Rechners bestimmt und benötigt Python 3, SQLite,
|
||||
NetworkManager sowie die jeweiligen Diagnoseprogramme. `--check-bundle` prüft die
|
||||
eingebetteten Dateien, ohne die Oberfläche zu starten.
|
||||
|
||||
## ISO erstellen
|
||||
|
||||
Das Zielverzeichnis muss neu und leer sein:
|
||||
|
||||
```bash
|
||||
bash scripts/build-iso.sh "$PWD/build/usb-aio-2.6.0"
|
||||
```
|
||||
|
||||
Der Build prüft Profil, Binärdateien, Kernelpfade und die FAT32-Größengrenze. Ein
|
||||
erfolgreicher Softwaretest ersetzt keinen Starttest auf echter UEFI- und BIOS-Hardware.
|
||||
|
||||
## USB-Stick installieren
|
||||
|
||||
Dieser Befehl löscht den ausgewählten Datenträger vollständig:
|
||||
|
||||
```bash
|
||||
lsblk -o NAME,PATH,TYPE,SIZE,TRAN,MODEL,SERIAL,MOUNTPOINTS
|
||||
sudo bash scripts/install-usb.sh /dev/sdX /absoluter/pfad/zur.iso
|
||||
```
|
||||
|
||||
Das Installationsskript akzeptiert nur ein vollständiges USB-Blockgerät, lehnt den
|
||||
Systemdatenträger ab und verlangt die exakte Bestätigung `ERASE /dev/sdX`.
|
||||
|
||||
## Konfiguration auf `INTAKE_DATA`
|
||||
|
||||
Die dauerhaften Dateien liegen auf der Datenpartition des Sticks:
|
||||
|
||||
```text
|
||||
config/inventory.json
|
||||
config/inventory-api-key
|
||||
config/inventory-server.crt
|
||||
config/workshop-wifi.json
|
||||
config/workshop.json
|
||||
```
|
||||
|
||||
API-Schlüssel und WLAN-Passwort gehören nie in Git. Ein privates CA-Zertifikat darf
|
||||
nur als öffentliches Zertifikat gespeichert werden. Die Datenpartition ist nicht
|
||||
verschlüsselt und muss wie ein Werkstatt-Zugang behandelt werden.
|
||||
|
||||
Weitere Einzelheiten stehen in [WERKSTATT-ABLAUF.md](WERKSTATT-ABLAUF.md).
|
||||
Der Inventory-Server wird in einem eigenen Repository gepflegt. Weitere Einzelheiten
|
||||
zum Arbeitsablauf stehen in [WERKSTATT-ABLAUF.md](WERKSTATT-ABLAUF.md).
|
||||
|
||||
Reference in New Issue
Block a user